Vixen
02b45cc4
csharp
public readonly record struct GraphicsDeviceFeatures

What 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 HasCompute

    Compute shaders and dispatches.

  • public bool HasGeometryShaders

    Geometry shaders.

  • public bool HasTessellation

    Tessellation control and evaluation shaders.

  • public bool HasMeshShaders

    Task and mesh shaders.

  • public bool HasBindless

    A shader may index an unbounded descriptor array.

  • public bool HasMultiDrawIndirect

    One indirect call may issue many draws.

  • public bool HasDrawIndirectCount

    And the number of them may come from a buffer rather than from the host.

  • public bool HasTimelineSemaphores

    Timeline semaphores, rather than binary ones.

  • public bool HasAsyncCompute

    A compute queue that runs in parallel with graphics.

  • public bool HasAsyncTransfer

    A transfer queue that runs in parallel with both.

  • public bool HasSparseResources

    Sparse (partially resident) resources.

  • public bool HasRayTracing

    Acceleration structures and ray queries — doc 19 § L6's genuinely new RHI row.

  • public bool HasFloat64

    Double-precision floats in shaders.

  • public bool HasInt64Atomics

    Atomic operations on 64-bit integers in a storage buffer.

  • public bool HasSubgroupOperations

    Subgroup (wave) operations.

  • public bool HasDynamicRendering

    Rendering without render-pass and framebuffer objects.

  • public bool HasDepthClamp

    Depth values may be clamped rather than clipped.

  • public bool HasWireframe

    Triangles may be drawn as wireframe.

  • public bool HasAnisotropicFiltering

    Anisotropic sampling.

  • public bool HasIndependentBlend

    Each colour attachment may have its own blend state.

  • public bool HasPipelineStatistics

    Pipeline-statistics queries.

  • public bool HasTimestampQueries

    Timestamp queries, which is what a GPU timeline is made of.

  • public float TimestampPeriod

    Nanoseconds per Timestamp tick. Zero without HasTimestampQueries.

  • public bool HasUnifiedMemory

    The CPU and GPU share one memory pool.

  • public int MaxTextureSize

    The largest 2D texture edge, in texels.

  • public int MaxTextureArrayLayers

    The largest array texture layer count.

  • public int MaxColourAttachments

    The largest colour attachment count in one pass.

  • public int MaxVertexBuffers

    The largest bound vertex buffer count.

  • public int MaxDescriptorSets

    The largest bound descriptor set count.

  • public int MaxPushConstantSize

    The largest push-constant block, in bytes.

  • public int MaxBindlessDescriptors

    How many descriptors one unbounded binding may hold. Zero without HasBindless.

  • public float MaxAnisotropy

    The largest anisotropy a sampler may ask for.

  • public (int X, int Y, int Z) MaxComputeWorkgroupSize

    The largest compute workgroup, per dimension.

  • public int SupportedSampleCounts

    Sample counts the device supports for colour attachments, as a bit mask of counts.

  • public static GraphicsDeviceFeatures Minimum

    What 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