public readonly record struct GraphicsDeviceFeaturesWhat a device can do, asked once at creation and never again.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
A flat record struct rather than a query API, because every one of these is fixed for the life of the device and a call per question is a call per frame in code that asks in a loop. Copied by value, compared by value, and cheap enough to keep in a hot struct.
Everything here is capability-gated with a documented fallback, never a hard requirement — except the floor below, which is stated once and enforced at device selection with a readable error rather than discovered as a crash.
Minimum spec: Vulkan 1.1, D3D12 feature level 11_0, GLES 3.0, or WebGL2. Below that Vixen does not run.
Fields and properties (35)
public bool HasComputeCompute shaders and dispatches.
public bool HasGeometryShadersGeometry shaders.
public bool HasTessellationTessellation control and evaluation shaders.
public bool HasMeshShadersTask and mesh shaders.
public bool HasBindlessA shader may index an unbounded descriptor array.
public bool HasMultiDrawIndirectOne indirect call may issue many draws.
public bool HasDrawIndirectCountAnd the number of them may come from a buffer rather than from the host.
public bool HasTimelineSemaphoresTimeline semaphores, rather than binary ones.
public bool HasAsyncComputeA compute queue that runs in parallel with graphics.
public bool HasAsyncTransferA transfer queue that runs in parallel with both.
public bool HasSparseResourcesSparse (partially resident) resources.
public bool HasRayTracingAcceleration structures and ray queries — doc 19 § L6's genuinely new RHI row.
public bool HasFloat64Double-precision floats in shaders.
public bool HasInt64AtomicsAtomic operations on 64-bit integers in a storage buffer.
public bool HasSubgroupOperationsSubgroup (wave) operations.
public bool HasDynamicRenderingRendering without render-pass and framebuffer objects.
public bool HasDepthClampDepth values may be clamped rather than clipped.
public bool HasWireframeTriangles may be drawn as wireframe.
public bool HasAnisotropicFilteringAnisotropic sampling.
public bool HasIndependentBlendEach colour attachment may have its own blend state.
public bool HasPipelineStatisticsPipeline-statistics queries.
public bool HasTimestampQueriesTimestamp queries, which is what a GPU timeline is made of.
public float TimestampPeriodNanoseconds per Timestamp tick. Zero without HasTimestampQueries.
public bool HasUnifiedMemoryThe CPU and GPU share one memory pool.
public int MaxTextureSizeThe largest 2D texture edge, in texels.
public int MaxTextureArrayLayersThe largest array texture layer count.
public int MaxColourAttachmentsThe largest colour attachment count in one pass.
public int MaxVertexBuffersThe largest bound vertex buffer count.
public int MaxDescriptorSetsThe largest bound descriptor set count.
public int MaxPushConstantSizeThe largest push-constant block, in bytes.
public int MaxBindlessDescriptorsHow many descriptors one unbounded binding may hold. Zero without HasBindless.
public float MaxAnisotropyThe largest anisotropy a sampler may ask for.
public (int X, int Y, int Z) MaxComputeWorkgroupSizeThe largest compute workgroup, per dimension.
public int SupportedSampleCountsSample counts the device supports for colour attachments, as a bit mask of counts.
public static GraphicsDeviceFeatures MinimumWhat a backend with nothing but the floor reports: the minimum spec and no more.
Methods (1)
public bool SupportsSampleCount(int samples)Whether a sample count is supported.
Used by (51, showing 40)
- AccelerationStructureDeviceTestsVixen.Graphics.Golden.Tests
- AccelerationStructureTestsVixen.Graphics.Null.Tests
- BindlessFrameTestsVixen.Rendering.Tests
- BindlessSetLayoutTestsVixen.Shaders.Tests
- BindlessTableVixen.Graphics
- BindlessTableDeviceTestsVixen.Graphics.Golden.Tests
- BindlessTableTestsVixen.Graphics.Tests
- CompilesVixen.Rendering.Tests
- DescriptorSetLayoutDescriptionVixen.Graphics
- DrawCompactionTestsVixen.Rendering.Tests
- GlAdapterVixen.Graphics.OpenGL
- GlDeviceVixen.Graphics.OpenGL
- GlDeviceTestsVixen.Graphics.OpenGL.Tests
- GlProfilesVixen.Graphics.OpenGL
- GpuClusterSoftwareRasterVixen.Rendering
- GpuClusterVisibilityVixen.Rendering
- GpuCullingVixen.Rendering
- GpuDrawArgumentsVixen.Rendering
- GpuDrivenCompositorTestsVixen.Rendering.Tests
- GpuVisibilityGroupTestsVixen.Rendering.Tests
- GraphicsDeviceFeaturesTestsVixen.Graphics.Tests
- IGraphicsAdapterVixen.Graphics
- IGraphicsDeviceVixen.Graphics
- MaterialRenderFeatureVixen.Rendering
- NativeWebGpuTestsVixen.Graphics.WebGPU.Tests
- NullAdapterVixen.Graphics.Null
- NullDeviceVixen.Graphics.Null
- NullDeviceOptionsVixen.Graphics.Null
- NullDeviceTestsVixen.Graphics.Null.Tests
- QueryPoolTestsVixen.Graphics.Null.Tests
- TransformRecordTestsVixen.Rendering.Tests
- TransformRenderFeatureVixen.Rendering
- VirtualGeometryGoldenTestsVixen.Graphics.Golden.Tests
- VulkanAdapterVixen.Graphics.Vulkan
- VulkanCommandListVixen.Graphics.Vulkan
- VulkanDeviceVixen.Graphics.Vulkan
- VulkanDeviceTestsVixen.Graphics.Vulkan.Tests
- VulkanFeatureTestsVixen.Graphics.Vulkan.Tests
- VulkanFeaturesVixen.Graphics.Vulkan
- VulkanFormatTestsVixen.Graphics.Vulkan.Tests