Make many d3d12 flags enums into bit_set

This commit is contained in:
gingerBill
2022-11-02 16:43:29 +00:00
parent b7ea169c81
commit 765c1546c5
+294 -272
View File
@@ -212,11 +212,12 @@ SHADER_VARIABLE_CLASS :: enum i32 {
INTERFACE_POINTER = 7, INTERFACE_POINTER = 7,
} }
SHADER_VARIABLE_FLAGS :: enum u32 { // TODO: make bit_set SHADER_VARIABLE_FLAGS :: distinct bit_set[SHADER_VARIABLE_FLAG; u32]
USERPACKED = 0x1, SHADER_VARIABLE_FLAG :: enum u32 {
USED = 0x2, USERPACKED = 0,
INTERFACE_POINTER = 0x4, USED = 1,
INTERFACE_PARAMETER = 0x8, INTERFACE_POINTER = 2,
INTERFACE_PARAMETER = 3,
} }
SHADER_VARIABLE_TYPE :: enum i32 { SHADER_VARIABLE_TYPE :: enum i32 {
@@ -280,15 +281,16 @@ SHADER_VARIABLE_TYPE :: enum i32 {
MIN16UINT = 57, MIN16UINT = 57,
} }
SHADER_INPUT_FLAGS :: enum u32 { // TODO: make bit_set SHADER_INPUT_FLAGS :: distinct bit_set[SHADER_INPUT_FLAG; u32]
USERPACKED = 0x1, SHADER_INPUT_FLAG :: enum u32 {
COMPARISON_SAMPLER = 0x2, USERPACKED = 0,
TEXTURE_COMPONENT_0 = 0x4, COMPARISON_SAMPLER = 1,
TEXTURE_COMPONENT_1 = 0x8, TEXTURE_COMPONENT_0 = 2,
TEXTURE_COMPONENTS = 0xc, TEXTURE_COMPONENT_1 = 3,
UNUSED = 0x10, UNUSED = 4,
} }
SHADER_INPUT_TYPE :: enum i32 { SHADER_INPUT_TYPE :: enum i32 {
CBUFFER = 0, CBUFFER = 0,
TBUFFER = 1, TBUFFER = 1,
@@ -306,8 +308,9 @@ SHADER_INPUT_TYPE :: enum i32 {
UAV_FEEDBACKTEXTURE = 13, UAV_FEEDBACKTEXTURE = 13,
} }
SHADER_CBUFFER_FLAGS :: enum u32 { // TODO: make bit_set SHADER_CBUFFER_FLAGS :: distinct bit_set[SHADER_CBUFFER_FLAG; u32]
USERPACKED = 0x1, SHADER_CBUFFER_FLAG :: enum u32 {
USERPACKED = 0,
} }
CBUFFER_TYPE :: enum i32 { CBUFFER_TYPE :: enum i32 {
@@ -410,13 +413,12 @@ INTERPOLATION_MODE :: enum i32 {
LINEAR_NOPERSPECTIVE_SAMPLE = 7, LINEAR_NOPERSPECTIVE_SAMPLE = 7,
} }
PARAMETER_FLAGS :: enum u32 { // TODO: make bit_set PARAMETER_FLAGS :: distinct bit_set[PARAMETER_FLAG; u32]
NONE = 0x0, PARAMETER_FLAG :: enum u32 {
IN = 0x1, IN = 0,
OUT = 0x2, OUT = 1,
} }
GPU_VIRTUAL_ADDRESS :: u64 GPU_VIRTUAL_ADDRESS :: u64
COMMAND_LIST_TYPE :: enum i32 { COMMAND_LIST_TYPE :: enum i32 {
@@ -429,9 +431,9 @@ COMMAND_LIST_TYPE :: enum i32 {
VIDEO_ENCODE = 6, VIDEO_ENCODE = 6,
} }
COMMAND_QUEUE_FLAGS :: enum u32 { // TODO: make bit_set COMMAND_QUEUE_FLAGS :: distinct bit_set[COMMAND_QUEUE_FLAG; u32]
NONE = 0x0, COMMAND_QUEUE_FLAG :: enum u32 {
DISABLE_GPU_TIMEOUT = 0x1, DISABLE_GPU_TIMEOUT = 0,
} }
COMMAND_QUEUE_PRIORITY :: enum i32 { COMMAND_QUEUE_PRIORITY :: enum i32 {
@@ -593,12 +595,19 @@ BLEND_OP :: enum i32 {
MAX = 5, MAX = 5,
} }
COLOR_WRITE_ENABLE :: enum i32 { // TODO: make bit_set COLOR_WRITE_ENABLE_MASK :: distinct bit_set[COLOR_WRITE_ENABLE; u32]
RED = 1,
GREEN = 2, COLOR_WRITE_ENABLE_RED :: COLOR_WRITE_ENABLE_MASK{.RED}
BLUE = 4, COLOR_WRITE_ENABLE_GREEN :: COLOR_WRITE_ENABLE_MASK{.GREEN}
ALPHA = 8, COLOR_WRITE_ENABLE_BLUE :: COLOR_WRITE_ENABLE_MASK{.BLUE}
ALL = 15, COLOR_WRITE_ENABLE_ALPHA :: COLOR_WRITE_ENABLE_MASK{.ALPHA}
COLOR_WRITE_ENABLE_ALL :: COLOR_WRITE_ENABLE_MASK{.RED, .GREEN, .BLUE, .ALPHA}
COLOR_WRITE_ENABLE :: enum i32 {
RED = 0,
GREEN = 1,
BLUE = 2,
ALPHA = 3,
} }
LOGIC_OP :: enum i32 { LOGIC_OP :: enum i32 {
@@ -721,9 +730,9 @@ CACHED_PIPELINE_STATE :: struct {
CachedBlobSizeInBytes: SIZE_T, CachedBlobSizeInBytes: SIZE_T,
} }
PIPELINE_STATE_FLAGS :: enum u32 { // TODO: make bit_set PIPELINE_STATE_FLAGS :: distinct bit_set[PIPELINE_STATE_FLAG; u32]
NONE = 0x0, PIPELINE_STATE_FLAG :: enum u32 {
TOOL_DEBUG = 0x1, TOOL_DEBUG = 0,
} }
GRAPHICS_PIPELINE_STATE_DESC :: struct { GRAPHICS_PIPELINE_STATE_DESC :: struct {
@@ -853,58 +862,61 @@ CONSERVATIVE_RASTERIZATION_TIER :: enum i32 {
_3 = 3, _3 = 3,
} }
FORMAT_SUPPORT1 :: enum i32 { // TODO: make bit_set FORMAT_SUPPORT1 :: distinct bit_set[FORMAT_SUPPORT1_FLAG; u32]
NONE = 0, FORMAT_SUPPORT1_FLAG :: enum i32 {
BUFFER = 1, BUFFER = 0,
IA_VERTEX_BUFFER = 2, IA_VERTEX_BUFFER = 1,
IA_INDEX_BUFFER = 4, IA_INDEX_BUFFER = 2,
SO_BUFFER = 8, SO_BUFFER = 3,
TEXTURE1D = 16, TEXTURE1D = 4,
TEXTURE2D = 32, TEXTURE2D = 5,
TEXTURE3D = 64, TEXTURE3D = 6,
TEXTURECUBE = 128, TEXTURECUBE = 7,
SHADER_LOAD = 256, SHADER_LOAD = 8,
SHADER_SAMPLE = 512, SHADER_SAMPLE = 9,
SHADER_SAMPLE_COMPARISON = 1024, SHADER_SAMPLE_COMPARISON = 10,
SHADER_SAMPLE_MONO_TEXT = 2048, SHADER_SAMPLE_MONO_TEXT = 11,
MIP = 4096, MIP = 12,
RENDER_TARGET = 16384,
BLENDABLE = 32768, RENDER_TARGET = 14,
DEPTH_STENCIL = 65536, BLENDABLE = 15,
MULTISAMPLE_RESOLVE = 262144, DEPTH_STENCIL = 16,
DISPLAY = 524288,
CAST_WITHIN_BIT_LAYOUT = 1048576, MULTISAMPLE_RESOLVE = 18,
MULTISAMPLE_RENDERTARGET = 2097152, DISPLAY = 19,
MULTISAMPLE_LOAD = 4194304, CAST_WITHIN_BIT_LAYOUT = 20,
SHADER_GATHER = 8388608, MULTISAMPLE_RENDERTARGET = 21,
BACK_BUFFER_CAST = 16777216, MULTISAMPLE_LOAD = 22,
TYPED_UNORDERED_ACCESS_VIEW = 33554432, SHADER_GATHER = 23,
SHADER_GATHER_COMPARISON = 67108864, BACK_BUFFER_CAST = 24,
DECODER_OUTPUT = 134217728, TYPED_UNORDERED_ACCESS_VIEW = 25,
VIDEO_PROCESSOR_OUTPUT = 268435456, SHADER_GATHER_COMPARISON = 26,
VIDEO_PROCESSOR_INPUT = 536870912, DECODER_OUTPUT = 27,
VIDEO_ENCODER = 1073741824, VIDEO_PROCESSOR_OUTPUT = 28,
VIDEO_PROCESSOR_INPUT = 29,
VIDEO_ENCODER = 30,
} }
FORMAT_SUPPORT2 :: enum i32 { // TODO: make bit_set FORMAT_SUPPORT2 :: distinct bit_set[FORMAT_SUPPORT2_FLAG; u32]
NONE = 0, FORMAT_SUPPORT2_FLAG :: enum i32 {
UAV_ATOMIC_ADD = 1, UAV_ATOMIC_ADD = 0,
UAV_ATOMIC_BITWISE_OPS = 2, UAV_ATOMIC_BITWISE_OPS = 1,
UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 4, UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 2,
UAV_ATOMIC_EXCHANGE = 8, UAV_ATOMIC_EXCHANGE = 3,
UAV_ATOMIC_SIGNED_MIN_OR_MAX = 16, UAV_ATOMIC_SIGNED_MIN_OR_MAX = 4,
UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 32, UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 5,
UAV_TYPED_LOAD = 64, UAV_TYPED_LOAD = 6,
UAV_TYPED_STORE = 128, UAV_TYPED_STORE = 7,
OUTPUT_MERGER_LOGIC_OP = 256, OUTPUT_MERGER_LOGIC_OP = 8,
TILED = 512, TILED = 9,
MULTIPLANE_OVERLAY = 16384,
SAMPLER_FEEDBACK = 32768, MULTIPLANE_OVERLAY = 14,
SAMPLER_FEEDBACK = 15,
} }
MULTISAMPLE_QUALITY_LEVEL_FLAGS :: enum u32 { // TODO: make bit_set MULTISAMPLE_QUALITY_LEVEL_FLAGS :: distinct bit_set[MULTISAMPLE_QUALITY_LEVEL_FLAG; u32]
NONE = 0x0, MULTISAMPLE_QUALITY_LEVEL_FLAG :: enum u32 {
TILED_RESOURCE = 0x1, TILED_RESOURCE = 0,
} }
CROSS_NODE_SHARING_TIER :: enum i32 { CROSS_NODE_SHARING_TIER :: enum i32 {
@@ -1034,12 +1046,12 @@ FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT :: struct {
MaxGPUVirtualAddressBitsPerProcess: u32, MaxGPUVirtualAddressBitsPerProcess: u32,
} }
SHADER_CACHE_SUPPORT_FLAGS :: enum u32 { // TODO: make bit_set SHADER_CACHE_SUPPORT_FLAGS :: distinct bit_set[SHADER_CACHE_SUPPORT_FLAG; u32]
NONE = 0x0, SHADER_CACHE_SUPPORT_FLAG :: enum u32 {
SINGLE_PSO = 0x1, SINGLE_PSO = 0,
LIBRARY = 0x2, LIBRARY = 1,
AUTOMATIC_INPROC_CACHE = 0x4, AUTOMATIC_INPROC_CACHE = 2,
AUTOMATIC_DISK_CACHE = 0x8, AUTOMATIC_DISK_CACHE = 3,
} }
FEATURE_DATA_SHADER_CACHE :: struct { FEATURE_DATA_SHADER_CACHE :: struct {
@@ -1052,15 +1064,15 @@ FEATURE_DATA_COMMAND_QUEUE_PRIORITY :: struct {
PriorityForTypeIsSupported: BOOL, PriorityForTypeIsSupported: BOOL,
} }
COMMAND_LIST_SUPPORT_FLAGS :: enum u32 { // TODO: make bit_set COMMAND_LIST_SUPPORT_FLAGS :: distinct bit_set[COMMAND_LIST_SUPPORT_FLAG; u32]
NONE = 0x0, COMMAND_LIST_SUPPORT_FLAG :: enum u32 {
DIRECT = 0x1, DIRECT = 0,
BUNDLE = 0x2, BUNDLE = 1,
COMPUTE = 0x4, COMPUTE = 2,
COPY = 0x8, COPY = 3,
VIDEO_DECODE = 0x10, VIDEO_DECODE = 4,
VIDEO_PROCESS = 0x20, VIDEO_PROCESS = 5,
VIDEO_ENCODE = 0x40, VIDEO_ENCODE = 6,
} }
FEATURE_DATA_OPTIONS3 :: struct { FEATURE_DATA_OPTIONS3 :: struct {
@@ -1198,25 +1210,26 @@ HEAP_PROPERTIES :: struct {
VisibleNodeMask: u32, VisibleNodeMask: u32,
} }
HEAP_FLAGS :: enum u32 { // TODO: make bit_set ??? HEAP_FLAGS :: distinct bit_set[HEAP_FLAG; u32]
NONE = 0x0, HEAP_FLAG :: enum u32 {
SHARED = 0x1, SHARED = 0,
DENY_BUFFERS = 0x4, DENY_BUFFERS = 2,
ALLOW_DISPLAY = 0x8, ALLOW_DISPLAY = 3,
SHARED_CROSS_ADAPTER = 0x20, SHARED_CROSS_ADAPTER = 5,
DENY_RT_DS_TEXTURES = 0x40, DENY_RT_DS_TEXTURES = 6,
DENY_NON_RT_DS_TEXTURES = 0x80, DENY_NON_RT_DS_TEXTURES = 7,
HARDWARE_PROTECTED = 0x100, HARDWARE_PROTECTED = 8,
ALLOW_WRITE_WATCH = 0x200, ALLOW_WRITE_WATCH = 9,
ALLOW_SHADER_ATOMICS = 0x400, ALLOW_SHADER_ATOMICS = 10,
CREATE_NOT_RESIDENT = 0x800, CREATE_NOT_RESIDENT = 11,
CREATE_NOT_ZEROED = 0x1000, CREATE_NOT_ZEROED = 12,
ALLOW_ALL_BUFFERS_AND_TEXTURES = 0x0,
ALLOW_ONLY_BUFFERS = 0xc0,
ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44,
ALLOW_ONLY_RT_DS_TEXTURES = 0x84,
} }
HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES :: HEAP_FLAGS{}
HEAP_FLAG_ALLOW_ONLY_BUFFERS :: HEAP_FLAGS{.DENY_BUFFERS, .ALLOW_DISPLAY}
HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES :: HEAP_FLAGS{.DENY_BUFFERS, .DENY_RT_DS_TEXTURES}
HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES :: HEAP_FLAGS{.DENY_BUFFERS, .DENY_NON_RT_DS_TEXTURES}
HEAP_DESC :: struct { HEAP_DESC :: struct {
SizeInBytes: u64, SizeInBytes: u64,
Properties: HEAP_PROPERTIES, Properties: HEAP_PROPERTIES,
@@ -1239,15 +1252,15 @@ TEXTURE_LAYOUT :: enum i32 {
_64KB_STANDARD_SWIZZLE = 3, _64KB_STANDARD_SWIZZLE = 3,
} }
RESOURCE_FLAGS :: enum u32 { // TODO: make bit_set RESOURCE_FLAGS :: distinct bit_set[RESOURCE_FLAG; u32]
NONE = 0x0, RESOURCE_FLAG :: enum u32 {
ALLOW_RENDER_TARGET = 0x1, ALLOW_RENDER_TARGET = 0,
ALLOW_DEPTH_STENCIL = 0x2, ALLOW_DEPTH_STENCIL = 1,
ALLOW_UNORDERED_ACCESS = 0x4, ALLOW_UNORDERED_ACCESS = 2,
DENY_SHADER_RESOURCE = 0x8, DENY_SHADER_RESOURCE = 3,
ALLOW_CROSS_ADAPTER = 0x10, ALLOW_CROSS_ADAPTER = 4,
ALLOW_SIMULTANEOUS_ACCESS = 0x20, ALLOW_SIMULTANEOUS_ACCESS = 5,
VIDEO_DECODE_REFERENCE_ONLY = 0x40, VIDEO_DECODE_REFERENCE_ONLY = 6,
} }
MIP_REGION :: struct { MIP_REGION :: struct {
@@ -1332,11 +1345,11 @@ TILE_REGION_SIZE :: struct {
Depth: u16, Depth: u16,
} }
TILE_RANGE_FLAGS :: enum u32 { // TODO: make bit_set TILE_RANGE_FLAGS :: distinct bit_set[TILE_RANGE_FLAG; u32]
NONE = 0x0, TILE_RANGE_FLAG :: enum u32 {
NULL = 0x1, NULL = 0,
SKIP = 0x2, SKIP = 1,
REUSE_SINGLE_TILE = 0x4, REUSE_SINGLE_TILE = 2,
} }
SUBRESOURCE_TILING :: struct { SUBRESOURCE_TILING :: struct {
@@ -1359,12 +1372,13 @@ PACKED_MIP_INFO :: struct {
StartTileIndexInOverallResource: u32, StartTileIndexInOverallResource: u32,
} }
TILE_MAPPING_FLAGS :: enum u32 { // TODO: make bit_set TILE_MAPPING_FLAGS :: distinct bit_set[TILE_MAPPING_FLAG; u32]
NONE = 0x0, TILE_MAPPING_FLAG :: enum u32 {
NO_HAZARD = 0x1, NO_HAZARD = 0,
} }
TILE_COPY_FLAGS :: enum u32 { // TODO: make bit_set TILE_COPY_FLAGS :: distinct bit_set[TILE_COPY_FLAG; u32]
TILE_COPY_FLAG :: enum u32 {
NONE = 0x0, NONE = 0x0,
NO_HAZARD = 0x1, NO_HAZARD = 0x1,
LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2,
@@ -1422,10 +1436,10 @@ RESOURCE_UAV_BARRIER :: struct {
pResource: ^IResource, pResource: ^IResource,
} }
RESOURCE_BARRIER_FLAGS :: enum u32 { // TODO: make bit_set RESOURCE_BARRIER_FLAGS :: distinct bit_set[RESOURCE_BARRIER_FLAG; u32]
NONE = 0x0, RESOURCE_BARRIER_FLAG :: enum u32 {
BEGIN_ONLY = 0x1, BEGIN_ONLY = 0,
END_ONLY = 0x2, END_ONLY = 1,
} }
RESOURCE_BARRIER :: struct { RESOURCE_BARRIER :: struct {
@@ -1484,9 +1498,9 @@ VIEW_INSTANCE_LOCATION :: struct {
RenderTargetArrayIndex: u32, RenderTargetArrayIndex: u32,
} }
VIEW_INSTANCING_FLAGS :: enum u32 { // TODO: make bit_set VIEW_INSTANCING_FLAGS :: distinct bit_set[VIEW_INSTANCING_FLAG; u32]
NONE = 0x0, VIEW_INSTANCING_FLAG :: enum u32 {
ENABLE_VIEW_INSTANCE_MASKING = 0x1, ENABLE_VIEW_INSTANCE_MASKING = 0,
} }
VIEW_INSTANCING_DESC :: struct { VIEW_INSTANCING_DESC :: struct {
@@ -1504,9 +1518,9 @@ SHADER_COMPONENT_MAPPING :: enum i32 {
FORCE_VALUE_1 = 5, FORCE_VALUE_1 = 5,
} }
BUFFER_SRV_FLAGS :: enum u32 { // TODO: make bit_set BUFFER_SRV_FLAGS :: distinct bit_set[BUFFER_SRV_FLAG; u32]
NONE = 0x0, BUFFER_SRV_FLAG :: enum u32 {
RAW = 0x1, RAW = 0,
} }
BUFFER_SRV :: struct { BUFFER_SRV :: struct {
@@ -1675,9 +1689,9 @@ SAMPLER_DESC :: struct {
MaxLOD: f32, MaxLOD: f32,
} }
BUFFER_UAV_FLAGS :: enum u32 { // TODO: make bit_set BUFFER_UAV_FLAGS :: distinct bit_set[BUFFER_UAV_FLAG; u32]
NONE = 0x0, BUFFER_UAV_FLAG :: enum u32 {
RAW = 0x1, RAW = 0,
} }
BUFFER_UAV :: struct { BUFFER_UAV :: struct {
@@ -1837,10 +1851,10 @@ TEX2DMS_ARRAY_DSV :: struct {
ArraySize: u32, ArraySize: u32,
} }
DSV_FLAGS :: enum u32 { // TODO: make bit_set DSV_FLAGS :: distinct bit_set[DSV_FLAG; u32]
NONE = 0x0, DSV_FLAG :: enum u32 {
READ_ONLY_DEPTH = 0x1, READ_ONLY_DEPTH = 0,
READ_ONLY_STENCIL = 0x2, READ_ONLY_STENCIL = 1,
} }
DSV_DIMENSION :: enum i32 { DSV_DIMENSION :: enum i32 {
@@ -1867,16 +1881,17 @@ DEPTH_STENCIL_VIEW_DESC :: struct {
}, },
} }
CLEAR_FLAGS :: enum u32 { // TODO: make bit_set CLEAR_FLAGS :: distinct bit_set[CLEAR_FLAG; u32]
DEPTH = 0x1, CLEAR_FLAG :: enum u32 {
STENCIL = 0x2, DEPTH = 0,
STENCIL = 1,
} }
FENCE_FLAGS :: enum u32 { // TODO: make bit_set FENCE_FLAGS :: distinct bit_set[FENCE_FLAG; u32]
NONE = 0x0, FENCE_FLAG :: enum u32 {
SHARED = 0x1, SHARED = 0,
SHARED_CROSS_ADAPTER = 0x2, SHARED_CROSS_ADAPTER = 1,
NON_MONITORED = 0x4, NON_MONITORED = 2,
} }
DESCRIPTOR_HEAP_TYPE :: enum i32 { DESCRIPTOR_HEAP_TYPE :: enum i32 {
@@ -1887,9 +1902,9 @@ DESCRIPTOR_HEAP_TYPE :: enum i32 {
NUM_TYPES = 4, NUM_TYPES = 4,
} }
DESCRIPTOR_HEAP_FLAGS :: enum u32 { // TODO: make bit_set DESCRIPTOR_HEAP_FLAGS :: distinct bit_set[DESCRIPTOR_HEAP_FLAG; u32]
NONE = 0x0, DESCRIPTOR_HEAP_FLAG :: enum u32 {
SHADER_VISIBLE = 0x1, SHADER_VISIBLE = 0,
} }
DESCRIPTOR_HEAP_DESC :: struct { DESCRIPTOR_HEAP_DESC :: struct {
@@ -1959,18 +1974,18 @@ ROOT_PARAMETER :: struct {
ShaderVisibility: SHADER_VISIBILITY, ShaderVisibility: SHADER_VISIBILITY,
} }
ROOT_SIGNATURE_FLAGS :: enum u32 { // TODO: make bit_set ROOT_SIGNATURE_FLAGS :: distinct bit_set[ROOT_SIGNATURE_FLAG; u32]
NONE = 0x0, ROOT_SIGNATURE_FLAG :: enum u32 {
ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1, ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0,
DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2, DENY_VERTEX_SHADER_ROOT_ACCESS = 1,
DENY_HULL_SHADER_ROOT_ACCESS = 0x4, DENY_HULL_SHADER_ROOT_ACCESS = 2,
DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8, DENY_DOMAIN_SHADER_ROOT_ACCESS = 3,
DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10, DENY_GEOMETRY_SHADER_ROOT_ACCESS = 4,
DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20, DENY_PIXEL_SHADER_ROOT_ACCESS = 5,
ALLOW_STREAM_OUTPUT = 0x40, ALLOW_STREAM_OUTPUT = 6,
LOCAL_ROOT_SIGNATURE = 0x80, LOCAL_ROOT_SIGNATURE = 7,
DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100, DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 8,
DENY_MESH_SHADER_ROOT_ACCESS = 0x200, DENY_MESH_SHADER_ROOT_ACCESS = 9,
} }
STATIC_BORDER_COLOR :: enum i32 { STATIC_BORDER_COLOR :: enum i32 {
@@ -2003,13 +2018,13 @@ ROOT_SIGNATURE_DESC :: struct {
Flags: ROOT_SIGNATURE_FLAGS, Flags: ROOT_SIGNATURE_FLAGS,
} }
DESCRIPTOR_RANGE_FLAGS :: enum u32 { // TODO: make bit_set DESCRIPTOR_RANGE_FLAGS :: distinct bit_set[DESCRIPTOR_RANGE_FLAG; u32]
NONE = 0x0, DESCRIPTOR_RANGE_FLAG :: enum u32 {
DESCRIPTORS_VOLATILE = 0x1, DESCRIPTORS_VOLATILE = 0,
DATA_VOLATILE = 0x2, DATA_VOLATILE = 1,
DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4, DATA_STATIC_WHILE_SET_AT_EXECUTE = 2,
DATA_STATIC = 0x8, DATA_STATIC = 3,
DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000, DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 16,
} }
DESCRIPTOR_RANGE1 :: struct { DESCRIPTOR_RANGE1 :: struct {
@@ -2026,11 +2041,11 @@ ROOT_DESCRIPTOR_TABLE1 :: struct {
pDescriptorRanges: ^DESCRIPTOR_RANGE1, pDescriptorRanges: ^DESCRIPTOR_RANGE1,
} }
ROOT_DESCRIPTOR_FLAGS :: enum u32 { // TODO: make bit_set ROOT_DESCRIPTOR_FLAGS :: distinct bit_set[ROOT_DESCRIPTOR_FLAG; u32]
NONE = 0x0, ROOT_DESCRIPTOR_FLAG :: enum u32 {
DATA_VOLATILE = 0x2, DATA_VOLATILE = 2,
DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4, DATA_STATIC_WHILE_SET_AT_EXECUTE = 3,
DATA_STATIC = 0x8, DATA_STATIC = 4,
} }
ROOT_DESCRIPTOR1 :: struct { ROOT_DESCRIPTOR1 :: struct {
@@ -2571,11 +2586,13 @@ IPipelineLibrary1_VTable :: struct {
LoadPipeline: proc "stdcall" (this: ^IPipelineLibrary1, pName: [^]u16, pDesc: ^PIPELINE_STATE_STREAM_DESC, riid: ^IID, ppPipelineState: ^rawptr) -> HRESULT, LoadPipeline: proc "stdcall" (this: ^IPipelineLibrary1, pName: [^]u16, pDesc: ^PIPELINE_STATE_STREAM_DESC, riid: ^IID, ppPipelineState: ^rawptr) -> HRESULT,
} }
MULTIPLE_FENCE_WAIT_FLAGS :: enum u32 { // TODO: make bit_set MULTIPLE_FENCE_WAIT_FLAGS :: distinct bit_set[MULTIPLE_FENCE_WAIT_FLAG; u32]
NONE = 0x0, MULTIPLE_FENCE_WAIT_FLAG :: enum u32 {
ANY = 0x1, ANY = 0,
ALL = 0x0,
} }
MULTIPLE_FENCE_WAIT_FLAG_NONE :: MULTIPLE_FENCE_WAIT_FLAGS{}
MULTIPLE_FENCE_WAIT_FLAG_ANY :: MULTIPLE_FENCE_WAIT_FLAGS{.ANY}
MULTIPLE_FENCE_WAIT_FLAG_ALL :: MULTIPLE_FENCE_WAIT_FLAGS{}
RESIDENCY_PRIORITY :: enum i32 { RESIDENCY_PRIORITY :: enum i32 {
MINIMUM = 671088640, MINIMUM = 671088640,
@@ -2611,9 +2628,9 @@ IDevice2_VTable :: struct {
CreatePipelineState: proc "stdcall" (this: ^IDevice2, pDesc: ^PIPELINE_STATE_STREAM_DESC, riid: ^IID, ppPipelineState: ^rawptr) -> HRESULT, CreatePipelineState: proc "stdcall" (this: ^IDevice2, pDesc: ^PIPELINE_STATE_STREAM_DESC, riid: ^IID, ppPipelineState: ^rawptr) -> HRESULT,
} }
RESIDENCY_FLAGS :: enum u32 { // TODO: make bit_set RESIDENCY_FLAGS :: distinct bit_set[RESIDENCY_FLAG; u32]
NONE = 0x0, RESIDENCY_FLAG :: enum u32 {
DENY_OVERBUDGET = 0x1, DENY_OVERBUDGET = 0,
} }
@@ -2630,16 +2647,16 @@ IDevice3_VTable :: struct {
EnqueueMakeResident: proc "stdcall" (this: ^IDevice3, Flags: RESIDENCY_FLAGS, NumObjects: u32, ppObjects: ^^IPageable, pFenceToSignal: ^IFence, FenceValueToSignal: u64) -> HRESULT, EnqueueMakeResident: proc "stdcall" (this: ^IDevice3, Flags: RESIDENCY_FLAGS, NumObjects: u32, ppObjects: ^^IPageable, pFenceToSignal: ^IFence, FenceValueToSignal: u64) -> HRESULT,
} }
COMMAND_LIST_FLAGS :: enum u32 { // TODO: make bit_set COMMAND_LIST_FLAGS :: distinct bit_set[COMMAND_LIST_FLAG; u32]
COMMAND_LIST_FLAG_NONE = 0x0, COMMAND_LIST_FLAG :: enum u32 {
} }
COMMAND_POOL_FLAGS :: enum u32 { // TODO: make bit_set COMMAND_POOL_FLAGS :: distinct bit_set[COMMAND_POOL_FLAG; u32]
COMMAND_POOL_FLAG_NONE = 0x0, COMMAND_POOL_FLAG :: enum u32 {
} }
COMMAND_RECORDER_FLAGS :: enum u32 { // TODO: make bit_set COMMAND_RECORDER_FLAGS :: distinct bit_set[COMMAND_RECORDER_FLAG; u32]
COMMAND_RECORDER_FLAG_NONE = 0x0, COMMAND_RECORDER_FLAG :: enum u32 {
} }
PROTECTED_SESSION_STATUS :: enum i32 { PROTECTED_SESSION_STATUS :: enum i32 {
@@ -2660,9 +2677,9 @@ IProtectedSession_VTable :: struct {
GetSessionStatus: proc "stdcall" (this: ^IProtectedSession) -> PROTECTED_SESSION_STATUS, GetSessionStatus: proc "stdcall" (this: ^IProtectedSession) -> PROTECTED_SESSION_STATUS,
} }
PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS :: enum u32 { // TODO: make bit_set PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS :: distinct bit_set[PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG; u32]
NONE = 0x0, PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG :: enum u32 {
SUPPORTED = 0x1, SUPPORTED = 0,
} }
FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT :: struct { FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT :: struct {
@@ -2670,8 +2687,8 @@ FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT :: struct {
Support: PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS, Support: PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS,
} }
PROTECTED_RESOURCE_SESSION_FLAGS :: enum u32 { // TODO: make bit_set PROTECTED_RESOURCE_SESSION_FLAGS :: distinct bit_set[PROTECTED_RESOURCE_SESSION_FLAG; u32]
PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0x0, PROTECTED_RESOURCE_SESSION_FLAG :: enum u32 {
} }
PROTECTED_RESOURCE_SESSION_DESC :: struct { PROTECTED_RESOURCE_SESSION_DESC :: struct {
@@ -2760,9 +2777,10 @@ META_COMMAND_PARAMETER_TYPE :: enum i32 {
GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4, GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4,
} }
META_COMMAND_PARAMETER_FLAGS :: enum u32 { // TODO: make bit_set META_COMMAND_PARAMETER_FLAGS :: distinct bit_set[META_COMMAND_PARAMETER_FLAG; u32]
INPUT = 0x1, META_COMMAND_PARAMETER_FLAG :: enum u32 {
OUTPUT = 0x2, INPUT = 0,
OUTPUT = 1,
} }
META_COMMAND_PARAMETER_STAGE :: enum i32 { META_COMMAND_PARAMETER_STAGE :: enum i32 {
@@ -2850,11 +2868,11 @@ STATE_SUBOBJECT :: struct {
pDesc: rawptr, pDesc: rawptr,
} }
STATE_OBJECT_FLAGS :: enum u32 { // TODO: make bit_set STATE_OBJECT_FLAGS :: distinct bit_set[STATE_OBJECT_FLAG; u32]
NONE = 0x0, STATE_OBJECT_FLAG :: enum u32 {
ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1, ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0,
ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2, ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 1,
ALLOW_STATE_OBJECT_ADDITIONS = 0x4, ALLOW_STATE_OBJECT_ADDITIONS = 2,
} }
STATE_OBJECT_CONFIG :: struct { STATE_OBJECT_CONFIG :: struct {
@@ -2873,8 +2891,8 @@ NODE_MASK :: struct {
NodeMask: u32, NodeMask: u32,
} }
EXPORT_FLAGS :: enum u32 { // TODO: make bit_set EXPORT_FLAGS :: distinct bit_set[EXPORT_FLAG; u32]
EXPORT_FLAG_NONE = 0x0, EXPORT_FLAG :: enum u32 {
} }
EXPORT_DESC :: struct { EXPORT_DESC :: struct {
@@ -2929,10 +2947,10 @@ RAYTRACING_PIPELINE_CONFIG :: struct {
MaxTraceRecursionDepth: u32, MaxTraceRecursionDepth: u32,
} }
RAYTRACING_PIPELINE_FLAGS :: enum u32 { // TODO: make bit_set RAYTRACING_PIPELINE_FLAGS :: distinct bit_set[RAYTRACING_PIPELINE_FLAG; u32]
NONE = 0x0, RAYTRACING_PIPELINE_FLAG :: enum u32 {
SKIP_TRIANGLES = 0x100, SKIP_TRIANGLES = 8,
SKIP_PROCEDURAL_PRIMITIVES = 0x200, SKIP_PROCEDURAL_PRIMITIVES = 9,
} }
RAYTRACING_PIPELINE_CONFIG1 :: struct { RAYTRACING_PIPELINE_CONFIG1 :: struct {
@@ -2951,10 +2969,10 @@ STATE_OBJECT_DESC :: struct {
pSubobjects: ^STATE_SUBOBJECT, pSubobjects: ^STATE_SUBOBJECT,
} }
RAYTRACING_GEOMETRY_FLAGS :: enum u32 { // TODO: make bit_set RAYTRACING_GEOMETRY_FLAGS :: distinct bit_set[RAYTRACING_GEOMETRY_FLAG; u32]
NONE = 0x0, RAYTRACING_GEOMETRY_FLAG :: enum u32 {
OPAQUE = 0x1, OPAQUE = 0,
NO_DUPLICATE_ANYHIT_INVOCATION = 0x2, NO_DUPLICATE_ANYHIT_INVOCATION = 1,
} }
RAYTRACING_GEOMETRY_TYPE :: enum i32 { RAYTRACING_GEOMETRY_TYPE :: enum i32 {
@@ -2962,12 +2980,12 @@ RAYTRACING_GEOMETRY_TYPE :: enum i32 {
PROCEDURAL_PRIMITIVE_AABBS = 1, PROCEDURAL_PRIMITIVE_AABBS = 1,
} }
RAYTRACING_INSTANCE_FLAGS :: enum u32 { // TODO: make bit_set RAYTRACING_INSTANCE_FLAGS :: distinct bit_set[RAYTRACING_INSTANCE_FLAG; u32]
NONE = 0x0, RAYTRACING_INSTANCE_FLAG :: enum u32 {
TRIANGLE_CULL_DISABLE = 0x1, TRIANGLE_CULL_DISABLE = 0,
TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2, TRIANGLE_FRONT_COUNTERCLOCKWISE = 1,
FORCE_OPAQUE = 0x4, FORCE_OPAQUE = 2,
FORCE_NON_OPAQUE = 0x8, FORCE_NON_OPAQUE = 3,
} }
GPU_VIRTUAL_ADDRESS_AND_STRIDE :: struct { GPU_VIRTUAL_ADDRESS_AND_STRIDE :: struct {
@@ -3010,14 +3028,14 @@ RAYTRACING_GEOMETRY_AABBS_DESC :: struct {
AABBs: GPU_VIRTUAL_ADDRESS_AND_STRIDE, AABBs: GPU_VIRTUAL_ADDRESS_AND_STRIDE,
} }
RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS :: enum u32 { // TODO: make bit_set RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS :: distinct bit_set[RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG; u32]
NONE = 0x0, RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG :: enum u32 {
ALLOW_UPDATE = 0x1, ALLOW_UPDATE = 0,
ALLOW_COMPACTION = 0x2, ALLOW_COMPACTION = 1,
PREFER_FAST_TRACE = 0x4, PREFER_FAST_TRACE = 2,
PREFER_FAST_BUILD = 0x8, PREFER_FAST_BUILD = 3,
MINIMIZE_MEMORY = 0x10, MINIMIZE_MEMORY = 4,
PERFORM_UPDATE = 0x20, PERFORM_UPDATE = 5,
} }
RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE :: enum i32 { RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE :: enum i32 {
@@ -3137,18 +3155,18 @@ RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO :: struct {
UpdateScratchDataSizeInBytes: u64, UpdateScratchDataSizeInBytes: u64,
} }
RAY_FLAGS :: enum u32 { // TODO: make bit_set RAY_FLAGS :: distinct bit_set[RAY_FLAG; u32]
NONE = 0x0, RAY_FLAG :: enum u32 {
FORCE_OPAQUE = 0x1, FORCE_OPAQUE = 0,
FORCE_NON_OPAQUE = 0x2, FORCE_NON_OPAQUE = 1,
ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4, ACCEPT_FIRST_HIT_AND_END_SEARCH = 2,
SKIP_CLOSEST_HIT_SHADER = 0x8, SKIP_CLOSEST_HIT_SHADER = 3,
CULL_BACK_FACING_TRIANGLES = 0x10, CULL_BACK_FACING_TRIANGLES = 4,
CULL_FRONT_FACING_TRIANGLES = 0x20, CULL_FRONT_FACING_TRIANGLES = 5,
CULL_OPAQUE = 0x40, CULL_OPAQUE = 6,
CULL_NON_OPAQUE = 0x80, CULL_NON_OPAQUE = 7,
SKIP_TRIANGLES = 0x100, SKIP_TRIANGLES = 8,
SKIP_PROCEDURAL_PRIMITIVES = 0x200, SKIP_PROCEDURAL_PRIMITIVES = 9,
} }
HIT_KIND :: enum i32 { HIT_KIND :: enum i32 {
@@ -3260,10 +3278,10 @@ DRED_VERSION :: enum i32 {
_1_2 = 3, _1_2 = 3,
} }
DRED_FLAGS :: enum u32 { // TODO: make bit_set DRED_FLAGS :: distinct bit_set[DRED_FLAG; u32]
NONE = 0x0, DRED_FLAG :: enum u32 {
FORCE_ENABLE = 0x1, FORCE_ENABLE = 0,
DISABLE_AUTOBREADCRUMBS = 0x2, DISABLE_AUTOBREADCRUMBS = 1,
} }
DRED_ENABLEMENT :: enum i32 { DRED_ENABLEMENT :: enum i32 {
@@ -3611,11 +3629,11 @@ RENDER_PASS_DEPTH_STENCIL_DESC :: struct {
StencilEndingAccess: RENDER_PASS_ENDING_ACCESS, StencilEndingAccess: RENDER_PASS_ENDING_ACCESS,
} }
RENDER_PASS_FLAGS :: enum u32 { // TODO: make bit_set RENDER_PASS_FLAGS :: distinct bit_set[RENDER_PASS_FLAG; u32]
NONE = 0x0, RENDER_PASS_FLAG :: enum u32 {
ALLOW_UAV_WRITES = 0x1, ALLOW_UAV_WRITES = 0,
SUSPENDING_PASS = 0x2, SUSPENDING_PASS = 1,
RESUMING_PASS = 0x4, RESUMING_PASS = 2,
} }
@@ -3697,9 +3715,9 @@ IDebug_VTable :: struct {
EnableDebugLayer: proc "stdcall" (this: ^IDebug), EnableDebugLayer: proc "stdcall" (this: ^IDebug),
} }
GPU_BASED_VALIDATION_FLAGS :: enum u32 { // TODO: make bit_set GPU_BASED_VALIDATION_FLAGS :: distinct bit_set[GPU_BASED_VALIDATION_FLAG; u32]
NONE = 0x0, GPU_BASED_VALIDATION_FLAG :: enum u32 {
DISABLE_STATE_TRACKING = 0x1, DISABLE_STATE_TRACKING = 0,
} }
@@ -3741,11 +3759,11 @@ IDebug3_VTable :: struct {
SetGPUBasedValidationFlags: proc "stdcall" (this: ^IDebug3, Flags: GPU_BASED_VALIDATION_FLAGS), SetGPUBasedValidationFlags: proc "stdcall" (this: ^IDebug3, Flags: GPU_BASED_VALIDATION_FLAGS),
} }
RLDO_FLAGS :: enum u32 { // TODO: make bit_set RLDO_FLAGS :: distinct bit_set[RLDO_FLAG; u32]
NONE = 0x0, RLDO_FLAG :: enum u32 {
SUMMARY = 0x1, SUMMARY = 0,
DETAIL = 0x2, DETAIL = 1,
IGNORE_INTERNAL = 0x4, IGNORE_INTERNAL = 2,
} }
DEBUG_DEVICE_PARAMETER_TYPE :: enum i32 { DEBUG_DEVICE_PARAMETER_TYPE :: enum i32 {
@@ -3754,12 +3772,12 @@ DEBUG_DEVICE_PARAMETER_TYPE :: enum i32 {
GPU_SLOWDOWN_PERFORMANCE_FACTOR = 2, GPU_SLOWDOWN_PERFORMANCE_FACTOR = 2,
} }
DEBUG_FEATURE :: enum i32 { // TODO: make bit_set DEBUG_FEATURE :: distinct bit_set[DEBUG_FEATURE_FLAG; u32]
NONE = 0, DEBUG_FEATURE_FLAG :: enum i32 {
ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 1, ALLOW_BEHAVIOR_CHANGING_DEBUG_AIDS = 0,
CONSERVATIVE_RESOURCE_STATE_TRACKING = 2, CONSERVATIVE_RESOURCE_STATE_TRACKING = 1,
DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 4, DISABLE_VIRTUALIZED_BUNDLES_VALIDATION = 2,
EMULATE_WINDOWS7 = 8, EMULATE_WINDOWS7 = 3,
} }
GPU_BASED_VALIDATION_SHADER_PATCH_MODE :: enum i32 { GPU_BASED_VALIDATION_SHADER_PATCH_MODE :: enum i32 {
@@ -3770,12 +3788,16 @@ GPU_BASED_VALIDATION_SHADER_PATCH_MODE :: enum i32 {
NUM_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = 4, NUM_GPU_BASED_VALIDATION_SHADER_PATCH_MODES = 4,
} }
GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS :: enum u32 { // TODO: make bit_set GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS :: distinct bit_set[GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG; u32]
GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_NONE = 0x0, GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG :: enum u32 {
GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0x1, FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS = 0,
GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 0x2, FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS = 1,
GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 0x4, FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS = 2,
VALID_MASK = 0x7, }
GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAG_VALID_MASK :: GPU_BASED_VALIDATION_PIPELINE_STATE_CREATE_FLAGS{
.FRONT_LOAD_CREATE_TRACKING_ONLY_SHADERS,
.FRONT_LOAD_CREATE_UNGUARDED_VALIDATION_SHADERS,
.FRONT_LOAD_CREATE_GUARDED_VALIDATION_SHADERS,
} }
DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS :: struct { DEBUG_DEVICE_GPU_BASED_VALIDATION_SETTINGS :: struct {