Skip to content

Commit 6fa87ca

Browse files
committed
Switches to MTLIndirectAccelerationStructureInstanceDescriptor.
1 parent e818047 commit 6fa87ca

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

wgpu-hal/src/metal/adapter.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,8 +1083,9 @@ impl super::PrivateCapabilities {
10831083
// Metal Shading Language it generates, so from `wgpu_hal`'s
10841084
// users' point of view, references are tightly checked.
10851085
uniform_bounds_check_alignment: wgt::BufferSize::new(1).unwrap(),
1086-
raw_tlas_instance_size: size_of::<metal::MTLAccelerationStructureInstanceDescriptor>(
1087-
),
1086+
raw_tlas_instance_size: size_of::<
1087+
metal::MTLIndirectAccelerationStructureInstanceDescriptor,
1088+
>(),
10881089
ray_tracing_scratch_buffer_alignment: 1,
10891090
},
10901091
downlevel,

wgpu-hal/src/metal/conv.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,9 @@ pub fn map_acceleration_structure_descriptor<'a>(
368368
match entries {
369369
crate::AccelerationStructureEntries::Instances(instances) => {
370370
let descriptor = metal::InstanceAccelerationStructureDescriptor::descriptor();
371-
// descriptor.set_instance_descriptor_type(ty: MTLAccelerationStructureInstanceDescriptorType);
371+
descriptor.set_instance_descriptor_type(
372+
metal::MTLAccelerationStructureInstanceDescriptorType::Indirect,
373+
);
372374
let blases = instances
373375
.blases
374376
.iter()

wgpu-hal/src/metal/device.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,9 +1632,9 @@ impl crate::Device for super::Device {
16321632

16331633
unsafe fn get_acceleration_structure_device_address(
16341634
&self,
1635-
_acceleration_structure: &super::AccelerationStructure,
1635+
acceleration_structure: &super::AccelerationStructure,
16361636
) -> wgt::BufferAddress {
1637-
unimplemented!()
1637+
acceleration_structure.raw.gpu_resource_id()._impl
16381638
}
16391639

16401640
unsafe fn create_acceleration_structure(
@@ -1656,7 +1656,7 @@ impl crate::Device for super::Device {
16561656
}
16571657

16581658
fn tlas_instance_to_bytes(&self, instance: TlasInstance) -> Vec<u8> {
1659-
let temp = metal::MTLAccelerationStructureInstanceDescriptor {
1659+
let temp = metal::MTLIndirectAccelerationStructureInstanceDescriptor {
16601660
transformation_matrix: [
16611661
[
16621662
instance.transform[0],
@@ -1680,12 +1680,13 @@ impl crate::Device for super::Device {
16801680
],
16811681
],
16821682
options: metal::MTLAccelerationStructureInstanceOptions::None,
1683-
mask: (instance.custom_data << 8) | instance.mask as u32,
1683+
mask: instance.mask as u32,
16841684
intersection_function_table_offset: 0,
1685-
acceleration_structure_index: instance.blas_address as u32,
1685+
acceleration_structure_id: instance.blas_address,
1686+
user_id: instance.custom_data,
16861687
};
16871688

1688-
wgt::bytemuck_wrapper!(unsafe struct Desc(metal::MTLAccelerationStructureInstanceDescriptor));
1689+
wgt::bytemuck_wrapper!(unsafe struct Desc(metal::MTLIndirectAccelerationStructureInstanceDescriptor));
16891690

16901691
bytemuck::bytes_of(&Desc::wrap(temp)).to_vec()
16911692
}

0 commit comments

Comments
 (0)