xref: /aosp_15_r20/external/mesa3d/src/nouveau/nil/lib.rs (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker // Copyright © 2024 Collabora, Ltd.
2*61046927SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker 
4*61046927SAndroid Build Coastguard Worker extern crate nil_rs_bindings;
5*61046927SAndroid Build Coastguard Worker extern crate nvidia_headers;
6*61046927SAndroid Build Coastguard Worker 
7*61046927SAndroid Build Coastguard Worker mod extent;
8*61046927SAndroid Build Coastguard Worker mod format;
9*61046927SAndroid Build Coastguard Worker mod image;
10*61046927SAndroid Build Coastguard Worker mod modifiers;
11*61046927SAndroid Build Coastguard Worker mod tic;
12*61046927SAndroid Build Coastguard Worker mod tiling;
13*61046927SAndroid Build Coastguard Worker 
14*61046927SAndroid Build Coastguard Worker pub trait ILog2Ceil {
ilog2_ceil(self) -> Self15*61046927SAndroid Build Coastguard Worker     fn ilog2_ceil(self) -> Self;
16*61046927SAndroid Build Coastguard Worker }
17*61046927SAndroid Build Coastguard Worker 
18*61046927SAndroid Build Coastguard Worker impl ILog2Ceil for u32 {
ilog2_ceil(self) -> Self19*61046927SAndroid Build Coastguard Worker     fn ilog2_ceil(self) -> Self {
20*61046927SAndroid Build Coastguard Worker         if self <= 1 {
21*61046927SAndroid Build Coastguard Worker             0
22*61046927SAndroid Build Coastguard Worker         } else {
23*61046927SAndroid Build Coastguard Worker             (self - 1).ilog2() + 1
24*61046927SAndroid Build Coastguard Worker         }
25*61046927SAndroid Build Coastguard Worker     }
26*61046927SAndroid Build Coastguard Worker }
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker pub trait Minify<Rhs> {
29*61046927SAndroid Build Coastguard Worker     // Required method
minify(self, rhs: Rhs) -> Self30*61046927SAndroid Build Coastguard Worker     fn minify(self, rhs: Rhs) -> Self;
31*61046927SAndroid Build Coastguard Worker }
32*61046927SAndroid Build Coastguard Worker 
33*61046927SAndroid Build Coastguard Worker impl Minify<u32> for u32 {
minify(self, level: u32) -> u3234*61046927SAndroid Build Coastguard Worker     fn minify(self, level: u32) -> u32 {
35*61046927SAndroid Build Coastguard Worker         std::cmp::max(1, self >> level)
36*61046927SAndroid Build Coastguard Worker     }
37*61046927SAndroid Build Coastguard Worker }
38