mirror of
https://github.com/vulkano-rs/vulkano.git
synced 2024-11-24 15:55:07 +00:00
Update Ash to 0.37.1 (#2096)
* Update Ash to 0.37.1 * typo * Add support for new shader/pipeline stages and access flags * Small change * Fixes * Use ^ for version
This commit is contained in:
parent
93b5164b73
commit
4d95604e1a
@ -22,6 +22,6 @@ bytemuck = { version = "1.7", features = ["derive", "extern_crate_std", "min_con
|
||||
cgmath = "0.18"
|
||||
png = "0.17"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
ron = "0.7"
|
||||
ron = "0.8"
|
||||
rand = "0.8.4"
|
||||
glium = "0.32.1"
|
||||
|
@ -82,8 +82,15 @@ fn write_shader_execution(execution: &ShaderExecution) -> TokenStream {
|
||||
ShaderExecution::AnyHit => quote! { ::vulkano::shader::ShaderExecution::AnyHit },
|
||||
ShaderExecution::ClosestHit => quote! { ::vulkano::shader::ShaderExecution::ClosestHit },
|
||||
ShaderExecution::Miss => quote! { ::vulkano::shader::ShaderExecution::Miss },
|
||||
ShaderExecution::Intersection => quote! { ::vulkano::shader::ShaderExecution::Intersection},
|
||||
ShaderExecution::Intersection => {
|
||||
quote! { ::vulkano::shader::ShaderExecution::Intersection }
|
||||
}
|
||||
ShaderExecution::Callable => quote! { ::vulkano::shader::ShaderExecution::Callable },
|
||||
ShaderExecution::Task => quote! { ::vulkano::shader::ShaderExecution::Task },
|
||||
ShaderExecution::Mesh => quote! { ::vulkano::shader::ShaderExecution::Mesh },
|
||||
ShaderExecution::SubpassShading => {
|
||||
quote! { ::vulkano::shader::ShaderExecution::SubpassShading }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -17,7 +17,7 @@ build = "build.rs"
|
||||
ahash = "0.8"
|
||||
# When updating Ash, also update vk.xml to the same Vulkan patch version that Ash uses.
|
||||
# All versions of vk.xml can be found at https://github.com/KhronosGroup/Vulkan-Headers/commits/main/registry/vk.xml.
|
||||
ash = "0.37"
|
||||
ash = "^0.37.1"
|
||||
bytemuck = { version = "1.7", features = ["derive", "extern_crate_std", "min_const_generics"] }
|
||||
crossbeam-queue = "0.3"
|
||||
half = "2"
|
||||
@ -38,7 +38,7 @@ indexmap = "1.8"
|
||||
once_cell = "1.16"
|
||||
proc-macro2 = "1.0"
|
||||
quote = "1.0"
|
||||
regex = "1.5"
|
||||
regex = "1.7"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
vk-parse = "0.8"
|
||||
|
@ -479,8 +479,14 @@ fn vulkano_type(ty: &str, len: Option<&str>) -> TokenStream {
|
||||
"VkDeviceSize" => quote! { DeviceSize },
|
||||
"VkDriverId" => quote! { DriverId },
|
||||
"VkExtent2D" => quote! { [u32; 2] },
|
||||
"VkMemoryDecompressionMethodFlagsNV" => quote! { MemoryDecompressionMethods },
|
||||
"VkOpticalFlowGridSizeFlagsNV" => quote! { OpticalFlowGridSizes },
|
||||
"VkPhysicalDeviceType" => quote! { PhysicalDeviceType },
|
||||
"VkPipelineRobustnessBufferBehaviorEXT" => quote! { PipelineRobustnessBufferBehavior },
|
||||
"VkPipelineRobustnessImageBehaviorEXT" => quote! { PipelineRobustnessImageBehavior },
|
||||
"VkPointClippingBehavior" => quote! { PointClippingBehavior },
|
||||
"VkQueueFlags" => quote! { QueueFlags },
|
||||
"VkRayTracingInvocationReorderModeNV" => quote! { RayTracingInvocationReorderMode },
|
||||
"VkResolveModeFlags" => quote! { ResolveModes },
|
||||
"VkSampleCountFlags" => quote! { SampleCounts },
|
||||
"VkSampleCountFlagBits" => quote! { SampleCount },
|
||||
|
@ -156,10 +156,14 @@ fn spirv_capabilities_members(
|
||||
|
||||
// Find the capability in the list of enumerants, then go backwards through the list to find
|
||||
// the first enumerant with the same value.
|
||||
let enumerant_pos = grammar_enumerants
|
||||
let enumerant_pos = match grammar_enumerants
|
||||
.iter()
|
||||
.position(|enumerant| enumerant.enumerant == ext_or_cap.name)
|
||||
.unwrap();
|
||||
{
|
||||
Some(pos) => pos,
|
||||
// This can happen if the grammar file is behind on the vk.xml file.
|
||||
None => continue,
|
||||
};
|
||||
let enumerant_value = &grammar_enumerants[enumerant_pos].value;
|
||||
|
||||
let name = if let Some(enumerant) = grammar_enumerants[..enumerant_pos]
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -110,7 +110,7 @@ vulkan_bitflags! {
|
||||
/// Flags to be set when creating a buffer.
|
||||
BufferCreateFlags = BufferCreateFlags(u32);
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
/// The buffer will be backed by sparse memory binding (through queue commands) instead of
|
||||
/// regular binding (through [`bind_memory`]).
|
||||
///
|
||||
@ -118,8 +118,9 @@ vulkan_bitflags! {
|
||||
///
|
||||
/// [`bind_memory`]: sys::RawBuffer::bind_memory
|
||||
/// [`sparse_binding`]: crate::device::Features::sparse_binding
|
||||
SPARSE_BINDING = SPARSE_BINDING,
|
||||
SPARSE_BINDING = SPARSE_BINDING,*/
|
||||
|
||||
/* TODO: enable
|
||||
/// The buffer can be used without being fully resident in memory at the time of use.
|
||||
///
|
||||
/// This requires the `sparse_binding` flag as well.
|
||||
@ -127,8 +128,9 @@ vulkan_bitflags! {
|
||||
/// The [`sparse_residency_buffer`] feature must be enabled on the device.
|
||||
///
|
||||
/// [`sparse_residency_buffer`]: crate::device::Features::sparse_residency_buffer
|
||||
SPARSE_RESIDENCY = SPARSE_RESIDENCY,
|
||||
SPARSE_RESIDENCY = SPARSE_RESIDENCY,*/
|
||||
|
||||
/* TODO: enable
|
||||
/// The buffer's memory can alias with another buffer or a different part of the same buffer.
|
||||
///
|
||||
/// This requires the `sparse_binding` flag as well.
|
||||
@ -136,16 +138,18 @@ vulkan_bitflags! {
|
||||
/// The [`sparse_residency_aliased`] feature must be enabled on the device.
|
||||
///
|
||||
/// [`sparse_residency_aliased`]: crate::device::Features::sparse_residency_aliased
|
||||
SPARSE_ALIASED = SPARSE_ALIASED,
|
||||
SPARSE_ALIASED = SPARSE_ALIASED,*/
|
||||
|
||||
/* TODO: enable
|
||||
/// The buffer is protected, and can only be used in combination with protected memory and other
|
||||
/// protected objects.
|
||||
///
|
||||
/// The device API version must be at least 1.1.
|
||||
PROTECTED = PROTECTED {
|
||||
api_version: V1_1,
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
/// The buffer's device address can be saved and reused on a subsequent run.
|
||||
///
|
||||
/// The device API version must be at least 1.2, or either the [`khr_buffer_device_address`] or
|
||||
@ -153,8 +157,7 @@ vulkan_bitflags! {
|
||||
DEVICE_ADDRESS_CAPTURE_REPLAY = DEVICE_ADDRESS_CAPTURE_REPLAY {
|
||||
api_version: V1_2,
|
||||
device_extensions: [khr_buffer_device_address, ext_buffer_device_address],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
/// Trait for types of data that can be put in a buffer. These can be safely transmuted to and from
|
||||
|
@ -57,55 +57,93 @@ vulkan_bitflags! {
|
||||
device_extensions: [khr_buffer_device_address, ext_buffer_device_address],
|
||||
},
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_DECODE_SRC = VIDEO_DECODE_SRC_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_DECODE_DST = VIDEO_DECODE_DST_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
TRANSFORM_FEEDBACK_BUFFER = TRANSFORM_FEEDBACK_BUFFER_EXT {
|
||||
device_extensions: [ext_transform_feedback],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
TRANSFORM_FEEDBACK_COUNTER_BUFFER = TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT {
|
||||
device_extensions: [ext_transform_feedback],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
CONDITIONAL_RENDERING = CONDITIONAL_RENDERING_EXT {
|
||||
device_extensions: [ext_conditional_rendering],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR = ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR {
|
||||
device_extensions: [khr_acceleration_structure],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
ACCELERATION_STRUCTURE_STORAGE = ACCELERATION_STRUCTURE_STORAGE_KHR {
|
||||
device_extensions: [khr_acceleration_structure],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SHADER_BINDING_TABLE = SHADER_BINDING_TABLE_KHR {
|
||||
device_extensions: [khr_ray_tracing_pipeline, nv_ray_tracing],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_ENCODE_DST = VIDEO_ENCODE_DST_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_ENCODE_SRC = VIDEO_ENCODE_SRC_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SAMPLER_DESCRIPTOR_BUFFER = SAMPLER_DESCRIPTOR_BUFFER_EXT {
|
||||
device_extensions: [ext_descriptor_buffer],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
RESOURCE_DESCRIPTOR_BUFFER = RESOURCE_DESCRIPTOR_BUFFER_EXT {
|
||||
device_extensions: [ext_descriptor_buffer],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER = PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_EXT {
|
||||
device_extensions: [ext_descriptor_buffer],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
MICROMAP_BUILD_INPUT_READ_ONLY = MICROMAP_BUILD_INPUT_READ_ONLY_EXT {
|
||||
device_extensions: [ext_opacity_micromap],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
MICROMAP_STORAGE = MICROMAP_STORAGE_EXT {
|
||||
device_extensions: [ext_opacity_micromap],
|
||||
},*/
|
||||
}
|
||||
|
@ -1388,6 +1388,38 @@ where
|
||||
// vkCmdSetViewportWithCountEXT must be 1
|
||||
}
|
||||
DynamicState::ViewportWScaling => todo!(),
|
||||
DynamicState::TessellationDomainOrigin => todo!(),
|
||||
DynamicState::DepthClampEnable => todo!(),
|
||||
DynamicState::PolygonMode => todo!(),
|
||||
DynamicState::RasterizationSamples => todo!(),
|
||||
DynamicState::SampleMask => todo!(),
|
||||
DynamicState::AlphaToCoverageEnable => todo!(),
|
||||
DynamicState::AlphaToOneEnable => todo!(),
|
||||
DynamicState::LogicOpEnable => todo!(),
|
||||
DynamicState::ColorBlendEnable => todo!(),
|
||||
DynamicState::ColorBlendEquation => todo!(),
|
||||
DynamicState::ColorWriteMask => todo!(),
|
||||
DynamicState::RasterizationStream => todo!(),
|
||||
DynamicState::ConservativeRasterizationMode => todo!(),
|
||||
DynamicState::ExtraPrimitiveOverestimationSize => todo!(),
|
||||
DynamicState::DepthClipEnable => todo!(),
|
||||
DynamicState::SampleLocationsEnable => todo!(),
|
||||
DynamicState::ColorBlendAdvanced => todo!(),
|
||||
DynamicState::ProvokingVertexMode => todo!(),
|
||||
DynamicState::LineRasterizationMode => todo!(),
|
||||
DynamicState::LineStippleEnable => todo!(),
|
||||
DynamicState::DepthClipNegativeOneToOne => todo!(),
|
||||
DynamicState::ViewportWScalingEnable => todo!(),
|
||||
DynamicState::ViewportSwizzle => todo!(),
|
||||
DynamicState::CoverageToColorEnable => todo!(),
|
||||
DynamicState::CoverageToColorLocation => todo!(),
|
||||
DynamicState::CoverageModulationMode => todo!(),
|
||||
DynamicState::CoverageModulationTableEnable => todo!(),
|
||||
DynamicState::CoverageModulationTable => todo!(),
|
||||
DynamicState::ShadingRateImageEnable => todo!(),
|
||||
DynamicState::RepresentativeFragmentTestEnable => todo!(),
|
||||
DynamicState::CoverageReductionMode => todo!(),
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -741,6 +741,37 @@ impl CurrentState {
|
||||
DynamicState::ViewportShadingRatePalette => (), // TODO:
|
||||
DynamicState::ViewportWScaling => (), // TODO:
|
||||
DynamicState::ViewportWithCount => self.viewport_with_count = None,
|
||||
DynamicState::TessellationDomainOrigin => (), // TODO:
|
||||
DynamicState::DepthClampEnable => (), // TODO:
|
||||
DynamicState::PolygonMode => (), // TODO:
|
||||
DynamicState::RasterizationSamples => (), // TODO:
|
||||
DynamicState::SampleMask => (), // TODO:
|
||||
DynamicState::AlphaToCoverageEnable => (), // TODO:
|
||||
DynamicState::AlphaToOneEnable => (), // TODO:
|
||||
DynamicState::LogicOpEnable => (), // TODO:
|
||||
DynamicState::ColorBlendEnable => (), // TODO:
|
||||
DynamicState::ColorBlendEquation => (), // TODO:
|
||||
DynamicState::ColorWriteMask => (), // TODO:
|
||||
DynamicState::RasterizationStream => (), // TODO:
|
||||
DynamicState::ConservativeRasterizationMode => (), // TODO:
|
||||
DynamicState::ExtraPrimitiveOverestimationSize => (), // TODO:
|
||||
DynamicState::DepthClipEnable => (), // TODO:
|
||||
DynamicState::SampleLocationsEnable => (), // TODO:
|
||||
DynamicState::ColorBlendAdvanced => (), // TODO:
|
||||
DynamicState::ProvokingVertexMode => (), // TODO:
|
||||
DynamicState::LineRasterizationMode => (), // TODO:
|
||||
DynamicState::LineStippleEnable => (), // TODO:
|
||||
DynamicState::DepthClipNegativeOneToOne => (), // TODO:
|
||||
DynamicState::ViewportWScalingEnable => (), // TODO:
|
||||
DynamicState::ViewportSwizzle => (), // TODO:
|
||||
DynamicState::CoverageToColorEnable => (), // TODO:
|
||||
DynamicState::CoverageToColorLocation => (), // TODO:
|
||||
DynamicState::CoverageModulationMode => (), // TODO:
|
||||
DynamicState::CoverageModulationTableEnable => (), // TODO:
|
||||
DynamicState::CoverageModulationTable => (), // TODO:
|
||||
DynamicState::ShadingRateImageEnable => (), // TODO:
|
||||
DynamicState::RepresentativeFragmentTestEnable => (), // TODO:
|
||||
DynamicState::CoverageReductionMode => (), // TODO:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1529,6 +1529,38 @@ where
|
||||
// vkCmdSetViewportWithCountEXT must be 1
|
||||
}
|
||||
DynamicState::ViewportWScaling => todo!(),
|
||||
DynamicState::TessellationDomainOrigin => todo!(),
|
||||
DynamicState::DepthClampEnable => todo!(),
|
||||
DynamicState::PolygonMode => todo!(),
|
||||
DynamicState::RasterizationSamples => todo!(),
|
||||
DynamicState::SampleMask => todo!(),
|
||||
DynamicState::AlphaToCoverageEnable => todo!(),
|
||||
DynamicState::AlphaToOneEnable => todo!(),
|
||||
DynamicState::LogicOpEnable => todo!(),
|
||||
DynamicState::ColorBlendEnable => todo!(),
|
||||
DynamicState::ColorBlendEquation => todo!(),
|
||||
DynamicState::ColorWriteMask => todo!(),
|
||||
DynamicState::RasterizationStream => todo!(),
|
||||
DynamicState::ConservativeRasterizationMode => todo!(),
|
||||
DynamicState::ExtraPrimitiveOverestimationSize => todo!(),
|
||||
DynamicState::DepthClipEnable => todo!(),
|
||||
DynamicState::SampleLocationsEnable => todo!(),
|
||||
DynamicState::ColorBlendAdvanced => todo!(),
|
||||
DynamicState::ProvokingVertexMode => todo!(),
|
||||
DynamicState::LineRasterizationMode => todo!(),
|
||||
DynamicState::LineStippleEnable => todo!(),
|
||||
DynamicState::DepthClipNegativeOneToOne => todo!(),
|
||||
DynamicState::ViewportWScalingEnable => todo!(),
|
||||
DynamicState::ViewportSwizzle => todo!(),
|
||||
DynamicState::CoverageToColorEnable => todo!(),
|
||||
DynamicState::CoverageToColorLocation => todo!(),
|
||||
DynamicState::CoverageModulationMode => todo!(),
|
||||
DynamicState::CoverageModulationTableEnable => todo!(),
|
||||
DynamicState::CoverageModulationTable => todo!(),
|
||||
DynamicState::ShadingRateImageEnable => todo!(),
|
||||
DynamicState::RepresentativeFragmentTestEnable => todo!(),
|
||||
DynamicState::CoverageReductionMode => todo!(),
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1025,6 +1025,37 @@ impl CurrentState {
|
||||
DynamicState::ViewportShadingRatePalette => (), // TODO:
|
||||
DynamicState::ViewportWScaling => (), // TODO:
|
||||
DynamicState::ViewportWithCount => self.viewport_with_count = None,
|
||||
DynamicState::TessellationDomainOrigin => (), // TODO:
|
||||
DynamicState::DepthClampEnable => (), // TODO:
|
||||
DynamicState::PolygonMode => (), // TODO:
|
||||
DynamicState::RasterizationSamples => (), // TODO:
|
||||
DynamicState::SampleMask => (), // TODO:
|
||||
DynamicState::AlphaToCoverageEnable => (), // TODO:
|
||||
DynamicState::AlphaToOneEnable => (), // TODO:
|
||||
DynamicState::LogicOpEnable => (), // TODO:
|
||||
DynamicState::ColorBlendEnable => (), // TODO:
|
||||
DynamicState::ColorBlendEquation => (), // TODO:
|
||||
DynamicState::ColorWriteMask => (), // TODO:
|
||||
DynamicState::RasterizationStream => (), // TODO:
|
||||
DynamicState::ConservativeRasterizationMode => (), // TODO:
|
||||
DynamicState::ExtraPrimitiveOverestimationSize => (), // TODO:
|
||||
DynamicState::DepthClipEnable => (), // TODO:
|
||||
DynamicState::SampleLocationsEnable => (), // TODO:
|
||||
DynamicState::ColorBlendAdvanced => (), // TODO:
|
||||
DynamicState::ProvokingVertexMode => (), // TODO:
|
||||
DynamicState::LineRasterizationMode => (), // TODO:
|
||||
DynamicState::LineStippleEnable => (), // TODO:
|
||||
DynamicState::DepthClipNegativeOneToOne => (), // TODO:
|
||||
DynamicState::ViewportWScalingEnable => (), // TODO:
|
||||
DynamicState::ViewportSwizzle => (), // TODO:
|
||||
DynamicState::CoverageToColorEnable => (), // TODO:
|
||||
DynamicState::CoverageToColorLocation => (), // TODO:
|
||||
DynamicState::CoverageModulationMode => (), // TODO:
|
||||
DynamicState::CoverageModulationTableEnable => (), // TODO:
|
||||
DynamicState::CoverageModulationTable => (), // TODO:
|
||||
DynamicState::ShadingRateImageEnable => (), // TODO:
|
||||
DynamicState::RepresentativeFragmentTestEnable => (), // TODO:
|
||||
DynamicState::CoverageReductionMode => (), // TODO:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -866,28 +866,42 @@ vulkan_enum! {
|
||||
/// pixel that is currently being processed by the fragment shader.
|
||||
InputAttachment = INPUT_ATTACHMENT,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
InlineUniformBlock = INLINE_UNIFORM_BLOCK {
|
||||
api_version: V1_3,
|
||||
device_extensions: [ext_inline_uniform_block],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
AccelerationStructure = ACCELERATION_STRUCTURE_KHR {
|
||||
device_extensions: [khr_acceleration_structure],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
AccelerationStructureNV = ACCELERATION_STRUCTURE_NV {
|
||||
device_extensions: [nv_ray_tracing],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SampleWeightImage = SAMPLE_WEIGHT_IMAGE_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
BlockMatchImage = BLOCK_MATCH_IMAGE_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Mutable = MUTABLE_VALVE {
|
||||
device_extensions: [valve_mutable_descriptor_type],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -2533,6 +2533,33 @@ vulkan_enum! {
|
||||
|
||||
// TODO: document
|
||||
MoltenVK = MOLTENVK,
|
||||
|
||||
// TODO: document
|
||||
CoreAVIProprietary = COREAVI_PROPRIETARY,
|
||||
|
||||
// TODO: document
|
||||
JuiceProprietary = JUICE_PROPRIETARY,
|
||||
|
||||
// TODO: document
|
||||
VeriSiliconPropertary = VERISILICON_PROPRIETARY,
|
||||
|
||||
// TODO: document
|
||||
MesaTurnip = MESA_TURNIP,
|
||||
|
||||
// TODO: document
|
||||
MesaV3DV = MESA_V3DV,
|
||||
|
||||
// TODO: document
|
||||
MesaPanVK = MESA_PANVK,
|
||||
|
||||
// TODO: document
|
||||
SamsungProprietary = SAMSUNG_PROPRIETARY,
|
||||
|
||||
// TODO: document
|
||||
MesaVenus = MESA_VENUS,
|
||||
|
||||
// TODO: document
|
||||
MesaDozen = MESA_DOZEN,
|
||||
}
|
||||
|
||||
/// Information provided about an active tool.
|
||||
@ -2668,6 +2695,86 @@ impl From<ash::vk::ShaderCorePropertiesFlagsAMD> for ShaderCoreProperties {
|
||||
}
|
||||
}
|
||||
|
||||
vulkan_bitflags! {
|
||||
#[non_exhaustive]
|
||||
|
||||
// TODO: document
|
||||
MemoryDecompressionMethods = MemoryDecompressionMethodFlagsNV(u64);
|
||||
|
||||
// TODO: document
|
||||
GDEFLATE_1_0 = GDEFLATE_1_0,
|
||||
}
|
||||
|
||||
vulkan_bitflags! {
|
||||
#[non_exhaustive]
|
||||
|
||||
// TODO: document
|
||||
OpticalFlowGridSizes = OpticalFlowGridSizeFlagsNV(u32);
|
||||
|
||||
// TODO: document
|
||||
SIZE_1X1 = TYPE_1X1,
|
||||
|
||||
// TODO: document
|
||||
SIZE_2X2 = TYPE_2X2,
|
||||
|
||||
// TODO: document
|
||||
SIZE_4X4 = TYPE_4X4,
|
||||
|
||||
// TODO: document
|
||||
SIZE_8X8 = TYPE_8X8,
|
||||
}
|
||||
|
||||
vulkan_enum! {
|
||||
#[non_exhaustive]
|
||||
|
||||
// TODO: document
|
||||
PipelineRobustnessBufferBehavior = PipelineRobustnessBufferBehaviorEXT(i32);
|
||||
|
||||
// TODO: document
|
||||
DeviceDefault = DEVICE_DEFAULT,
|
||||
|
||||
// TODO: document
|
||||
Disabled = DISABLED,
|
||||
|
||||
// TODO: document
|
||||
RobustBufferAccess = ROBUST_BUFFER_ACCESS,
|
||||
|
||||
// TODO: document
|
||||
RobustBufferAccess2 = ROBUST_BUFFER_ACCESS_2,
|
||||
}
|
||||
|
||||
vulkan_enum! {
|
||||
#[non_exhaustive]
|
||||
|
||||
// TODO: document
|
||||
PipelineRobustnessImageBehavior = PipelineRobustnessImageBehaviorEXT(i32);
|
||||
|
||||
// TODO: document
|
||||
DeviceDefault = DEVICE_DEFAULT,
|
||||
|
||||
// TODO: document
|
||||
Disabled = DISABLED,
|
||||
|
||||
// TODO: document
|
||||
RobustImageAccess = ROBUST_IMAGE_ACCESS,
|
||||
|
||||
// TODO: document
|
||||
RobustImageAccess2 = ROBUST_IMAGE_ACCESS_2,
|
||||
}
|
||||
|
||||
vulkan_enum! {
|
||||
#[non_exhaustive]
|
||||
|
||||
// TODO: document
|
||||
RayTracingInvocationReorderMode = RayTracingInvocationReorderModeNV(i32);
|
||||
|
||||
// TODO: document
|
||||
None = NONE,
|
||||
|
||||
// TODO: document
|
||||
Reorder = REORDER,
|
||||
}
|
||||
|
||||
/// Error that can happen when using a physical device.
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub enum PhysicalDeviceError {
|
||||
|
@ -1,10 +1,14 @@
|
||||
use super::physical::{
|
||||
MemoryDecompressionMethods, OpticalFlowGridSizes, PipelineRobustnessBufferBehavior,
|
||||
PipelineRobustnessImageBehavior, RayTracingInvocationReorderMode,
|
||||
};
|
||||
use crate::{
|
||||
device::{
|
||||
physical::{
|
||||
ConformanceVersion, DriverId, PhysicalDeviceType, PointClippingBehavior,
|
||||
ShaderCoreProperties, ShaderFloatControlsIndependence, SubgroupFeatures,
|
||||
},
|
||||
DeviceExtensions,
|
||||
DeviceExtensions, QueueFlags,
|
||||
},
|
||||
image::{SampleCount, SampleCounts},
|
||||
instance::InstanceExtensions,
|
||||
@ -138,6 +142,20 @@ impl FromVulkan<ash::vk::Extent2D> for [u32; 2] {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::MemoryDecompressionMethodFlagsNV> for MemoryDecompressionMethods {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::MemoryDecompressionMethodFlagsNV) -> Option<Self> {
|
||||
Some(val.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::OpticalFlowGridSizeFlagsNV> for OpticalFlowGridSizes {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::OpticalFlowGridSizeFlagsNV) -> Option<Self> {
|
||||
Some(val.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::PhysicalDeviceType> for PhysicalDeviceType {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::PhysicalDeviceType) -> Option<Self> {
|
||||
@ -145,6 +163,20 @@ impl FromVulkan<ash::vk::PhysicalDeviceType> for PhysicalDeviceType {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::PipelineRobustnessBufferBehaviorEXT> for PipelineRobustnessBufferBehavior {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::PipelineRobustnessBufferBehaviorEXT) -> Option<Self> {
|
||||
val.try_into().ok()
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::PipelineRobustnessImageBehaviorEXT> for PipelineRobustnessImageBehavior {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::PipelineRobustnessImageBehaviorEXT) -> Option<Self> {
|
||||
val.try_into().ok()
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::PointClippingBehavior> for PointClippingBehavior {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::PointClippingBehavior) -> Option<Self> {
|
||||
@ -152,6 +184,20 @@ impl FromVulkan<ash::vk::PointClippingBehavior> for PointClippingBehavior {
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::QueueFlags> for QueueFlags {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::QueueFlags) -> Option<Self> {
|
||||
Some(val.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::RayTracingInvocationReorderModeNV> for RayTracingInvocationReorderMode {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::RayTracingInvocationReorderModeNV) -> Option<Self> {
|
||||
val.try_into().ok()
|
||||
}
|
||||
}
|
||||
|
||||
impl FromVulkan<ash::vk::ResolveModeFlags> for ResolveModes {
|
||||
#[inline]
|
||||
fn from_vulkan(val: ash::vk::ResolveModeFlags) -> Option<Self> {
|
||||
|
@ -1640,12 +1640,10 @@ vulkan_bitflags! {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
|
||||
/*
|
||||
/// Queues of this family can execute optical flow operations.
|
||||
OPTICAL_FLOW = OPTICAL_FLOW_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
*/
|
||||
}
|
||||
|
||||
/// Error that can happen when submitting work to a queue.
|
||||
|
@ -912,6 +912,46 @@ vulkan_bitflags! {
|
||||
device_extensions: [khr_sampler_ycbcr_conversion],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
LINEAR_COLOR_ATTACHMENT = LINEAR_COLOR_ATTACHMENT_NV {
|
||||
device_extensions: [nv_linear_color_attachment],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
WEIGHT_IMAGE = WEIGHT_IMAGE_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
WEIGHT_SAMPLED_IMAGE = WEIGHT_SAMPLED_IMAGE_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
BLOCK_MATCHING = BLOCK_MATCHING_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
BOX_FILTER_SAMPLED = BOX_FILTER_SAMPLED_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
OPTICAL_FLOW_IMAGE = OPTICAL_FLOW_IMAGE_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
OPTICAL_FLOW_VECTOR = OPTICAL_FLOW_VECTOR_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
OPTICAL_FLOW_COST = OPTICAL_FLOW_COST_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
|
||||
/* Buffer usage */
|
||||
|
||||
/// Can be used with a uniform texel buffer descriptor.
|
||||
|
@ -88,43 +88,48 @@ vulkan_enum! {
|
||||
api_version: V1_1,
|
||||
device_extensions: [khr_maintenance2],
|
||||
},
|
||||
/*
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DepthAttachmentOptimal = DEPTH_ATTACHMENT_OPTIMAL {
|
||||
api_version: V1_2,
|
||||
device_extensions: [khr_separate_depth_stencil_layouts],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DepthReadOnlyOptimal = DEPTH_READ_ONLY_OPTIMAL {
|
||||
api_version: V1_2,
|
||||
device_extensions: [khr_separate_depth_stencil_layouts],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
StencilAttachmentOptimal = STENCIL_ATTACHMENT_OPTIMAL {
|
||||
api_version: V1_2,
|
||||
device_extensions: [khr_separate_depth_stencil_layouts],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
StencilReadOnlyOptimal = STENCIL_READ_ONLY_OPTIMAL {
|
||||
api_version: V1_2,
|
||||
device_extensions: [khr_separate_depth_stencil_layouts],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
ReadOnlyOptimal = READ_ONLY_OPTIMAL {
|
||||
api_version: V1_3,
|
||||
device_extensions: [khr_synchronization2],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
AttachmentOptimal = ATTACHMENT_OPTIMAL {
|
||||
api_version: V1_3,
|
||||
device_extensions: [khr_synchronization2],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
|
||||
/// The layout of images that are held in a swapchain. Images are in this layout when they are
|
||||
/// acquired from the swapchain, and must be transitioned back into this layout before
|
||||
@ -133,52 +138,65 @@ vulkan_enum! {
|
||||
device_extensions: [khr_swapchain],
|
||||
},
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VideoDecodeDst = VIDEO_DECODE_DST_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VideoDecodeSrc = VIDEO_DECODE_SRC_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VideoDecodeDpb = VIDEO_DECODE_DPB_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SharedPresent = SHARED_PRESENT_KHR {
|
||||
device_extensions: [khr_shared_presentable_image],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FragmentDensityMapOptimal = FRAGMENT_DENSITY_MAP_OPTIMAL_EXT {
|
||||
device_extensions: [ext_fragment_density_map],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FragmentShadingRateAttachmentOptimal = FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR {
|
||||
device_extensions: [khr_fragment_shading_rate],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VideoEncodeDst = VIDEO_ENCODE_DST_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VideoEncodeSrc = VIDEO_ENCODE_SRC_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VideoEncodeDpb = VIDEO_ENCODE_DPB_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
AttachmentFeedbackLoopOptimal = ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT {
|
||||
device_extensions: [ext_attachment_feedback_loop_layout],
|
||||
},*/
|
||||
}
|
||||
|
||||
/// The set of layouts to use for an image when used in descriptor of various kinds.
|
||||
|
@ -83,7 +83,7 @@ vulkan_bitflags! {
|
||||
/// Flags that can be set when creating a new image.
|
||||
ImageCreateFlags = ImageCreateFlags(u32);
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
/// The image will be backed by sparse memory binding (through queue commands) instead of
|
||||
/// regular binding (through [`bind_memory`]).
|
||||
///
|
||||
@ -91,8 +91,9 @@ vulkan_bitflags! {
|
||||
///
|
||||
/// [`bind_memory`]: sys::RawImage::bind_memory
|
||||
/// [`sparse_binding`]: crate::device::Features::sparse_binding
|
||||
SPARSE_BINDING = SPARSE_BINDING,
|
||||
SPARSE_BINDING = SPARSE_BINDING,*/
|
||||
|
||||
/* TODO: enable
|
||||
/// The image can be used without being fully resident in memory at the time of use.
|
||||
///
|
||||
/// This requires the `sparse_binding` flag as well.
|
||||
@ -111,8 +112,9 @@ vulkan_bitflags! {
|
||||
/// [`sparse_residency4_samples`]: crate::device::Features::sparse_residency4_samples
|
||||
/// [`sparse_residency8_samples`]: crate::device::Features::sparse_residency8_samples
|
||||
/// [`sparse_residency16_samples`]: crate::device::Features::sparse_residency16_samples
|
||||
SPARSE_RESIDENCY = SPARSE_RESIDENCY,
|
||||
SPARSE_RESIDENCY = SPARSE_RESIDENCY,*/
|
||||
|
||||
/* TODO: enable
|
||||
/// The buffer's memory can alias with another image or a different part of the same image.
|
||||
///
|
||||
/// This requires the `sparse_binding` flag as well.
|
||||
@ -120,8 +122,7 @@ vulkan_bitflags! {
|
||||
/// The [`sparse_residency_aliased`] feature must be enabled on the device.
|
||||
///
|
||||
/// [`sparse_residency_aliased`]: crate::device::Features::sparse_residency_aliased
|
||||
SPARSE_ALIASED = SPARSE_ALIASED,
|
||||
*/
|
||||
SPARSE_ALIASED = SPARSE_ALIASED,*/
|
||||
|
||||
/// For non-multi-planar formats, whether an image view wrapping the image can have a
|
||||
/// different format.
|
||||
@ -137,19 +138,19 @@ vulkan_bitflags! {
|
||||
/// [`ImageViewType::CubeArray`]: crate::image::view::ImageViewType::CubeArray
|
||||
CUBE_COMPATIBLE = CUBE_COMPATIBLE,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
ALIAS = ALIAS {
|
||||
api_version: V1_1,
|
||||
device_extensions: [khr_bind_memory2],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SPLIT_INSTANCE_BIND_REGIONS = SPLIT_INSTANCE_BIND_REGIONS {
|
||||
api_version: V1_1,
|
||||
device_extensions: [khr_device_group],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
|
||||
/// For 3D images, whether an image view of type [`ImageViewType::Dim2d`] or
|
||||
/// [`ImageViewType::Dim2dArray`] can be created from the image.
|
||||
@ -176,18 +177,18 @@ vulkan_bitflags! {
|
||||
device_extensions: [khr_maintenance2],
|
||||
},
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
EXTENDED_USAGE = EXTENDED_USAGE {
|
||||
api_version: V1_1,
|
||||
device_extensions: [khr_maintenance2],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
PROTECTED = PROTECTED {
|
||||
api_version: V1_1,
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
|
||||
/// For images with a multi-planar format, whether each plane will have its memory bound
|
||||
/// separately, rather than having a single memory binding for the whole image.
|
||||
@ -196,37 +197,41 @@ vulkan_bitflags! {
|
||||
device_extensions: [khr_sampler_ycbcr_conversion],
|
||||
},
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
CORNER_SAMPLED = CORNER_SAMPLED_NV {
|
||||
device_extensions: [nv_corner_sampled_image],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SAMPLE_LOCATIONS_COMPATIBLE_DEPTH = SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_EXT {
|
||||
device_extensions: [ext_sample_locations],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SUBSAMPLED = SUBSAMPLED_EXT {
|
||||
device_extensions: [ext_fragment_density_map],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED = MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXT {
|
||||
device_extensions: [ext_multisampled_render_to_single_sampled],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
TYPE_2D_VIEW_COMPATIBLE = TYPE_2D_VIEW_COMPATIBLE_EXT {
|
||||
device_extensions: [ext_image_2d_view_of_3d],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FRAGMENT_DENSITY_MAP_OFFSET = FRAGMENT_DENSITY_MAP_OFFSET_QCOM {
|
||||
device_extensions: [qcom_fragment_density_map_offset],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_bitflags_enum! {
|
||||
@ -355,12 +360,11 @@ vulkan_enum! {
|
||||
// TODO: document
|
||||
Linear = LINEAR,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DrmFormatModifier = DRM_FORMAT_MODIFIER_EXT {
|
||||
device_extensions: [ext_image_drm_format_modifier],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
/// The dimensions of an image.
|
||||
|
@ -49,50 +49,75 @@ vulkan_bitflags! {
|
||||
/// The image can be used as an input attachment in a render pass/framebuffer.
|
||||
INPUT_ATTACHMENT = INPUT_ATTACHMENT,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_DECODE_DST = VIDEO_DECODE_DST_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_DECODE_SRC = VIDEO_DECODE_SRC_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_DECODE_DPB = VIDEO_DECODE_DPB_KHR {
|
||||
device_extensions: [khr_video_decode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FRAGMENT_DENSITY_MAP = FRAGMENT_DENSITY_MAP_EXT {
|
||||
device_extensions: [ext_fragment_density_map],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FRAGMENT_SHADING_RATE_ATTACHMENT = FRAGMENT_SHADING_RATE_ATTACHMENT_KHR {
|
||||
device_extensions: [khr_fragment_shading_rate],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_ENCODE_DST = VIDEO_ENCODE_DST_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_ENCODE_SRC = VIDEO_ENCODE_SRC_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
VIDEO_ENCODE_DPB = VIDEO_ENCODE_DPB_KHR {
|
||||
device_extensions: [khr_video_encode_queue],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
ATTACHMENT_FEEDBACK_LOOP = ATTACHMENT_FEEDBACK_LOOP_EXT {
|
||||
device_extensions: [ext_attachment_feedback_loop_layout],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
INVOCATION_MASK = INVOCATION_MASK_HUAWEI {
|
||||
device_extensions: [huawei_invocation_mask],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SAMPLE_WEIGHT = SAMPLE_WEIGHT_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SAMPLE_BLOCK_MATCH = SAMPLE_BLOCK_MATCH_QCOM {
|
||||
device_extensions: [qcom_image_processing],
|
||||
},*/
|
||||
}
|
||||
|
@ -267,6 +267,23 @@ impl Display for VulkanError {
|
||||
"the requested DRM format modifier plane layout is invalid"
|
||||
}
|
||||
VulkanError::InvalidShader => "one or more shaders failed to compile or link",
|
||||
VulkanError::ImageUsageNotSupported =>
|
||||
"the requested `ImageUsage` are not supported",
|
||||
VulkanError::VideoPictureLayoutNotSupported =>
|
||||
"the requested video picture layout is not supported",
|
||||
VulkanError::VideoProfileOperationNotSupported =>
|
||||
"a video profile operation specified via \
|
||||
`VideoProfileInfo::video_codec_operation` is not supported",
|
||||
VulkanError::VideoProfileFormatNotSupported =>
|
||||
"format parameters in a requested `VideoProfileInfo` chain are not supported",
|
||||
VulkanError::VideoProfileCodecNotSupported =>
|
||||
"codec-specific parameters in a requested `VideoProfileInfo` chain are not \
|
||||
supported",
|
||||
VulkanError::VideoStdVersionNotSupported =>
|
||||
"the specified video Std header version is not supported",
|
||||
VulkanError::CompressionExhausted =>
|
||||
"an image creation failed because internal resources required for compression \
|
||||
are exhausted",
|
||||
VulkanError::Unnamed(result) =>
|
||||
return write!(f, "unnamed error, VkResult value {}", result.as_raw()),
|
||||
}
|
||||
|
@ -938,8 +938,8 @@ vulkan_bitflags! {
|
||||
/// A mask specifying flags for device memory allocation.
|
||||
MemoryAllocateFlags = MemoryAllocateFlags(u32);
|
||||
|
||||
// TODO: implement
|
||||
// device_mask = DEVICE_MASK,
|
||||
/* TODO: enable
|
||||
DEVICE_MASK = DEVICE_MASK,*/
|
||||
|
||||
/// Specifies that the allocated device memory can be bound to a buffer created with the
|
||||
/// [`SHADER_DEVICE_ADDRESS`] usage. This requires that the [`buffer_device_address`] feature
|
||||
@ -951,8 +951,8 @@ vulkan_bitflags! {
|
||||
/// [`ext_buffer_device_address`]: crate::device::DeviceExtensions::ext_buffer_device_address
|
||||
DEVICE_ADDRESS = DEVICE_ADDRESS,
|
||||
|
||||
// TODO: implement
|
||||
// device_address_capture_replay = DEVICE_ADDRESS_CAPTURE_REPLAY,
|
||||
/* TODO: enable
|
||||
DEVICE_ADDRESS_CAPTURE_REPLAY = DEVICE_ADDRESS_CAPTURE_REPLAY,*/
|
||||
}
|
||||
|
||||
/// Error type returned by functions related to `DeviceMemory`.
|
||||
|
@ -422,237 +422,281 @@ vulkan_enum! {
|
||||
/// `max(source, destination)`.
|
||||
Max = MAX,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Zero = ZERO_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Src = SRC_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Dst = DST_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SrcOver = SRC_OVER_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DstOver = DST_OVER_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SrcIn = SRC_IN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DstIn = DST_IN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SrcOut = SRC_OUT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DstOut = DST_OUT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SrcAtop = SRC_ATOP_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
DstAtop = DST_ATOP_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Xor = XOR_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Multiply = MULTIPLY_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Screen = SCREEN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Overlay = OVERLAY_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Darken = DARKEN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Lighten = LIGHTEN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Colordodge = COLORDODGE_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Colorburn = COLORBURN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Hardlight = HARDLIGHT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Softlight = SOFTLIGHT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Difference = DIFFERENCE_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Exclusion = EXCLUSION_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Invert = INVERT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
InvertRgb = INVERT_RGB_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Lineardodge = LINEARDODGE_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Linearburn = LINEARBURN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Vividlight = VIVIDLIGHT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Linearlight = LINEARLIGHT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Pinlight = PINLIGHT_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Hardmix = HARDMIX_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
HslHue = HSL_HUE_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
HslSaturation = HSL_SATURATION_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
HslColor = HSL_COLOR_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
HslLuminosity = HSL_LUMINOSITY_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Plus = PLUS_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
PlusClamped = PLUS_CLAMPED_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
PlusClampedAlpha = PLUS_CLAMPED_ALPHA_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
PlusDarker = PLUS_DARKER_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Minus = MINUS_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
MinusClamped = MINUS_CLAMPED_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Contrast = CONTRAST_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
InvertOvg = INVERT_OVG_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Red = RED_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Green = GREEN_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
Blue = BLUE_EXT {
|
||||
device_extensions: [ext_blend_operation_advanced],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_bitflags! {
|
||||
|
@ -241,12 +241,11 @@ vulkan_enum! {
|
||||
// TODO: document
|
||||
U32 = UINT32,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
None = NONE_KHR {
|
||||
device_extensions: [khr_acceleration_structure, nv_ray_tracing],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
impl IndexType {
|
||||
|
@ -197,7 +197,6 @@ vulkan_enum! {
|
||||
|
||||
/// All faces will be removed.
|
||||
FrontAndBack = FRONT_AND_BACK,
|
||||
|
||||
}
|
||||
|
||||
impl Default for CullMode {
|
||||
@ -249,12 +248,11 @@ vulkan_enum! {
|
||||
/// feature must be enabled on the device.
|
||||
Point = POINT,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FillRectangle = FILL_RECTANGLE_NV {
|
||||
device_extensions: [nv_fill_rectangle],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
impl Default for PolygonMode {
|
||||
|
@ -62,17 +62,17 @@ vulkan_enum! {
|
||||
// TODO: document
|
||||
Graphics = GRAPHICS,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
RayTracing = RAY_TRACING_KHR {
|
||||
device_extensions: [khr_ray_tracing_pipeline, nv_ray_tracing],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SubpassShading = SUBPASS_SHADING_HUAWEI {
|
||||
device_extensions: [huawei_subpass_shading],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_enum! {
|
||||
@ -263,6 +263,161 @@ vulkan_enum! {
|
||||
ColorWriteEnable = COLOR_WRITE_ENABLE_EXT {
|
||||
device_extensions: [ext_color_write_enable],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
TessellationDomainOrigin = TESSELLATION_DOMAIN_ORIGIN_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
DepthClampEnable = DEPTH_CLAMP_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
PolygonMode = POLYGON_MODE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
RasterizationSamples = RASTERIZATION_SAMPLES_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
SampleMask = SAMPLE_MASK_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
AlphaToCoverageEnable = ALPHA_TO_COVERAGE_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
AlphaToOneEnable = ALPHA_TO_ONE_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
LogicOpEnable = LOGIC_OP_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ColorBlendEnable = COLOR_BLEND_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ColorBlendEquation = COLOR_BLEND_EQUATION_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ColorWriteMask = COLOR_WRITE_MASK_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
RasterizationStream = RASTERIZATION_STREAM_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ConservativeRasterizationMode = CONSERVATIVE_RASTERIZATION_MODE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ExtraPrimitiveOverestimationSize = EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
DepthClipEnable = DEPTH_CLIP_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
SampleLocationsEnable = SAMPLE_LOCATIONS_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ColorBlendAdvanced = COLOR_BLEND_ADVANCED_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ProvokingVertexMode = PROVOKING_VERTEX_MODE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
LineRasterizationMode = LINE_RASTERIZATION_MODE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
LineStippleEnable = LINE_STIPPLE_ENABLE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
DepthClipNegativeOneToOne = DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ViewportWScalingEnable = VIEWPORT_W_SCALING_ENABLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ViewportSwizzle = VIEWPORT_SWIZZLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
CoverageToColorEnable = COVERAGE_TO_COLOR_ENABLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
CoverageToColorLocation = COVERAGE_TO_COLOR_LOCATION_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
CoverageModulationMode = COVERAGE_MODULATION_MODE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
CoverageModulationTableEnable = COVERAGE_MODULATION_TABLE_ENABLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
CoverageModulationTable = COVERAGE_MODULATION_TABLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
ShadingRateImageEnable = SHADING_RATE_IMAGE_ENABLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
RepresentativeFragmentTestEnable = REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
CoverageReductionMode = COVERAGE_REDUCTION_MODE_NV {
|
||||
device_extensions: [ext_extended_dynamic_state3],
|
||||
},
|
||||
}
|
||||
|
||||
/// Specifies how a dynamic state is handled by a graphics pipeline.
|
||||
|
@ -644,17 +644,17 @@ vulkan_bitflags! {
|
||||
/// Count the number of times a compute shader is invoked.
|
||||
COMPUTE_SHADER_INVOCATIONS = COMPUTE_SHADER_INVOCATIONS,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
TASK_SHADER_INVOCATIONS = TASK_SHADER_INVOCATIONS_NV {
|
||||
device_extensions: [nv_mesh_shader],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
MESH_SHADER_INVOCATIONS = MESH_SHADER_INVOCATIONS_NV {
|
||||
device_extensions: [nv_mesh_shader],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_bitflags! {
|
||||
@ -679,12 +679,11 @@ vulkan_bitflags! {
|
||||
/// available.
|
||||
PARTIAL = PARTIAL,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
WITH_STATUS = WITH_STATUS_KHR {
|
||||
device_extensions: [khr_video_queue],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -1113,12 +1113,11 @@ vulkan_enum! {
|
||||
/// instead.
|
||||
DontCare = DONT_CARE,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
None = NONE_EXT {
|
||||
device_extensions: [ext_load_store_op_none],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_enum! {
|
||||
@ -1144,13 +1143,12 @@ vulkan_enum! {
|
||||
/// image will be undefined.
|
||||
DontCare = DONT_CARE,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
None = NONE {
|
||||
api_version: V1_3,
|
||||
device_extensions: [ext_load_store_op_none],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_bitflags_enum! {
|
||||
|
@ -1442,17 +1442,17 @@ vulkan_enum! {
|
||||
/// The value `(1, 1, 1, 1)`. Can only be used with integer images.
|
||||
IntOpaqueWhite = INT_OPAQUE_WHITE,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
FloatCustom = VK_BORDER_COLOR_FLOAT_CUSTOM_EXT {
|
||||
device_extensions: [ext_custom_border_color],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
IntCustom = INT_CUSTOM_EXT {
|
||||
device_extensions: [ext_custom_border_color],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_enum! {
|
||||
|
@ -475,6 +475,9 @@ pub enum ShaderExecution {
|
||||
Miss,
|
||||
Intersection,
|
||||
Callable,
|
||||
Task,
|
||||
Mesh,
|
||||
SubpassShading,
|
||||
}
|
||||
|
||||
/*#[derive(Clone, Copy, Debug)]
|
||||
@ -1162,22 +1165,20 @@ vulkan_bitflags_enum! {
|
||||
device_extensions: [khr_ray_tracing_pipeline, nv_ray_tracing],
|
||||
},
|
||||
|
||||
/*
|
||||
// TODO: document
|
||||
TASK, Task = TASK_NV {
|
||||
device_extensions: [nv_mesh_shader],
|
||||
TASK, Task = TASK_EXT {
|
||||
device_extensions: [ext_mesh_shader, nv_mesh_shader],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
MESH, Mesh = MESH_NV {
|
||||
device_extensions: [nv_mesh_shader],
|
||||
MESH, Mesh = MESH_EXT {
|
||||
device_extensions: [ext_mesh_shader, nv_mesh_shader],
|
||||
},
|
||||
|
||||
// TODO: document
|
||||
SUBPASS_SHADING, SubpassShading = SUBPASS_SHADING_HUAWEI {
|
||||
device_extensions: [huawei_subpass_shading],
|
||||
},
|
||||
*/
|
||||
}
|
||||
|
||||
impl From<ShaderExecution> for ShaderStage {
|
||||
@ -1196,6 +1197,9 @@ impl From<ShaderExecution> for ShaderStage {
|
||||
ShaderExecution::Miss => Self::Miss,
|
||||
ShaderExecution::Intersection => Self::Intersection,
|
||||
ShaderExecution::Callable => Self::Callable,
|
||||
ShaderExecution::Task => Self::Task,
|
||||
ShaderExecution::Mesh => Self::Mesh,
|
||||
ShaderExecution::SubpassShading => Self::SubpassShading,
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1240,6 +1244,18 @@ impl From<ShaderStages> for PipelineStages {
|
||||
result |= PipelineStages::RAY_TRACING_SHADER
|
||||
}
|
||||
|
||||
if stages.intersects(ShaderStages::TASK) {
|
||||
result |= PipelineStages::TASK_SHADER;
|
||||
}
|
||||
|
||||
if stages.intersects(ShaderStages::MESH) {
|
||||
result |= PipelineStages::MESH_SHADER;
|
||||
}
|
||||
|
||||
if stages.intersects(ShaderStages::SUBPASS_SHADING) {
|
||||
result |= PipelineStages::SUBPASS_SHADING;
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
@ -1490,17 +1490,17 @@ vulkan_enum! {
|
||||
/// This is the equivalent of OpenGL's `SwapInterval` with a value of -1.
|
||||
FifoRelaxed = FIFO_RELAXED,
|
||||
|
||||
/*
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SharedDemandRefresh = SHARED_DEMAND_REFRESH_KHR {
|
||||
device_extensions: [khr_shared_presentable_image],
|
||||
},
|
||||
},*/
|
||||
|
||||
/* TODO: enable
|
||||
// TODO: document
|
||||
SharedContinuousRefresh = SHARED_CONTINUOUS_REFRESH_KHR {
|
||||
device_extensions: [khr_shared_presentable_image],
|
||||
},
|
||||
*/
|
||||
},*/
|
||||
}
|
||||
|
||||
vulkan_bitflags_enum! {
|
||||
|
@ -58,66 +58,15 @@ vulkan_bitflags_enum! {
|
||||
///
|
||||
/// This may set flags that are not supported by the device, so this is for internal use only
|
||||
/// and should not be passed on to Vulkan.
|
||||
pub(crate) fn normalize(mut self) -> Self {
|
||||
pub(crate) fn expand(mut self, queue_flags: QueueFlags) -> Self {
|
||||
if self.intersects(PipelineStages::ALL_COMMANDS) {
|
||||
self -= PipelineStages::ALL_COMMANDS;
|
||||
self |= PipelineStages::TOP_OF_PIPE
|
||||
| PipelineStages::DRAW_INDIRECT
|
||||
| PipelineStages::VERTEX_INPUT
|
||||
| PipelineStages::VERTEX_SHADER
|
||||
| PipelineStages::TESSELLATION_CONTROL_SHADER
|
||||
| PipelineStages::TESSELLATION_EVALUATION_SHADER
|
||||
| PipelineStages::GEOMETRY_SHADER
|
||||
| PipelineStages::FRAGMENT_SHADER
|
||||
| PipelineStages::EARLY_FRAGMENT_TESTS
|
||||
| PipelineStages::LATE_FRAGMENT_TESTS
|
||||
| PipelineStages::COLOR_ATTACHMENT_OUTPUT
|
||||
| PipelineStages::COMPUTE_SHADER
|
||||
| PipelineStages::ALL_TRANSFER
|
||||
| PipelineStages::BOTTOM_OF_PIPE
|
||||
| PipelineStages::HOST
|
||||
| PipelineStages::ALL_GRAPHICS
|
||||
| PipelineStages::COPY
|
||||
| PipelineStages::RESOLVE
|
||||
| PipelineStages::BLIT
|
||||
| PipelineStages::CLEAR
|
||||
| PipelineStages::INDEX_INPUT
|
||||
| PipelineStages::VERTEX_ATTRIBUTE_INPUT
|
||||
| PipelineStages::PRE_RASTERIZATION_SHADERS
|
||||
| PipelineStages::VIDEO_DECODE
|
||||
| PipelineStages::VIDEO_ENCODE
|
||||
| PipelineStages::TRANSFORM_FEEDBACK
|
||||
| PipelineStages::CONDITIONAL_RENDERING
|
||||
| PipelineStages::ACCELERATION_STRUCTURE_BUILD
|
||||
| PipelineStages::RAY_TRACING_SHADER
|
||||
| PipelineStages::FRAGMENT_DENSITY_PROCESS
|
||||
| PipelineStages::FRAGMENT_SHADING_RATE_ATTACHMENT
|
||||
| PipelineStages::COMMAND_PREPROCESS
|
||||
| PipelineStages::TASK_SHADER
|
||||
| PipelineStages::MESH_SHADER
|
||||
| PipelineStages::SUBPASS_SHADING
|
||||
| PipelineStages::INVOCATION_MASK;
|
||||
self |= queue_flags.into();
|
||||
}
|
||||
|
||||
if self.intersects(PipelineStages::ALL_GRAPHICS) {
|
||||
self -= PipelineStages::ALL_GRAPHICS;
|
||||
self |= PipelineStages::DRAW_INDIRECT
|
||||
| PipelineStages::TASK_SHADER
|
||||
| PipelineStages::MESH_SHADER
|
||||
| PipelineStages::VERTEX_INPUT
|
||||
| PipelineStages::VERTEX_SHADER
|
||||
| PipelineStages::TESSELLATION_CONTROL_SHADER
|
||||
| PipelineStages::TESSELLATION_EVALUATION_SHADER
|
||||
| PipelineStages::GEOMETRY_SHADER
|
||||
| PipelineStages::FRAGMENT_SHADER
|
||||
| PipelineStages::EARLY_FRAGMENT_TESTS
|
||||
| PipelineStages::LATE_FRAGMENT_TESTS
|
||||
| PipelineStages::COLOR_ATTACHMENT_OUTPUT
|
||||
| PipelineStages::TRANSFORM_FEEDBACK
|
||||
| PipelineStages::CONDITIONAL_RENDERING
|
||||
| PipelineStages::FRAGMENT_SHADING_RATE_ATTACHMENT
|
||||
| PipelineStages::FRAGMENT_DENSITY_PROCESS
|
||||
| PipelineStages::INVOCATION_MASK;
|
||||
self |= QueueFlags::GRAPHICS.into();
|
||||
}
|
||||
|
||||
if self.intersects(PipelineStages::VERTEX_INPUT) {
|
||||
@ -140,8 +89,8 @@ vulkan_bitflags_enum! {
|
||||
self |= PipelineStages::COPY
|
||||
| PipelineStages::RESOLVE
|
||||
| PipelineStages::BLIT
|
||||
| PipelineStages::CLEAR;
|
||||
//PipelineStages::ACCELERATION_STRUCTURE_COPY;
|
||||
| PipelineStages::CLEAR
|
||||
| PipelineStages::ACCELERATION_STRUCTURE_COPY;
|
||||
}
|
||||
|
||||
self
|
||||
@ -352,13 +301,13 @@ vulkan_bitflags_enum! {
|
||||
},
|
||||
|
||||
/// Task shaders are executed.
|
||||
TASK_SHADER, TaskShader = TASK_SHADER_NV {
|
||||
device_extensions: [nv_mesh_shader],
|
||||
TASK_SHADER, TaskShader = TASK_SHADER_EXT {
|
||||
device_extensions: [ext_mesh_shader, nv_mesh_shader],
|
||||
},
|
||||
|
||||
/// Mesh shaders are executed.
|
||||
MESH_SHADER, MeshShader = MESH_SHADER_NV {
|
||||
device_extensions: [nv_mesh_shader],
|
||||
MESH_SHADER, MeshShader = MESH_SHADER_EXT {
|
||||
device_extensions: [ext_mesh_shader, nv_mesh_shader],
|
||||
},
|
||||
|
||||
/// Subpass shading shaders are executed.
|
||||
@ -371,19 +320,20 @@ vulkan_bitflags_enum! {
|
||||
device_extensions: [huawei_invocation_mask],
|
||||
},
|
||||
|
||||
/*
|
||||
/// The `copy_acceleration_structure` command is executed.
|
||||
ACCELERATION_STRUCTURE_COPY, AccelerationStructureCopy = ACCELERATION_STRUCTURE_COPY_KHR {
|
||||
device_extensions: [khr_ray_tracing_maintenance1],
|
||||
},
|
||||
|
||||
/// Micromap commands are executed.
|
||||
MICROMAP_BUILD, MicromapBuild = MICROMAP_BUILD_EXT {
|
||||
device_extensions: [ext_opacity_micromap],
|
||||
},
|
||||
|
||||
/// Optical flow operations are performed.
|
||||
OPTICAL_FLOW, OpticalFlow = OPTICAL_FLOW_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
*/
|
||||
}
|
||||
|
||||
impl From<QueueFlags> for PipelineStages {
|
||||
@ -402,8 +352,8 @@ impl From<QueueFlags> for PipelineStages {
|
||||
| PipelineStages::COPY
|
||||
| PipelineStages::RESOLVE
|
||||
| PipelineStages::BLIT
|
||||
| PipelineStages::CLEAR;
|
||||
//| PipelineStages::ACCELERATION_STRUCTURE_COPY;
|
||||
| PipelineStages::CLEAR
|
||||
| PipelineStages::ACCELERATION_STRUCTURE_COPY;
|
||||
}
|
||||
|
||||
if val.intersects(QueueFlags::GRAPHICS) {
|
||||
@ -438,8 +388,8 @@ impl From<QueueFlags> for PipelineStages {
|
||||
| PipelineStages::CONDITIONAL_RENDERING
|
||||
| PipelineStages::COMMAND_PREPROCESS
|
||||
| PipelineStages::ACCELERATION_STRUCTURE_BUILD
|
||||
| PipelineStages::RAY_TRACING_SHADER;
|
||||
//| PipelineStages::MICROMAP_BUILD;
|
||||
| PipelineStages::RAY_TRACING_SHADER
|
||||
| PipelineStages::MICROMAP_BUILD;
|
||||
}
|
||||
|
||||
if val.intersects(QueueFlags::VIDEO_DECODE) {
|
||||
@ -450,9 +400,9 @@ impl From<QueueFlags> for PipelineStages {
|
||||
result |= PipelineStages::VIDEO_ENCODE;
|
||||
}
|
||||
|
||||
/*if val.intersects(QueueFlags::OPTICAL_FLOW) {
|
||||
if val.intersects(QueueFlags::OPTICAL_FLOW) {
|
||||
result |= PipelineStages::OPTICAL_FLOW;
|
||||
}*/
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
@ -522,15 +472,16 @@ vulkan_bitflags! {
|
||||
|
||||
/// Replaces and unsets flags that are equivalent to multiple other flags.
|
||||
///
|
||||
/// This may set flags that are not supported by the device, so this is for internal use only
|
||||
/// and should not be passed on to Vulkan.
|
||||
/// This may set flags that are not supported by the device, so this is for internal use
|
||||
/// only and should not be passed on to Vulkan.
|
||||
#[allow(dead_code)] // TODO: use this function
|
||||
pub(crate) fn normalize(mut self) -> Self {
|
||||
pub(crate) fn expand(mut self) -> Self {
|
||||
if self.intersects(AccessFlags::SHADER_READ) {
|
||||
self -= AccessFlags::SHADER_READ;
|
||||
self |= AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ;
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_BINDING_TABLE_READ;
|
||||
}
|
||||
|
||||
if self.intersects(AccessFlags::SHADER_WRITE) {
|
||||
@ -566,6 +517,7 @@ vulkan_bitflags! {
|
||||
/// - `uniform_read`
|
||||
/// - `shader_sampled_read`
|
||||
/// - `shader_storage_read`
|
||||
/// - `shader_binding_table_read`
|
||||
SHADER_READ = SHADER_READ,
|
||||
|
||||
/// Write access to a buffer or image in a shader.
|
||||
@ -713,27 +665,30 @@ vulkan_bitflags! {
|
||||
device_extensions: [huawei_invocation_mask],
|
||||
},
|
||||
|
||||
/*
|
||||
/// Read access to a shader binding table.
|
||||
SHADER_BINDING_TABLE_READ = SHADER_BINDING_TABLE_READ_KHR {
|
||||
device_extensions: [khr_ray_tracing_maintenance1],
|
||||
},
|
||||
|
||||
/// Read access to a micromap object.
|
||||
MICROMAP_READ = MICROMAP_READ_EXT {
|
||||
device_extensions: [ext_opacity_micromap],
|
||||
},
|
||||
|
||||
/// Write access to a micromap object.
|
||||
MICROMAP_WRITE = MICROMAP_WRITE_EXT {
|
||||
device_extensions: [ext_opacity_micromap],
|
||||
},
|
||||
|
||||
/// Read access to a buffer or image during optical flow operations.
|
||||
OPTICAL_FLOW_READ = OPTICAL_FLOW_READ_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
|
||||
/// Write access to a buffer or image during optical flow operations.
|
||||
OPTICAL_FLOW_WRITE = OPTICAL_FLOW_WRITE_NV {
|
||||
device_extensions: [nv_optical_flow],
|
||||
},
|
||||
*/
|
||||
}
|
||||
|
||||
impl From<PipelineStages> for AccessFlags {
|
||||
@ -746,7 +701,7 @@ impl From<PipelineStages> for AccessFlags {
|
||||
return AccessFlags::empty();
|
||||
}
|
||||
|
||||
val = val.normalize();
|
||||
val = val.expand(QueueFlags::GRAPHICS | QueueFlags::COMPUTE | QueueFlags::TRANSFER);
|
||||
let mut result = AccessFlags::MEMORY_READ | AccessFlags::MEMORY_WRITE;
|
||||
|
||||
if val.intersects(PipelineStages::DRAW_INDIRECT) {
|
||||
@ -754,47 +709,17 @@ impl From<PipelineStages> for AccessFlags {
|
||||
AccessFlags::INDIRECT_COMMAND_READ | AccessFlags::TRANSFORM_FEEDBACK_COUNTER_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::VERTEX_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::TESSELLATION_CONTROL_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::TESSELLATION_EVALUATION_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::GEOMETRY_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::FRAGMENT_SHADER) {
|
||||
if val.intersects(
|
||||
PipelineStages::VERTEX_SHADER
|
||||
| PipelineStages::TESSELLATION_CONTROL_SHADER
|
||||
| PipelineStages::TESSELLATION_EVALUATION_SHADER
|
||||
| PipelineStages::GEOMETRY_SHADER
|
||||
| PipelineStages::FRAGMENT_SHADER
|
||||
| PipelineStages::COMPUTE_SHADER
|
||||
| PipelineStages::RAY_TRACING_SHADER
|
||||
| PipelineStages::TASK_SHADER
|
||||
| PipelineStages::MESH_SHADER,
|
||||
) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
@ -802,15 +727,16 @@ impl From<PipelineStages> for AccessFlags {
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ
|
||||
| AccessFlags::INPUT_ATTACHMENT_READ;
|
||||
| AccessFlags::SHADER_BINDING_TABLE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::EARLY_FRAGMENT_TESTS) {
|
||||
result |= AccessFlags::DEPTH_STENCIL_ATTACHMENT_READ
|
||||
| AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE;
|
||||
if val.intersects(PipelineStages::FRAGMENT_SHADER | PipelineStages::SUBPASS_SHADING) {
|
||||
result |= AccessFlags::INPUT_ATTACHMENT_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::LATE_FRAGMENT_TESTS) {
|
||||
if val
|
||||
.intersects(PipelineStages::EARLY_FRAGMENT_TESTS | PipelineStages::LATE_FRAGMENT_TESTS)
|
||||
{
|
||||
result |= AccessFlags::DEPTH_STENCIL_ATTACHMENT_READ
|
||||
| AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE;
|
||||
}
|
||||
@ -821,29 +747,16 @@ impl From<PipelineStages> for AccessFlags {
|
||||
| AccessFlags::COLOR_ATTACHMENT_READ_NONCOHERENT;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::COMPUTE_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::HOST) {
|
||||
result |= AccessFlags::HOST_READ | AccessFlags::HOST_WRITE;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::COPY) {
|
||||
result |= AccessFlags::TRANSFER_READ | AccessFlags::TRANSFER_WRITE;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::RESOLVE) {
|
||||
result |= AccessFlags::TRANSFER_READ | AccessFlags::TRANSFER_WRITE;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::BLIT) {
|
||||
if val.intersects(
|
||||
PipelineStages::COPY
|
||||
| PipelineStages::RESOLVE
|
||||
| PipelineStages::BLIT
|
||||
| PipelineStages::ACCELERATION_STRUCTURE_COPY,
|
||||
) {
|
||||
result |= AccessFlags::TRANSFER_READ | AccessFlags::TRANSFER_WRITE;
|
||||
}
|
||||
|
||||
@ -886,17 +799,13 @@ impl From<PipelineStages> for AccessFlags {
|
||||
| AccessFlags::TRANSFER_READ
|
||||
| AccessFlags::TRANSFER_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_WRITE;
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_WRITE
|
||||
| AccessFlags::SHADER_BINDING_TABLE_READ
|
||||
| AccessFlags::MICROMAP_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::RAY_TRACING_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
result |= AccessFlags::SHADER_BINDING_TABLE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::FRAGMENT_DENSITY_PROCESS) {
|
||||
@ -911,34 +820,18 @@ impl From<PipelineStages> for AccessFlags {
|
||||
result |= AccessFlags::COMMAND_PREPROCESS_READ | AccessFlags::COMMAND_PREPROCESS_WRITE;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::TASK_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::MESH_SHADER) {
|
||||
result |= AccessFlags::SHADER_READ
|
||||
| AccessFlags::UNIFORM_READ
|
||||
| AccessFlags::SHADER_SAMPLED_READ
|
||||
| AccessFlags::SHADER_STORAGE_READ
|
||||
| AccessFlags::SHADER_WRITE
|
||||
| AccessFlags::SHADER_STORAGE_WRITE
|
||||
| AccessFlags::ACCELERATION_STRUCTURE_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::SUBPASS_SHADING) {
|
||||
result |= AccessFlags::INPUT_ATTACHMENT_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::INVOCATION_MASK) {
|
||||
result |= AccessFlags::INVOCATION_MASK_READ;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::MICROMAP_BUILD) {
|
||||
result |= AccessFlags::MICROMAP_READ | AccessFlags::MICROMAP_WRITE;
|
||||
}
|
||||
|
||||
if val.intersects(PipelineStages::OPTICAL_FLOW) {
|
||||
result |= AccessFlags::OPTICAL_FLOW_READ | AccessFlags::OPTICAL_FLOW_WRITE;
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
3922
vulkano/vk.xml
3922
vulkano/vk.xml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user