API Enumerations

Enumerations define a set of named constants that represent distinct values. In DirectX 12, enumerations are used extensively to specify states, options, and types for various API functions and objects.

Common Enumerations d3d12.h

These are some of the most frequently used enumerations in the DirectX 12 API.

typedef enum D3D12_COMMAND_LIST_TYPE {
    D3D12_COMMAND_LIST_TYPE_DIRECT = 0,
    D3D12_COMMAND_LIST_TYPE_BUNDLE = 1,
    D3D12_COMMAND_LIST_TYPE_COPY = 2,
    D3D12_COMMAND_LIST_TYPE_COMPUTE = 3
} D3D12_COMMAND_LIST_TYPE;

Specifies the type of command list.

typedef enum D3D12_HEAP_TYPE {
    D3D12_HEAP_TYPE_DEFAULT = 1,
    D3D12_HEAP_TYPE_UPLOAD = 2,
    D3D12_HEAP_TYPE_READBACK = 3,
    D3D12_HEAP_TYPE_CUSTOM = 4
} D3D12_HEAP_TYPE;

Describes the memory heap type. This value is used in D3D12_HEAP_PROPERTIES.

typedef enum D3D12_PRIMITIVE_TOPOLOGY_TYPE {
    D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0,
    D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1,
    D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2,
    D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3,
    D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4
} D3D12_PRIMITIVE_TOPOLOGY_TYPE;

Specifies the primitive topology type.

Resource Management Enumerations d3d12.h

Enumerations related to resource creation, state, and usage.

typedef enum D3D12_RESOURCE_DIMENSION {
    D3D12_RESOURCE_DIMENSION_UNKNOWN = 0,
    D3D12_RESOURCE_DIMENSION_BUFFER = 1,
    D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2,
    D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3,
    D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4
} D3D12_RESOURCE_DIMENSION;

Identifies the dimensionality of a resource.

typedef enum D3D12_RESOURCE_STATES {
    D3D12_RESOURCE_STATE_COMMON = 0,
    D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
    D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
    D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
    D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
    D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
    D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
    D3D12_RESOURCE_STATE_COPY_DEST = 0x40,
    D3D12_RESOURCE_STATE_COPY_SOURCE = 0x80,
    D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x100,
    D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x200,
    D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_SAS = 0x400,
    D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE_COPY_SAS = 0x800,
    D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_ACCESS = 0x1000,
    D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x2000,
    D3D12_RESOURCE_STATE_GENERATE_MIPS = 0x4000,
    D3D12_RESOURCE_STATE_NONE = 0xFFFFFFFF
} D3D12_RESOURCE_STATES;

Specifies the states that a resource can be in. This is a bitmask.

Pipeline State Enumerations d3d12.h

Enumerations used for configuring the graphics and compute pipelines.

typedef enum D3D12_FILL_MODE {
    D3D12_FILL_MODE_WIREFRAME = 2,
    D3D12_FILL_MODE_SOLID = 3
} D3D12_FILL_MODE;

Specifies the fill mode for rasterization.

typedef enum D3D12_CULL_MODE {
    D3D12_CULL_MODE_NONE = 0,
    D3D12_CULL_MODE_FRONT = 1,
    D3D12_CULL_MODE_BACK = 2
} D3D12_CULL_MODE;

Specifies the face-culling mode.

Shader Model Enumerations d3d12.h

Defines the shader model versions supported.

typedef enum D3D_SHADER_MODEL {
    D3D_SHADER_MODEL_5_1 = 0x51,
    D3D_SHADER_MODEL_6_0 = 0x60,
    D3D_SHADER_MODEL_6_1 = 0x61,
    D3D_SHADER_MODEL_6_2 = 0x62,
    D3D_SHADER_MODEL_6_3 = 0x63,
    D3D_SHADER_MODEL_6_4 = 0x64,
    D3D_SHADER_MODEL_6_5 = 0x65,
    D3D_SHADER_MODEL_6_6 = 0x66
} D3D_SHADER_MODEL;

Specifies the shader model version.