![]() |
XII Release 0.1.0
|
This describes the device features. More...
#include <Descriptors.h>
Public Member Functions | |
| XII_DECLARE_POD_TYPE () | |
Public Member Functions inherited from xiiHashableStruct< xiiGALDeviceFeatures > | |
| constexpr | xiiHashableStruct () noexcept |
| Default constructor. Initializes all bytes to zero. | |
| xiiHashableStruct (const xiiHashableStruct &other) noexcept | |
| Bitwise copy constructor. | |
| xiiHashableStruct & | operator= (const xiiHashableStruct &other) noexcept |
| Bitwise assignment operator. | |
| bool | operator== (const xiiHashableStruct &other) const noexcept |
| Compares equality via raw byte comparison. | |
| std::strong_ordering | operator<=> (const xiiHashableStruct &other) const noexcept |
| Compares ordering via raw byte comparison. | |
| xiiUInt32 | CalculateHash () const noexcept |
| Calculates a 32-bit hash from raw bytes of the struct. | |
| void | Clear () noexcept |
| Fills all bytes with zero. | |
| bool | IsZero () const noexcept |
| Returns true if all bytes are zero. | |
Public Attributes | |
| xiiEnum< xiiGALDeviceFeatureState > | m_WireframeFill = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports wireframe fill mode. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_MultithreadedResourceCreation = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports multithreaded resource creation. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ComputeShaders = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports compute shaders. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_GeometryShaders = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports geometry shaders. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_Tessellation = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports tessellation. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_MeshShaders = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports mesh and amplification shaders. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_RayTracing = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports ray tracing. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_BindlessResources = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports bindless resources. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_OcclusionQueries = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports occlusion queries. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_BinaryOcclusionQueries = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports binary occlusion queries. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_TimestampQueries = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports timestamp queries. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_PipelineStatisticsQueries = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports pipeline statistics queries. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_DurationQueries = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports duration queries. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_DepthBiasClamp = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports depth bias clamp. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_DepthClamp = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports depth clamp. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_IndependentBlend = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports independent blend. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_DualSourceBlend = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports dual-source blend. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_MultiViewport = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports multi-viewport. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_TextureCompressionBC = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports all BC-compressed formats. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_VertexPipelineUAVWritesAndAtomics = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports writes to UAVs as well as atomic operations in vertex, tessellation, and geometry shader stages. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_PixelUAVWritesAndAtomics = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports writes to UAVs as well as atomic operations in pixel shader stage. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_TextureUAVExtendedFormats = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports all the extended UAV texture formats available in the shader code. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ShaderFloat16 = xiiGALDeviceFeatureState::Disabled |
| Indicates if the 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. See https://therealmjp.github.io/posts/shader-fp16/ more info. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ResourceBuffer16BitAccess = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports reading and writing 16-bit floats and integers from buffers bound as shader resource or unordered access views. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_UniformBuffer16BitAccess = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports reading 16-bit floats and integers from uniform buffers. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ShaderInputOutput16 = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports using 16-bit floats and integers as input/output of a shader entry point. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ShaderInt8 = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports native 8-bit integer operations. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ResourceBuffer8BitAccess = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports reading and writing 8-bit types from buffers bound as shader resource or unordered access views. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_UniformBuffer8BitAccess = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports reading 8-bit types from uniform buffers. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ShaderResourceRuntimeArray = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports runtime-sized shader arrays (eg. arrays without a specific size).This feature is always enabled in DirectX12 backend and can optionally be enabled in Vulkan backend. Run-time sized shader arrays are not available in other backends. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_WaveOperation = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports wave operations or (DirectX 12) or subgroups (Vulkan). | |
| xiiEnum< xiiGALDeviceFeatureState > | m_InstanceDataStepRate = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports instance data step rates other than 1. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_NativeFence = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device 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. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_TileShaders = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports tile shaders. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_TransferQueueTimestampQueries = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports timestamp and duration queries in transfer queues. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_VariableRateShading = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports variable rate shading. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_SparseResources = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports sparse (aka. tiled or partially resident) resources. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_SubpassFramebufferFetch = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports framebuffer fetch for input attachments. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_TextureComponentSwizzle = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports texture component swizzle. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_NativeMultiDraw = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports a dedicated command that can be used to issue multiple draw calls with a single command (e.g. vkCmdDrawMultiExt). | |
| xiiEnum< xiiGALDeviceFeatureState > | m_AsynchronousShaderCompilation = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports asynchronous shader compilation. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_VertexShaderRenderTargetArrayIndex = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports SV_RenderTargetArrayIndex semantic in the vertex shader. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_DepthStencilResolve = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports depth/stencil resolve operations. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ExternalMemory = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports shared memory across multiple devices or APIs. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ExternalSemaphore = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports shared semaphores across multiple devices or APIs. | |
| xiiEnum< xiiGALDeviceFeatureState > | m_ExternalFence = xiiGALDeviceFeatureState::Disabled |
| Indicates if the device supports shared fences across multiple devices or APIs. | |
This describes the device features.