pub struct Vulkan12Features {
Show 47 fields pub sampler_mirror_clamp_to_edge: bool, pub draw_indirect_count: bool, pub storage_buffer8_bit_access: bool, pub uniform_and_storage_buffer8_bit_access: bool, pub storage_push_constant8: bool, pub shader_buffer_int64_atomics: bool, pub shader_shared_int64_atomics: bool, pub shader_float16: bool, pub shader_int8: bool, pub descriptor_indexing: bool, pub shader_input_attachment_array_dynamic_indexing: bool, pub shader_uniform_texel_buffer_array_dynamic_indexing: bool, pub shader_storage_texel_buffer_array_dynamic_indexing: bool, pub shader_uniform_buffer_array_non_uniform_indexing: bool, pub shader_sampled_image_array_non_uniform_indexing: bool, pub shader_storage_buffer_array_non_uniform_indexing: bool, pub shader_storage_image_array_non_uniform_indexing: bool, pub shader_input_attachment_array_non_uniform_indexing: bool, pub shader_uniform_texel_buffer_array_non_uniform_indexing: bool, pub shader_storage_texel_buffer_array_non_uniform_indexing: bool, pub descriptor_binding_uniform_buffer_update_after_bind: bool, pub descriptor_binding_sampled_image_update_after_bind: bool, pub descriptor_binding_storage_image_update_after_bind: bool, pub descriptor_binding_storage_buffer_update_after_bind: bool, pub descriptor_binding_uniform_texel_buffer_update_after_bind: bool, pub descriptor_binding_storage_texel_buffer_update_after_bind: bool, pub descriptor_binding_update_unused_while_pending: bool, pub descriptor_binding_partially_bound: bool, pub descriptor_binding_variable_descriptor_count: bool, pub runtime_descriptor_array: bool, pub sampler_filter_minmax: bool, pub scalar_block_layout: bool, pub imageless_framebuffer: bool, pub uniform_buffer_standard_layout: bool, pub shader_subgroup_extended_types: bool, pub separate_depth_stencil_layouts: bool, pub host_query_reset: bool, pub timeline_semaphore: bool, pub buffer_device_address: bool, pub buffer_device_address_capture_replay: bool, pub buffer_device_address_multi_device: bool, pub vulkan_memory_model: bool, pub vulkan_memory_model_device_scope: bool, pub vulkan_memory_model_availability_visibility_chains: bool, pub shader_output_viewport_index: bool, pub shader_output_layer: bool, pub subgroup_broadcast_dynamic_id: bool,
}
Expand description

Description of Vulkan 1.2 features.

See VkPhysicalDeviceVulkan12Features manual page.

Fields§

§sampler_mirror_clamp_to_edge: bool

Indicates whether the implementation supports the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode.

If this feature is not enabled, the VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE sampler address mode must not be used.

§draw_indirect_count: bool

Indicates whether the implementation supports the vkCmdDrawIndirectCount and vkCmdDrawIndexedIndirectCount functions.

If this feature is not enabled, these functions must not be used.

§storage_buffer8_bit_access: bool

Indicates whether objects in the StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer storage class with the Block decoration can have 8-bit integer members.

If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StorageBuffer8BitAccess capability.

§uniform_and_storage_buffer8_bit_access: bool

Indicates whether objects in the Uniform storage class with the Block decoration can have 8-bit integer members.

If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the UniformAndStorageBuffer8BitAccess capability.

§storage_push_constant8: bool

Indicates whether objects in the PushConstant storage class can have 8-bit integer members.

If this feature is not enabled, 8-bit integer members must not be used in such objects. This also indicates whether shader modules can declare the StoragePushConstant8 capability.

§shader_buffer_int64_atomics: bool

Indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on buffers.

§shader_shared_int64_atomics: bool

Indicates whether shaders can perform 64-bit unsigned and signed integer atomic operations on shared and payload memory.

§shader_float16: bool

Indicates whether 16-bit floats (halfs) are supported in shader code.

This also indicates whether shader modules can declare the Float16 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Float16 SPIR-V capability: Declaring and using 16-bit floats in the Private, Workgroup (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform, StorageBuffer, Input, Output, and PushConstant) is not enabled.

