Diligent::DeviceFeatures struct

Describes the device features.

Contents

Public variables

DEVICE_FEATURE_STATE SeparablePrograms
Indicates if device supports separable shader programs.
DEVICE_FEATURE_STATE ShaderResourceQueries
Indicates if device supports resource queries from shader objects.
DEVICE_FEATURE_STATE IndirectRendering
Indicates if device supports indirect draw commands.
DEVICE_FEATURE_STATE WireframeFill
Indicates if device supports wireframe fill mode.
DEVICE_FEATURE_STATE MultithreadedResourceCreation
Indicates if device supports multithreaded resource creation.
DEVICE_FEATURE_STATE ComputeShaders
Indicates if device supports compute shaders.
DEVICE_FEATURE_STATE GeometryShaders
Indicates if device supports geometry shaders.
DEVICE_FEATURE_STATE Tessellation
Indicates if device supports tessellation.
DEVICE_FEATURE_STATE MeshShaders
Indicates if device supports mesh and amplification shaders.
DEVICE_FEATURE_STATE RayTracing
Indicates if device supports ray tracing shaders.
DEVICE_FEATURE_STATE RayTracing2
Indicates if device supports inline ray tracing and indirect commands.
DEVICE_FEATURE_STATE BindlessResources
Indicates if device supports bindless resources.
DEVICE_FEATURE_STATE OcclusionQueries
Indicates if device supports occlusion queries (see Diligent::QUERY_TYPE_OCCLUSION).
DEVICE_FEATURE_STATE BinaryOcclusionQueries
Indicates if device supports binary occlusion queries (see Diligent::QUERY_TYPE_BINARY_OCCLUSION).
DEVICE_FEATURE_STATE TimestampQueries
Indicates if device supports timestamp queries (see Diligent::QUERY_TYPE_TIMESTAMP).
DEVICE_FEATURE_STATE PipelineStatisticsQueries
Indicates if device supports pipeline statistics queries (see Diligent::QUERY_TYPE_PIPELINE_STATISTICS).
DEVICE_FEATURE_STATE DurationQueries
Indicates if device supports duration queries (see Diligent::QUERY_TYPE_DURATION).
DEVICE_FEATURE_STATE DepthBiasClamp
Indicates if device supports depth bias clamping.
DEVICE_FEATURE_STATE DepthClamp
Indicates if device supports depth clamping.
DEVICE_FEATURE_STATE IndependentBlend
Indicates if device supports depth clamping.
DEVICE_FEATURE_STATE DualSourceBlend
Indicates if device supports dual-source blend.
DEVICE_FEATURE_STATE MultiViewport
Indicates if device supports multiviewport.
DEVICE_FEATURE_STATE TextureCompressionBC
Indicates if device supports all BC-compressed formats.
DEVICE_FEATURE_STATE VertexPipelineUAVWritesAndAtomics
Indicates if device supports writes to UAVs as well as atomic operations in vertex, tessellation, and geometry shader stages.
DEVICE_FEATURE_STATE PixelUAVWritesAndAtomics
Indicates if device supports writes to UAVs as well as atomic operations in pixel shader stage.
DEVICE_FEATURE_STATE TextureUAVExtendedFormats
Specifies whether all the extended UAV texture formats are available in shader code.
DEVICE_FEATURE_STATE ShaderFloat16
Indicates if device supports native 16-bit float operations. Note that there are separate features that indicate if device supports loading 16-bit floats from buffers and passing them between shader stages.
DEVICE_FEATURE_STATE ResourceBuffer16BitAccess
Indicates if device supports reading and writing 16-bit floats and ints from buffers bound as shader resource or unordered access views.
DEVICE_FEATURE_STATE UniformBuffer16BitAccess
Indicates if device supports reading 16-bit floats and ints from uniform buffers.
DEVICE_FEATURE_STATE ShaderInputOutput16
Indicates if 16-bit floats and ints can be used as input/output of a shader entry point.
DEVICE_FEATURE_STATE ShaderInt8
Indicates if device supports native 8-bit integer operations.
DEVICE_FEATURE_STATE ResourceBuffer8BitAccess
Indicates if device supports reading and writing 8-bit types from buffers bound as shader resource or unordered access views.
DEVICE_FEATURE_STATE UniformBuffer8BitAccess
Indicates if device supports reading 8-bit types from uniform buffers.
DEVICE_FEATURE_STATE ShaderResourceRuntimeArray
Indicates if device supports runtime-sized shader arrays (e.g. arrays without a specific size).
DEVICE_FEATURE_STATE WaveOp
Indicates if device supports wave ops (Direct3D12) or subgroups (Vulkan).

Variable documentation

DEVICE_FEATURE_STATE Diligent::DeviceFeatures::SeparablePrograms

Indicates if device supports separable shader programs.

DEVICE_FEATURE_STATE Diligent::DeviceFeatures::ShaderResourceQueries

Indicates if device supports resource queries from shader objects.

\ note This feature indicates if IShader::GetResourceCount() and IShader::GetResourceDesc() methods can be used to query the list of resources of individual shader objects. Shader variable queries from pipeline state and shader resource binding objects are always available.

The feature is always enabled in Direct3D11, Direct3D12 and Vulkan. It is enabled in OpenGL when separable programs are available, and it is always disabled in Metal.

DEVICE_FEATURE_STATE Diligent::DeviceFeatures::ShaderFloat16

Indicates if device supports native 16-bit float operations. Note that there are separate features that indicate if device supports loading 16-bit floats from buffers and passing them between shader stages.

DEVICE_FEATURE_STATE Diligent::DeviceFeatures::ShaderResourceRuntimeArray

Indicates if device supports runtime-sized shader arrays (e.g. arrays without a specific size).