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:
Rua 2022-12-02 17:17:45 +01:00 committed by GitHub
parent 93b5164b73
commit 4d95604e1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 27133 additions and 13553 deletions

View File

@ -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"

View File

@ -77,13 +77,20 @@ fn write_shader_execution(execution: &ShaderExecution) -> TokenStream {
ShaderExecution::Fragment => quote! { ::vulkano::shader::ShaderExecution::Fragment },
ShaderExecution::Compute => quote! { ::vulkano::shader::ShaderExecution::Compute },
ShaderExecution::RayGeneration => {
quote! { ::vulkano::shader::ShaderExecution::RayGeneration}
quote! { ::vulkano::shader::ShaderExecution::RayGeneration }
}
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::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 }
}
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::Callable => quote! { ::vulkano::shader::ShaderExecution::Callable},
}
}

View File

@ -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"

View File

@ -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 },

View File

@ -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

View File

@ -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

View File

@ -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],
},*/
}

View File

@ -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!(),
}
}

View File

@ -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:
}
}
}

View File

@ -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!(),
}
}

View File

@ -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:
}
}
}

View File

@ -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)]

View File

@ -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 {

View File

@ -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> {

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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],
},*/
}

View File

@ -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()),
}

View File

@ -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`.

View File

@ -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! {

View File

@ -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 {

View File

@ -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 {

View File

@ -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.

View File

@ -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)]

View File

@ -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! {

View File

@ -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! {

View File

@ -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
}
}

View File

@ -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! {

View File

@ -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
}
}

File diff suppressed because it is too large Load Diff