#[doc(alias = "VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION")]
pub const KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION: u32 = 1;
#[doc(alias = "VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME")]
pub const KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
"VK_KHR_ray_tracing_maintenance1"
);
pub const FN_CMD_TRACE_RAYS_INDIRECT2_KHR: *const std::os::raw::c_char = crate::cstr!(
"vkCmdTraceRaysIndirect2KHR"
);
impl crate::vk1_3::AccessFlagBits2 {
pub const SHADER_BINDING_TABLE_READ_KHR: Self = Self(1099511627776);
}
impl crate::vk1_3::PipelineStageFlagBits2 {
pub const ACCELERATION_STRUCTURE_COPY_KHR: Self = Self(268435456);
}
impl crate::vk1_0::QueryType {
pub const ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR: Self = Self(
1000386000,
);
pub const ACCELERATION_STRUCTURE_SIZE_KHR: Self = Self(1000386001);
}
impl crate::vk1_0::StructureType {
pub const PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: Self = Self(
1000386000,
);
}
#[allow(non_camel_case_types)]
pub type PFN_vkCmdTraceRaysIndirect2KHR = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
indirect_device_address: crate::vk1_0::DeviceAddress,
) -> ();
impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceRayTracingMaintenance1FeaturesKHR>
for crate::vk1_0::DeviceCreateInfoBuilder<'a> {}
impl<
'a,
> crate::ExtendableFrom<'a, PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'_>>
for crate::vk1_0::DeviceCreateInfoBuilder<'a> {}
impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceRayTracingMaintenance1FeaturesKHR>
for crate::vk1_1::PhysicalDeviceFeatures2Builder<'a> {}
impl<
'a,
> crate::ExtendableFrom<'a, PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'_>>
for crate::vk1_1::PhysicalDeviceFeatures2Builder<'a> {}
#[doc(alias = "VkTraceRaysIndirectCommand2KHR")]
#[derive(Copy, Clone, Hash, PartialEq, Eq)]
#[repr(C)]
pub struct TraceRaysIndirectCommand2KHR {
pub raygen_shader_record_address: crate::vk1_0::DeviceAddress,
pub raygen_shader_record_size: crate::vk1_0::DeviceSize,
pub miss_shader_binding_table_address: crate::vk1_0::DeviceAddress,
pub miss_shader_binding_table_size: crate::vk1_0::DeviceSize,
pub miss_shader_binding_table_stride: crate::vk1_0::DeviceSize,
pub hit_shader_binding_table_address: crate::vk1_0::DeviceAddress,
pub hit_shader_binding_table_size: crate::vk1_0::DeviceSize,
pub hit_shader_binding_table_stride: crate::vk1_0::DeviceSize,
pub callable_shader_binding_table_address: crate::vk1_0::DeviceAddress,
pub callable_shader_binding_table_size: crate::vk1_0::DeviceSize,
pub callable_shader_binding_table_stride: crate::vk1_0::DeviceSize,
pub width: u32,
pub height: u32,
pub depth: u32,
}
impl Default for TraceRaysIndirectCommand2KHR {
fn default() -> Self {
Self {
raygen_shader_record_address: Default::default(),
raygen_shader_record_size: Default::default(),
miss_shader_binding_table_address: Default::default(),
miss_shader_binding_table_size: Default::default(),
miss_shader_binding_table_stride: Default::default(),
hit_shader_binding_table_address: Default::default(),
hit_shader_binding_table_size: Default::default(),
hit_shader_binding_table_stride: Default::default(),
callable_shader_binding_table_address: Default::default(),
callable_shader_binding_table_size: Default::default(),
callable_shader_binding_table_stride: Default::default(),
width: Default::default(),
height: Default::default(),
depth: Default::default(),
}
}
}
impl std::fmt::Debug for TraceRaysIndirectCommand2KHR {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("TraceRaysIndirectCommand2KHR")
.field("raygen_shader_record_address", &self.raygen_shader_record_address)
.field("raygen_shader_record_size", &self.raygen_shader_record_size)
.field(
"miss_shader_binding_table_address",
&self.miss_shader_binding_table_address,
)
.field(
"miss_shader_binding_table_size",
&self.miss_shader_binding_table_size,
)
.field(
"miss_shader_binding_table_stride",
&self.miss_shader_binding_table_stride,
)
.field(
"hit_shader_binding_table_address",
&self.hit_shader_binding_table_address,
)
.field("hit_shader_binding_table_size", &self.hit_shader_binding_table_size)
.field(
"hit_shader_binding_table_stride",
&self.hit_shader_binding_table_stride,
)
.field(
"callable_shader_binding_table_address",
&self.callable_shader_binding_table_address,
)
.field(
"callable_shader_binding_table_size",
&self.callable_shader_binding_table_size,
)
.field(
"callable_shader_binding_table_stride",
&self.callable_shader_binding_table_stride,
)
.field("width", &self.width)
.field("height", &self.height)
.field("depth", &self.depth)
.finish()
}
}
impl TraceRaysIndirectCommand2KHR {
#[inline]
pub fn into_builder<'a>(self) -> TraceRaysIndirectCommand2KHRBuilder<'a> {
TraceRaysIndirectCommand2KHRBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[repr(transparent)]
pub struct TraceRaysIndirectCommand2KHRBuilder<'a>(
TraceRaysIndirectCommand2KHR,
std::marker::PhantomData<&'a ()>,
);
impl<'a> TraceRaysIndirectCommand2KHRBuilder<'a> {
#[inline]
pub fn new() -> TraceRaysIndirectCommand2KHRBuilder<'a> {
TraceRaysIndirectCommand2KHRBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
#[must_use]
pub fn raygen_shader_record_address(
mut self,
raygen_shader_record_address: crate::vk1_0::DeviceAddress,
) -> Self {
self.0.raygen_shader_record_address = raygen_shader_record_address as _;
self
}
#[inline]
#[must_use]
pub fn raygen_shader_record_size(
mut self,
raygen_shader_record_size: crate::vk1_0::DeviceSize,
) -> Self {
self.0.raygen_shader_record_size = raygen_shader_record_size as _;
self
}
#[inline]
#[must_use]
pub fn miss_shader_binding_table_address(
mut self,
miss_shader_binding_table_address: crate::vk1_0::DeviceAddress,
) -> Self {
self
.0
.miss_shader_binding_table_address = miss_shader_binding_table_address as _;
self
}
#[inline]
#[must_use]
pub fn miss_shader_binding_table_size(
mut self,
miss_shader_binding_table_size: crate::vk1_0::DeviceSize,
) -> Self {
self.0.miss_shader_binding_table_size = miss_shader_binding_table_size as _;
self
}
#[inline]
#[must_use]
pub fn miss_shader_binding_table_stride(
mut self,
miss_shader_binding_table_stride: crate::vk1_0::DeviceSize,
) -> Self {
self.0.miss_shader_binding_table_stride = miss_shader_binding_table_stride as _;
self
}
#[inline]
#[must_use]
pub fn hit_shader_binding_table_address(
mut self,
hit_shader_binding_table_address: crate::vk1_0::DeviceAddress,
) -> Self {
self.0.hit_shader_binding_table_address = hit_shader_binding_table_address as _;
self
}
#[inline]
#[must_use]
pub fn hit_shader_binding_table_size(
mut self,
hit_shader_binding_table_size: crate::vk1_0::DeviceSize,
) -> Self {
self.0.hit_shader_binding_table_size = hit_shader_binding_table_size as _;
self
}
#[inline]
#[must_use]
pub fn hit_shader_binding_table_stride(
mut self,
hit_shader_binding_table_stride: crate::vk1_0::DeviceSize,
) -> Self {
self.0.hit_shader_binding_table_stride = hit_shader_binding_table_stride as _;
self
}
#[inline]
#[must_use]
pub fn callable_shader_binding_table_address(
mut self,
callable_shader_binding_table_address: crate::vk1_0::DeviceAddress,
) -> Self {
self
.0
.callable_shader_binding_table_address = callable_shader_binding_table_address
as _;
self
}
#[inline]
#[must_use]
pub fn callable_shader_binding_table_size(
mut self,
callable_shader_binding_table_size: crate::vk1_0::DeviceSize,
) -> Self {
self
.0
.callable_shader_binding_table_size = callable_shader_binding_table_size
as _;
self
}
#[inline]
#[must_use]
pub fn callable_shader_binding_table_stride(
mut self,
callable_shader_binding_table_stride: crate::vk1_0::DeviceSize,
) -> Self {
self
.0
.callable_shader_binding_table_stride = callable_shader_binding_table_stride
as _;
self
}
#[inline]
#[must_use]
pub fn width(mut self, width: u32) -> Self {
self.0.width = width as _;
self
}
#[inline]
#[must_use]
pub fn height(mut self, height: u32) -> Self {
self.0.height = height as _;
self
}
#[inline]
#[must_use]
pub fn depth(mut self, depth: u32) -> Self {
self.0.depth = depth as _;
self
}
#[inline]
pub fn build(self) -> TraceRaysIndirectCommand2KHR {
self.0
}
}
impl<'a> std::default::Default for TraceRaysIndirectCommand2KHRBuilder<'a> {
fn default() -> TraceRaysIndirectCommand2KHRBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for TraceRaysIndirectCommand2KHRBuilder<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, f)
}
}
impl<'a> std::ops::Deref for TraceRaysIndirectCommand2KHRBuilder<'a> {
type Target = TraceRaysIndirectCommand2KHR;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for TraceRaysIndirectCommand2KHRBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc(alias = "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *mut std::ffi::c_void,
pub ray_tracing_maintenance1: crate::vk1_0::Bool32,
pub ray_tracing_pipeline_trace_rays_indirect2: crate::vk1_0::Bool32,
}
impl PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;
}
impl Default for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
fn default() -> Self {
Self {
s_type: Self::STRUCTURE_TYPE,
p_next: std::ptr::null_mut(),
ray_tracing_maintenance1: Default::default(),
ray_tracing_pipeline_trace_rays_indirect2: Default::default(),
}
}
}
impl std::fmt::Debug for PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PhysicalDeviceRayTracingMaintenance1FeaturesKHR")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("ray_tracing_maintenance1", &(self.ray_tracing_maintenance1 != 0))
.field(
"ray_tracing_pipeline_trace_rays_indirect2",
&(self.ray_tracing_pipeline_trace_rays_indirect2 != 0),
)
.finish()
}
}
impl PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
#[inline]
pub fn into_builder<'a>(
self,
) -> PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder(
self,
std::marker::PhantomData,
)
}
}
#[derive(Copy, Clone)]
#[repr(transparent)]
pub struct PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a>(
PhysicalDeviceRayTracingMaintenance1FeaturesKHR,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
#[must_use]
pub fn ray_tracing_maintenance1(mut self, ray_tracing_maintenance1: bool) -> Self {
self.0.ray_tracing_maintenance1 = ray_tracing_maintenance1 as _;
self
}
#[inline]
#[must_use]
pub fn ray_tracing_pipeline_trace_rays_indirect2(
mut self,
ray_tracing_pipeline_trace_rays_indirect2: bool,
) -> Self {
self
.0
.ray_tracing_pipeline_trace_rays_indirect2 = ray_tracing_pipeline_trace_rays_indirect2
as _;
self
}
#[inline]
pub fn build_dangling(self) -> PhysicalDeviceRayTracingMaintenance1FeaturesKHR {
self.0
}
}
impl<'a> std::default::Default
for PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
fn default() -> PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, f)
}
}
impl<'a> std::ops::Deref for PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
type Target = PhysicalDeviceRayTracingMaintenance1FeaturesKHR;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut
for PhysicalDeviceRayTracingMaintenance1FeaturesKHRBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
impl crate::DeviceLoader {
#[inline]
#[track_caller]
#[doc(alias = "vkCmdTraceRaysIndirect2KHR")]
pub unsafe fn cmd_trace_rays_indirect2_khr(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
indirect_device_address: crate::vk1_0::DeviceAddress,
) -> () {
let _function = self
.cmd_trace_rays_indirect2_khr
.expect(crate::NOT_LOADED_MESSAGE);
let _return = _function(command_buffer as _, indirect_device_address as _);
()
}
}