mtl_gpu/mtl4/acceleration_structure/
mod.rs1mod bounding_box_geometry;
6mod curve_geometry;
7mod descriptor;
8mod geometry_descriptor;
9mod indirect_instance_descriptor;
10mod instance_descriptor;
11mod motion_bounding_box_geometry;
12mod motion_curve_geometry;
13mod motion_triangle_geometry;
14mod primitive_descriptor;
15mod triangle_geometry;
16
17pub use bounding_box_geometry::AccelerationStructureBoundingBoxGeometryDescriptor;
18pub use curve_geometry::AccelerationStructureCurveGeometryDescriptor;
19pub use descriptor::AccelerationStructureDescriptor;
20pub use geometry_descriptor::AccelerationStructureGeometryDescriptor;
21pub use indirect_instance_descriptor::IndirectInstanceAccelerationStructureDescriptor;
22pub use instance_descriptor::InstanceAccelerationStructureDescriptor;
23pub use motion_bounding_box_geometry::AccelerationStructureMotionBoundingBoxGeometryDescriptor;
24pub use motion_curve_geometry::AccelerationStructureMotionCurveGeometryDescriptor;
25pub use motion_triangle_geometry::AccelerationStructureMotionTriangleGeometryDescriptor;
26pub use primitive_descriptor::PrimitiveAccelerationStructureDescriptor;
27pub use triangle_geometry::AccelerationStructureTriangleGeometryDescriptor;
28
29#[repr(C, packed)]
37#[derive(Copy, Clone, Debug, Default)]
38pub struct BufferRange {
39 pub buffer_address: u64,
41 pub length: u64,
43}
44
45impl BufferRange {
46 pub fn new(buffer_address: u64, length: u64) -> Self {
48 Self {
49 buffer_address,
50 length,
51 }
52 }
53}
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58 use std::ffi::c_void;
59
60 #[test]
61 fn test_buffer_range_size() {
62 assert_eq!(std::mem::size_of::<BufferRange>(), 16);
63 }
64
65 #[test]
66 fn test_acceleration_structure_descriptor_size() {
67 assert_eq!(
68 std::mem::size_of::<AccelerationStructureDescriptor>(),
69 std::mem::size_of::<*mut c_void>()
70 );
71 }
72
73 #[test]
74 fn test_acceleration_structure_geometry_descriptor_size() {
75 assert_eq!(
76 std::mem::size_of::<AccelerationStructureGeometryDescriptor>(),
77 std::mem::size_of::<*mut c_void>()
78 );
79 }
80
81 #[test]
82 fn test_primitive_acceleration_structure_descriptor_size() {
83 assert_eq!(
84 std::mem::size_of::<PrimitiveAccelerationStructureDescriptor>(),
85 std::mem::size_of::<*mut c_void>()
86 );
87 }
88
89 #[test]
90 fn test_triangle_geometry_descriptor_size() {
91 assert_eq!(
92 std::mem::size_of::<AccelerationStructureTriangleGeometryDescriptor>(),
93 std::mem::size_of::<*mut c_void>()
94 );
95 }
96
97 #[test]
98 fn test_bounding_box_geometry_descriptor_size() {
99 assert_eq!(
100 std::mem::size_of::<AccelerationStructureBoundingBoxGeometryDescriptor>(),
101 std::mem::size_of::<*mut c_void>()
102 );
103 }
104
105 #[test]
106 fn test_curve_geometry_descriptor_size() {
107 assert_eq!(
108 std::mem::size_of::<AccelerationStructureCurveGeometryDescriptor>(),
109 std::mem::size_of::<*mut c_void>()
110 );
111 }
112
113 #[test]
114 fn test_instance_acceleration_structure_descriptor_size() {
115 assert_eq!(
116 std::mem::size_of::<InstanceAccelerationStructureDescriptor>(),
117 std::mem::size_of::<*mut c_void>()
118 );
119 }
120
121 #[test]
122 fn test_indirect_instance_acceleration_structure_descriptor_size() {
123 assert_eq!(
124 std::mem::size_of::<IndirectInstanceAccelerationStructureDescriptor>(),
125 std::mem::size_of::<*mut c_void>()
126 );
127 }
128}