§shader_int8: bool

Indicates whether 8-bit integers (signed and unsigned) are supported in shader code.

This also indicates whether shader modules can declare the Int8 capability. However, this only enables a subset of the storage classes that SPIR-V allows for the Int8 SPIR-V capability: Declaring and using 8-bit integers in the Private, Workgroup (for non-Block variables), and Function storage classes is enabled, while declaring them in the interface storage classes (e.g., UniformConstant, Uniform, StorageBuffer, Input, Output, and PushConstant) is not enabled.

§descriptor_indexing: bool

Indicates whether the implementation supports the minimum set of descriptor indexing features as described in the Feature Requirements section. Enabling the descriptorIndexing member when vkCreateDevice is called does not imply the other minimum descriptor indexing features are also enabled. Those other descriptor indexing features must be enabled individually as needed by the application.

§shader_input_attachment_array_dynamic_indexing: bool

Indicates whether arrays of input attachments can be indexed by dynamically uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the InputAttachmentArrayDynamicIndexing capability.

§shader_uniform_texel_buffer_array_dynamic_indexing: bool

Indicates whether arrays of uniform texel buffers can be indexed by dynamically uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the UniformTexelBufferArrayDynamicIndexing capability.

§shader_storage_texel_buffer_array_dynamic_indexing: bool

Indicates whether arrays of storage texel buffers can be indexed by dynamically uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must be indexed only by constant integral expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageTexelBufferArrayDynamicIndexing capability.

§shader_uniform_buffer_array_non_uniform_indexing: bool

Indicates whether arrays of uniform buffers can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the UniformBufferArrayNonUniformIndexing capability.

§shader_sampled_image_array_non_uniform_indexing: bool

Indicates whether arrays of samplers or sampled images can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the SampledImageArrayNonUniformIndexing capability.

§shader_storage_buffer_array_non_uniform_indexing: bool

Indicates whether arrays of storage buffers can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageBufferArrayNonUniformIndexing capability.

§shader_storage_image_array_non_uniform_indexing: bool

Indicates whether arrays of storage images can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_IMAGE must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageImageArrayNonUniformIndexing capability.

§shader_input_attachment_array_non_uniform_indexing: bool

Indicates whether arrays of input attachments can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the InputAttachmentArrayNonUniformIndexing capability.

§shader_uniform_texel_buffer_array_non_uniform_indexing: bool

Indicates whether arrays of uniform texel buffers can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the UniformTexelBufferArrayNonUniformIndexing capability.

§shader_storage_texel_buffer_array_non_uniform_indexing: bool

Indicates whether arrays of storage texel buffers can be indexed by non-uniform integer expressions in shader code.

If this feature is not enabled, resources with a descriptor type of VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER must not be indexed by non-uniform integer expressions when aggregated into arrays in shader code. This also indicates whether shader modules can declare the StorageTexelBufferArrayNonUniformIndexing capability.

§descriptor_binding_uniform_buffer_update_after_bind: bool

Indicates whether the implementation supports updating uniform buffer descriptors after a set is bound.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER.

§descriptor_binding_sampled_image_update_after_bind: bool

Indicates whether the implementation supports updating sampled image descriptors after a set is bound.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, or VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.

§descriptor_binding_storage_image_update_after_bind: bool

Indicates whether the implementation supports updating storage image descriptors after a set is bound.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_STORAGE_IMAGE.

§descriptor_binding_storage_buffer_update_after_bind: bool

Indicates whether the implementation supports updating storage buffer descriptors after a set is bound.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_STORAGE_BUFFER.

§descriptor_binding_uniform_texel_buffer_update_after_bind: bool

Indicates whether the implementation supports updating uniform texel buffer descriptors after a set is bound.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER.

§descriptor_binding_storage_texel_buffer_update_after_bind: bool

Indicates whether the implementation supports updating storage texel buffer descriptors after a set is bound.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT must not be used with VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER.

§descriptor_binding_update_unused_while_pending: bool

Indicates whether the implementation supports updating descriptors while the set is in use.

If this feature is not enabled, VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT must not be used.

