From 687242e43bbbdbf7e352a06a8624ee29c07dd284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Mon, 5 May 2025 08:51:40 +0200 Subject: [PATCH 1/5] Adds DeviceRef::supports_raytracing_from_render(). --- src/device.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/device.rs b/src/device.rs index 9b97e326..e44a8e6b 100644 --- a/src/device.rs +++ b/src/device.rs @@ -1609,6 +1609,11 @@ impl DeviceRef { unsafe { msg_send_bool![self, supportsRaytracing] } } + /// Only available on (macos(12.0), ios(15.0)) + pub fn supports_raytracing_from_render(&self) -> bool { + unsafe { msg_send_bool![self, supportsRaytracingFromRender] } + } + pub fn has_unified_memory(&self) -> bool { unsafe { msg_send![self, hasUnifiedMemory] } } From 5e1c84dc0ed9ebf8e819140e9b5f997dac21bfe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Mon, 5 May 2025 09:16:15 +0200 Subject: [PATCH 2/5] Adds MTLAccelerationStructureUsage. --- src/acceleration_structure.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/acceleration_structure.rs b/src/acceleration_structure.rs index 1aa534b9..15042476 100644 --- a/src/acceleration_structure.rs +++ b/src/acceleration_structure.rs @@ -7,6 +7,16 @@ use super::*; +bitflags::bitflags! { + #[derive(Copy, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] + pub struct MTLAccelerationStructureUsage: u32 { + const None = 0; + const Refit = (1 << 0); + const PreferFastBuild = (1 << 1); + const ExtendedLimits = (1 << 2); + } +} + bitflags::bitflags! { #[derive(Copy, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] pub struct MTLAccelerationStructureInstanceOptions: u32 { From 0fc983835b02a720dd5df863bc420c7f043bbecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Mon, 5 May 2025 09:21:45 +0200 Subject: [PATCH 3/5] AccelerationStructureDescriptorRef::set_usage(). --- src/acceleration_structure.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/acceleration_structure.rs b/src/acceleration_structure.rs index 15042476..be7bf9b0 100644 --- a/src/acceleration_structure.rs +++ b/src/acceleration_structure.rs @@ -79,6 +79,12 @@ foreign_obj_type! { type ParentType = NsObject; } +impl AccelerationStructureDescriptorRef { + pub fn set_usage(&self, usage: MTLAccelerationStructureUsage) { + unsafe { msg_send![self, setUsage: usage] } + } +} + pub enum MTLPrimitiveAccelerationStructureDescriptor {} foreign_obj_type! { From 3d6f4311cd29985a2dda166bb954a2d786e88498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Tue, 6 May 2025 15:33:01 +0200 Subject: [PATCH 4/5] Adds AccelerationStructureGeometryDescriptorRef::set_allow_duplicate_intersection_function_invocation(). --- src/acceleration_structure.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/acceleration_structure.rs b/src/acceleration_structure.rs index be7bf9b0..9082ac57 100644 --- a/src/acceleration_structure.rs +++ b/src/acceleration_structure.rs @@ -139,6 +139,11 @@ impl AccelerationStructureGeometryDescriptorRef { pub fn set_opaque(&self, opaque: bool) { unsafe { msg_send![self, setOpaque: opaque] } } + + pub fn set_allow_duplicate_intersection_function_invocation(&self, allow: bool) { + unsafe { msg_send![self, setAllowDuplicateIntersectionFunctionInvocation: allow] } + } + pub fn set_primitive_data_buffer(&self, buffer: Option<&BufferRef>) { unsafe { msg_send![self, setPrimitiveDataBuffer: buffer] } } From 849dbb5ae48a9bc689a4e451f2efec6d2a779b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Mei=C3=9Fner?= Date: Wed, 7 May 2025 00:57:45 +0200 Subject: [PATCH 5/5] MTLAccelerationStructureUsage: u32 => usize Co-authored-by: Mads Marquart --- src/acceleration_structure.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/acceleration_structure.rs b/src/acceleration_structure.rs index 9082ac57..2580fe29 100644 --- a/src/acceleration_structure.rs +++ b/src/acceleration_structure.rs @@ -9,7 +9,7 @@ use super::*; bitflags::bitflags! { #[derive(Copy, Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)] - pub struct MTLAccelerationStructureUsage: u32 { + pub struct MTLAccelerationStructureUsage: usize { const None = 0; const Refit = (1 << 0); const PreferFastBuild = (1 << 1);