Describes the device features. More...
#include <GraphicsTypes.h>
Public Member Functions | |
bool | operator== (const DeviceFeatures &RHS) const |
Comparison operator tests if two structures are equivalent. | |
Public Attributes | |
DEVICE_FEATURE_STATE | SeparablePrograms = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports separable shader programs. | |
DEVICE_FEATURE_STATE | ShaderResourceQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports resource queries from shader objects. | |
DEVICE_FEATURE_STATE | WireframeFill = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports wireframe fill mode. | |
DEVICE_FEATURE_STATE | MultithreadedResourceCreation = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports multithreaded resource creation. | |
DEVICE_FEATURE_STATE | ComputeShaders = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports compute shaders. | |
DEVICE_FEATURE_STATE | GeometryShaders = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports geometry shaders. | |
DEVICE_FEATURE_STATE | Tessellation = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports tessellation. | |
DEVICE_FEATURE_STATE | MeshShaders = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports mesh and amplification shaders. | |
DEVICE_FEATURE_STATE | RayTracing = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | BindlessResources = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports bindless resources. | |
DEVICE_FEATURE_STATE | OcclusionQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports occlusion queries (see Diligent::QUERY_TYPE_OCCLUSION). | |
DEVICE_FEATURE_STATE | BinaryOcclusionQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports binary occlusion queries (see Diligent::QUERY_TYPE_BINARY_OCCLUSION). | |
DEVICE_FEATURE_STATE | TimestampQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports timestamp queries (see Diligent::QUERY_TYPE_TIMESTAMP). | |
DEVICE_FEATURE_STATE | PipelineStatisticsQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports pipeline statistics queries (see Diligent::QUERY_TYPE_PIPELINE_STATISTICS). | |
DEVICE_FEATURE_STATE | DurationQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports duration queries (see Diligent::QUERY_TYPE_DURATION). | |
DEVICE_FEATURE_STATE | DepthBiasClamp = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports depth bias clamping. | |
DEVICE_FEATURE_STATE | DepthClamp = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | IndependentBlend = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports depth clamping. | |
DEVICE_FEATURE_STATE | DualSourceBlend = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports dual-source blend. | |
DEVICE_FEATURE_STATE | MultiViewport = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports multiviewport. | |
DEVICE_FEATURE_STATE | TextureCompressionBC = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports all BC-compressed formats. | |
DEVICE_FEATURE_STATE | TextureCompressionETC2 = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports all ETC-compressed formats. | |
DEVICE_FEATURE_STATE | VertexPipelineUAVWritesAndAtomics = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | PixelUAVWritesAndAtomics = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | TextureUAVExtendedFormats = DEVICE_FEATURE_STATE_DISABLED |
Specifies whether all the extended UAV texture formats are available in shader code. | |
DEVICE_FEATURE_STATE | ShaderFloat16 = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | ResourceBuffer16BitAccess = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | UniformBuffer16BitAccess = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports reading 16-bit floats and ints from uniform buffers. | |
DEVICE_FEATURE_STATE | ShaderInputOutput16 = DEVICE_FEATURE_STATE_DISABLED |
Indicates if 16-bit floats and ints can be used as input/output of a shader entry point. | |
DEVICE_FEATURE_STATE | ShaderInt8 = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports native 8-bit integer operations. | |
DEVICE_FEATURE_STATE | ResourceBuffer8BitAccess = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | UniformBuffer8BitAccess = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports reading 8-bit types from uniform buffers. | |
DEVICE_FEATURE_STATE | ShaderResourceStaticArrays = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | ShaderResourceRuntimeArrays = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | WaveOp = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports wave ops (Direct3D12) or subgroups (Vulkan). | |
DEVICE_FEATURE_STATE | InstanceDataStepRate = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports instance data step rates other than 1. | |
DEVICE_FEATURE_STATE | NativeFence = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | TileShaders = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports tile shaders. | |
DEVICE_FEATURE_STATE | TransferQueueTimestampQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports timestamp and duration queries in transfer queues. | |
DEVICE_FEATURE_STATE | VariableRateShading = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports variable rate shading. | |
DEVICE_FEATURE_STATE | SparseResources = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports sparse (aka tiled or partially resident) resources. | |
DEVICE_FEATURE_STATE | SubpassFramebufferFetch = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports framebuffer fetch for input attachments. | |
DEVICE_FEATURE_STATE | TextureComponentSwizzle = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports texture component swizzle. | |
DEVICE_FEATURE_STATE | TextureSubresourceViews = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports texture subresource views. | |
DEVICE_FEATURE_STATE | NativeMultiDraw = DEVICE_FEATURE_STATE_DISABLED |
DEVICE_FEATURE_STATE | AsyncShaderCompilation = DEVICE_FEATURE_STATE_DISABLED |
Whether the device supports asynchronous shader compilation. | |
DEVICE_FEATURE_STATE | FormattedBuffers = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports formatted buffers. | |
Describes the device features.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::AsyncShaderCompilation = DEVICE_FEATURE_STATE_DISABLED |
Whether the device supports asynchronous shader compilation.
When this feature is enabled, the engine can create shaders and pipeline states asynchronously in a separate thread without blocking the main thread. An application can query the shader status using the IShader::GetStatus() method and the pipeline state status using the IPipelineState::GetStatus() method.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::DepthClamp = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports depth clamping
By default polygon faces are clipped against the near and far planes of the view would be clipped is clamped to the near/far plane instead of discarding them. frustum. If depth clipping is disabled in the PSO, the depth of the fragments that If this feature is enabled, the DepthClipEnable member of the RasterizerStateDesc struct can be set to False. Otherwise it must always be set to True.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::NativeFence = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device natively supports fence with Uint64 counter. Native fence can wait on GPU for a signal from CPU, can be enqueued for wait operation for any value. If not natively supported by the device, the fence is emulated where possible.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::NativeMultiDraw = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports native multi-draw commands.
When this feature is enabled, the GPU supports a dedicated command that can be used to issue multiple draw calls with a single command (e.g. vkCmdDrawMultiEXT
, glMultiDrawElements
, etc.). In OpenGL and Vulkan, the shader can access the draw command index using the gl_DrawID
built-in variable.
When this feature is disabled, the engine emulates multi-draw commands by issuing multiple individual draw calls. The draw command index is unavailable.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::PixelUAVWritesAndAtomics = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports writes to UAVs as well as atomic operations in pixel shader stage.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::RayTracing = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports ray tracing. See Diligent::RayTracingProperties for more information.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::ResourceBuffer16BitAccess = DEVICE_FEATURE_STATE_DISABLED |
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 Diligent::DeviceFeatures::ResourceBuffer8BitAccess = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports reading and writing 8-bit types from buffers bound as shader resource or unordered access views.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::SeparablePrograms = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports separable shader programs.
The only case when separable programs are not supported is when the engine is initialized in GLES3.0 mode. In GLES3.1+ and in all other backends, the feature is always enabled. The are two main limitations when separable programs are disabled:
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::ShaderFloat16 = DEVICE_FEATURE_STATE_DISABLED |
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::ShaderResourceQueries = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports resource queries from shader objects.
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::ShaderResourceRuntimeArrays = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports runtime-sized shader arrays (e.g. arrays without a specific size).
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::ShaderResourceStaticArrays = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports static-sized shader arrays.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::SubpassFramebufferFetch = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports framebuffer fetch for input attachments.
Vulkan: this feature is always supported through input attachments.
Metal: this feature is always supported on iOS; on MacOS it requires Apple GPU and MSL 2.3 (available in MacOS 11.0+). When the feature is disabled, every new subpass of a render pass starts a new render command encoder. With this feature enabled, input attachment loads translate into MSL framebuffer fetch operations that allow implementing subpasses within a single render command encoder.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::TextureSubresourceViews = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports texture subresource views.
When this feature is disabled, only texture views that reference the entire texture can be created.
DEVICE_FEATURE_STATE Diligent::DeviceFeatures::VertexPipelineUAVWritesAndAtomics = DEVICE_FEATURE_STATE_DISABLED |
Indicates if device supports writes to UAVs as well as atomic operations in vertex, tessellation, and geometry shader stages.