§descriptor_binding_partially_bound: bool

Indicates whether the implementation supports statically using a descriptor set binding in which some descriptors are not valid. If this feature is not enabled, VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT must not be used.

§descriptor_binding_variable_descriptor_count: bool

Indicates whether the implementation supports descriptor sets with a variable-sized last binding. If this feature is not enabled, VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT must not be used.

§runtime_descriptor_array: bool

Indicates whether the implementation supports the SPIR-V RuntimeDescriptorArray capability.

If this feature is not enabled, descriptors must not be declared in runtime arrays.

§sampler_filter_minmax: bool

Indicates whether the implementation supports a minimum set of required formats supporting min/max filtering as defined by the filterMinmaxSingleComponentFormats property minimum requirements.

If this feature is not enabled, then VkSamplerReductionModeCreateInfo must only use VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE.

§scalar_block_layout: bool

Indicates that the implementation supports the layout of resource blocks in shaders using scalar alignment.

§imageless_framebuffer: bool

Indicates that the implementation supports specifying the image view for attachments at render pass begin time via VkRenderPassAttachmentBeginInfo.

§uniform_buffer_standard_layout: bool

Indicates that the implementation supports the same layouts for uniform buffers as for storage and other kinds of buffers.

See Standard Buffer Layout.

§shader_subgroup_extended_types: bool

A boolean specifying whether subgroup operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types in group operations with subgroup scope, if the implementation supports the types.

§separate_depth_stencil_layouts: bool

Indicates whether the implementation supports a VkImageMemoryBarrier for a depth/stencil image with only one of VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT set, and whether VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL can be used.

§host_query_reset: bool

Indicates that the implementation supports resetting queries from the host with vkResetQueryPool.

§timeline_semaphore: bool

Indicates whether semaphores created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE are supported.

§buffer_device_address: bool

Indicates that the implementation supports accessing buffer memory in shaders as storage buffers via an address queried from vkGetBufferDeviceAddress.

§buffer_device_address_capture_replay: bool

Indicates that the implementation supports saving and reusing buffer and device addresses, e.g. for trace capture and replay.

§buffer_device_address_multi_device: bool

Indicates that the implementation supports the bufferDeviceAddress, rayTracingPipeline and rayQuery features for logical devices created with multiple physical devices.

If this feature is not supported, buffer and acceleration structure addresses must not be queried on a logical device created with more than one physical device.

§vulkan_memory_model: bool

Indicates whether the Vulkan Memory Model is supported.

This also indicates whether shader modules can declare the VulkanMemoryModel capability.

§vulkan_memory_model_device_scope: bool

Indicates whether the Vulkan Memory Model can use Device scope synchronization.

This also indicates whether shader modules can declare the VulkanMemoryModelDeviceScope capability.

§vulkan_memory_model_availability_visibility_chains: bool

Indicates whether the Vulkan Memory Model can use availability and visibility chains with more than one element.

§shader_output_viewport_index: bool

Indicates whether the implementation supports the ShaderViewportIndex SPIR-V capability enabling variables decorated with the ViewportIndex built-in to be exported from mesh, vertex or tessellation evaluation shaders.

If this feature is not enabled, the ViewportIndex built-in decoration must not be used on outputs in mesh, vertex or tessellation evaluation shaders.

§shader_output_layer: bool

Indicates whether the implementation supports the ShaderLayer SPIR-V capability enabling variables decorated with the Layer built-in to be exported from mesh, vertex or tessellation evaluation shaders.

If this feature is not enabled, the Layer built-in decoration must not be used on outputs in mesh, vertex or tessellation evaluation shaders.

§subgroup_broadcast_dynamic_id: bool

If true, the “Id” operand of OpGroupNonUniformBroadcast can be dynamically uniform within a subgroup, and the “Index” operand of OpGroupNonUniformQuadBroadcast can be dynamically uniform within the derivative group.

If false, these operands must be constants.

Trait Implementations§

source§

impl Debug for Vulkan12Features

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<PhysicalDeviceVulkan12Features> for Vulkan12Features

source§

fn from(features: PhysicalDeviceVulkan12Features) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more