1 module aurora.directx.d3d12.d3d12; 2 3 public import aurora.directx.com; 4 public import aurora.directx.dxgi.dxgiformat; 5 public import aurora.directx.dxgi.dxgicommon; 6 public import aurora.directx.d3d.d3dcommon; 7 8 public: 9 10 /// 11 /// Constants 12 /// 13 14 enum int D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff; 15 enum int D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff; 16 enum int D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff; 17 enum int D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff; 18 enum int D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9; 19 enum int D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8; 20 enum int D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2; 21 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14; 22 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4; 23 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32; 24 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15; 25 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16; 26 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4; 27 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15; 28 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1; 29 enum int D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1; 30 enum int D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64; 31 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4; 32 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1; 33 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1; 34 enum int D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1; 35 enum int D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32; 36 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1; 37 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128; 38 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1; 39 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1; 40 enum int D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128; 41 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1; 42 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16; 43 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1; 44 enum int D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1; 45 enum int D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16; 46 enum int D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32; 47 enum int D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4; 48 enum int D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32; 49 enum int D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096; 50 enum int D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3; 51 enum int D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3; 52 enum int D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10; 53 enum int D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10; 54 enum int D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8; 55 enum int D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7; 56 enum int D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256; 57 enum int D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256; 58 enum int D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64; 59 enum int D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240; 60 enum int D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68; 61 enum int D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224; 62 enum int D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72; 63 enum int D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208; 64 enum int D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76; 65 enum int D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192; 66 enum int D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84; 67 enum int D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176; 68 enum int D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92; 69 enum int D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160; 70 enum int D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100; 71 enum int D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144; 72 enum int D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112; 73 enum int D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128; 74 enum int D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128; 75 enum int D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112; 76 enum int D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144; 77 enum int D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96; 78 enum int D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168; 79 enum int D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80; 80 enum int D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204; 81 enum int D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64; 82 enum int D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256; 83 enum int D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48; 84 enum int D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340; 85 enum int D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32; 86 enum int D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512; 87 enum int D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16; 88 enum int D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768; 89 enum int D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1; 90 enum int D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256; 91 enum int D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768; 92 enum int D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768; 93 enum int D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768; 94 enum int D3D12_CS_4_X_UAV_REGISTER_COUNT = 1; 95 enum int D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535; 96 enum int D3D12_CS_TGSM_REGISTER_COUNT = 8192; 97 enum int D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1; 98 enum int D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1; 99 enum int D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1; 100 enum int D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3; 101 enum int D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1; 102 enum int D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1; 103 enum int D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1; 104 enum int D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3; 105 enum int D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1; 106 enum int D3D12_CS_THREADID_REGISTER_COMPONENTS = 3; 107 enum int D3D12_CS_THREADID_REGISTER_COUNT = 1; 108 enum int D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024; 109 enum int D3D12_CS_THREAD_GROUP_MAX_X = 1024; 110 enum int D3D12_CS_THREAD_GROUP_MAX_Y = 1024; 111 enum int D3D12_CS_THREAD_GROUP_MAX_Z = 64; 112 enum int D3D12_CS_THREAD_GROUP_MIN_X = 1; 113 enum int D3D12_CS_THREAD_GROUP_MIN_Y = 1; 114 enum int D3D12_CS_THREAD_GROUP_MIN_Z = 1; 115 enum int D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384; 116 enum float D3D12_DEFAULT_BLEND_FACTOR_ALPHA = 1.0f; 117 enum float D3D12_DEFAULT_BLEND_FACTOR_BLUE = 1.0f; 118 enum float D3D12_DEFAULT_BLEND_FACTOR_GREEN = 1.0f; 119 enum float D3D12_DEFAULT_BLEND_FACTOR_RED = 1.0f; 120 enum float D3D12_DEFAULT_BORDER_COLOR_COMPONENT = 0.0f; 121 enum int D3D12_DEFAULT_DEPTH_BIAS = 0; 122 enum float D3D12_DEFAULT_DEPTH_BIAS_CLAMP = 0.0f; 123 enum int D3D12_DEFAULT_MAX_ANISOTROPY = 16; 124 enum float D3D12_DEFAULT_MIP_LOD_BIAS = 0.0f; 125 enum int D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304; 126 enum int D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0; 127 enum int D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536; 128 enum int D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff; 129 enum int D3D12_DEFAULT_SCISSOR_ENDX = 0; 130 enum int D3D12_DEFAULT_SCISSOR_ENDY = 0; 131 enum int D3D12_DEFAULT_SCISSOR_STARTX = 0; 132 enum int D3D12_DEFAULT_SCISSOR_STARTY = 0; 133 enum float D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0.0f; 134 enum int D3D12_DEFAULT_STENCIL_READ_MASK = 0xff; 135 enum int D3D12_DEFAULT_STENCIL_REFERENCE = 0; 136 enum int D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff; 137 enum int D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0; 138 enum int D3D12_DEFAULT_VIEWPORT_HEIGHT = 0; 139 enum float D3D12_DEFAULT_VIEWPORT_MAX_DEPTH = 0.0f; 140 enum float D3D12_DEFAULT_VIEWPORT_MIN_DEPTH = 0.0f; 141 enum int D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0; 142 enum int D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0; 143 enum int D3D12_DEFAULT_VIEWPORT_WIDTH = 0; 144 enum int D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff; 145 enum int D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7; 146 enum int D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0; 147 enum int D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968; 148 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4; 149 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32; 150 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32; 151 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2; 152 enum int D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1; 153 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS = 3; 154 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32; 155 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1; 156 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2; 157 enum int D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS = 1; 158 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4; 159 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32; 160 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32; 161 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2; 162 enum int D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1; 163 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1; 164 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32; 165 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1; 166 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2; 167 enum int D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1; 168 enum int D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4; 169 enum int D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 170 enum int D3D12_DS_OUTPUT_REGISTER_COUNT = 32; 171 enum float D3D12_float16_FUSED_TOLERANCE_IN_ULP = 0.6; 172 enum float D3D12_float32_MAX = 3.402823466e+38f; 173 enum float D3D12_float32_TO_INTEGER_TOLERANCE_IN_ULP = 0.6f; 174 enum float D3D12_float_TO_SRGB_EXPONENT_DENOMINATOR = 2.4f; 175 enum float D3D12_float_TO_SRGB_EXPONENT_NUMERATOR = 1.0f; 176 enum float D3D12_float_TO_SRGB_OFFSET = 0.055f; 177 enum float D3D12_float_TO_SRGB_SCALE_1 = 12.92f; 178 enum float D3D12_float_TO_SRGB_SCALE_2 = 1.055f; 179 enum float D3D12_float_TO_SRGB_THRESHOLD = 0.0031308f; 180 enum float D3D12_FTOI_INSTRUCTION_MAX_INPUT = 2147483647.999f; 181 enum float D3D12_FTOI_INSTRUCTION_MIN_INPUT = -2147483648.999f; 182 enum float D3D12_FTOU_INSTRUCTION_MAX_INPUT = 4294967295.999f; 183 enum float D3D12_FTOU_INSTRUCTION_MIN_INPUT = 0.0f; 184 enum int D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2; 185 enum int D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1; 186 enum int D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1; 187 enum int D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32; 188 enum int D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1; 189 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1; 190 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32; 191 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1; 192 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2; 193 enum int D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1; 194 enum int D3D12_GS_INPUT_REGISTER_COMPONENTS = 4; 195 enum int D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 196 enum int D3D12_GS_INPUT_REGISTER_COUNT = 32; 197 enum int D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2; 198 enum int D3D12_GS_INPUT_REGISTER_READ_PORTS = 1; 199 enum int D3D12_GS_INPUT_REGISTER_VERTICES = 32; 200 enum int D3D12_GS_MAX_INSTANCE_COUNT = 32; 201 enum int D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024; 202 enum int D3D12_GS_OUTPUT_ELEMENTS = 32; 203 enum int D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4; 204 enum int D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 205 enum int D3D12_GS_OUTPUT_REGISTER_COUNT = 32; 206 enum int D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32; 207 enum int D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32; 208 enum int D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4; 209 enum int D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32; 210 enum int D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2; 211 enum int D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1; 212 enum int D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff; 213 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1; 214 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32; 215 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1; 216 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2; 217 enum int D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1; 218 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1; 219 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32; 220 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1; 221 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2; 222 enum int D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1; 223 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1; 224 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32; 225 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1; 226 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2; 227 enum int D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1; 228 enum int D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff; 229 enum float D3D12_HS_MAXTESSFACTOR_LOWER_BOUND = 1.0f; 230 enum float D3D12_HS_MAXTESSFACTOR_UPPER_BOUND = 64.0f; 231 enum int D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968; 232 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1; 233 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32; 234 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1; 235 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2; 236 enum int D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1; 237 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4; 238 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32; 239 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32; 240 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2; 241 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1; 242 enum int D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128; 243 enum int D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0; 244 enum int D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0; 245 enum int D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0; 246 enum int D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1; 247 enum int D3D12_IA_INSTANCE_ID_BIT_COUNT = 32; 248 enum int D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32; 249 enum int D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32; 250 enum int D3D12_IA_PRIMITIVE_ID_BIT_COUNT = 32; 251 enum int D3D12_IA_VERTEX_ID_BIT_COUNT = 32; 252 enum int D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32; 253 enum int D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128; 254 enum int D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32; 255 enum int D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff; 256 enum int D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff; 257 enum int D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff; 258 enum int D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff; 259 enum float D3D12_LINEAR_GAMMA = 1.0f; 260 enum int D3D12_MAJOR_VERSION = 12; 261 enum float D3D12_MAX_BORDER_COLOR_COMPONENT = 1.0f; 262 enum float D3D12_MAX_DEPTH = 1.0f; 263 enum int D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032; 264 enum int D3D12_MAX_MAXANISOTROPY = 16; 265 enum int D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32; 266 enum float D3D12_MAX_POSITION_VALUE = 3.402823466e+34f; 267 enum int D3D12_MAX_ROOT_COST = 64; 268 enum int D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_size_tIER_1 = 1000000; 269 enum int D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_size_tIER_2 = 1000000; 270 enum int D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048; 271 enum int D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17; 272 enum int D3D12_MAX_VIEW_INSTANCE_COUNT = 4; 273 enum int D3D12_MINOR_VERSION = 0; 274 enum float D3D12_MIN_BORDER_COLOR_COMPONENT = 0.0f; 275 enum float D3D12_MIN_DEPTH = 0.0f; 276 enum int D3D12_MIN_MAXANISOTROPY = 0; 277 enum float D3D12_MIP_LOD_BIAS_MAX = 15.99f; 278 enum float D3D12_MIP_LOD_BIAS_MIN = -16.0f; 279 enum int D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8; 280 enum int D3D12_MIP_LOD_RANGE_BIT_COUNT = 8; 281 enum float D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 1.4f; 282 enum int D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0; 283 enum int D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff; 284 enum int D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8; 285 enum int D3D12_PACKED_TILE = 0xffffffff; 286 enum int D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15; 287 enum int D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16; 288 enum int D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1; 289 enum int D3D12_PS_CS_UAV_REGISTER_COUNT = 8; 290 enum int D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1; 291 enum int D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1; 292 enum int D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff; 293 enum int D3D12_PS_FRONTFACING_FALSE_VALUE = 0; 294 enum int D3D12_PS_FRONTFACING_TRUE_VALUE = 0xffffffff; 295 enum int D3D12_PS_INPUT_REGISTER_COMPONENTS = 4; 296 enum int D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 297 enum int D3D12_PS_INPUT_REGISTER_COUNT = 32; 298 enum int D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2; 299 enum int D3D12_PS_INPUT_REGISTER_READ_PORTS = 1; 300 enum float D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.0f; 301 enum int D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1; 302 enum int D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32; 303 enum int D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1; 304 enum int D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1; 305 enum int D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32; 306 enum int D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1; 307 enum int D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4; 308 enum int D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 309 enum int D3D12_PS_OUTPUT_REGISTER_COUNT = 8; 310 enum float D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0.5f; 311 enum int D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16; 312 enum int D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096; 313 enum int D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27; 314 enum int D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096; 315 enum int D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096; 316 enum int D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32; 317 enum int D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32; 318 enum int D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384; 319 enum int D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024; 320 enum int D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096; 321 enum int D3D12_REQ_MAXANISOTROPY = 16; 322 enum int D3D12_REQ_MIP_LEVELS = 15; 323 enum int D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048; 324 enum int D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096; 325 enum int D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384; 326 enum int D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128; 327 enum float D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = 0.25f; 328 enum int D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048; 329 enum int D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20; 330 enum int D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096; 331 enum int D3D12_REQ_SUBRESOURCES = 30720; 332 enum int D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048; 333 enum int D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384; 334 enum int D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048; 335 enum int D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384; 336 enum int D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048; 337 enum int D3D12_REQ_TEXTURECUBE_DIMENSION = 16384; 338 enum int D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0; 339 enum int D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff; 340 enum int D3D12_SHADER_MAJOR_VERSION = 5; 341 enum int D3D12_SHADER_MAX_INSTANCES = 65535; 342 enum int D3D12_SHADER_MAX_INTERFACES = 253; 343 enum int D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096; 344 enum int D3D12_SHADER_MAX_TYPES = 65535; 345 enum int D3D12_SHADER_MINOR_VERSION = 1; 346 enum int D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0; 347 enum int D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5; 348 enum int D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8; 349 enum int D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536; 350 enum int D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096; 351 enum int D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048; 352 enum int D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512; 353 enum int D3D12_SO_BUFFER_SLOT_COUNT = 4; 354 enum int D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff; 355 enum int D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff; 356 enum int D3D12_SO_OUTPUT_COMPONENT_COUNT = 128; 357 enum int D3D12_SO_STREAM_COUNT = 4; 358 enum int D3D12_SPEC_DATE_DAY = 14; 359 enum int D3D12_SPEC_DATE_MONTH = 11; 360 enum int D3D12_SPEC_DATE_YEAR = 2014; 361 enum float D3D12_SPEC_VERSION = 1.16; 362 enum float D3D12_SRGB_GAMMA = 2.2f; 363 enum float D3D12_SRGB_TO_float_DENOMINATOR_1 = 12.92f; 364 enum float D3D12_SRGB_TO_float_DENOMINATOR_2 = 1.055f; 365 enum float D3D12_SRGB_TO_float_EXPONENT = 2.4f; 366 enum float D3D12_SRGB_TO_float_OFFSET = 0.055f; 367 enum float D3D12_SRGB_TO_float_THRESHOLD = 0.04045f; 368 enum float D3D12_SRGB_TO_float_TOLERANCE_IN_ULP = 0.5f; 369 enum int D3D12_STANDARD_COMPONENT_BIT_COUNT = 32; 370 enum int D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64; 371 enum int D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4; 372 enum int D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128; 373 enum int D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32; 374 enum int D3D12_STANDARD_VECTOR_SIZE = 4; 375 enum int D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32; 376 enum int D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64; 377 enum int D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8; 378 enum int D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8; 379 enum int D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff; 380 enum int D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0; 381 enum int D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64; 382 enum int D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64; 383 enum int D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63; 384 enum int D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64; 385 enum int D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2; 386 enum int D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1; 387 enum int D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1; 388 enum int D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16; 389 enum int D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256; 390 enum int D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512; 391 enum int D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES = 65536; 392 enum int D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096; 393 enum int D3D12_UAV_SLOT_COUNT = 64; 394 enum int D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0; 395 enum int D3D12_VIDEO_DECODE_MAX_ARGUMENTS = 10; 396 enum int D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN = 0xffffffff; 397 enum int D3D12_VIDEO_PROCESS_MAX_FILTERS = 32; 398 enum int D3D12_VIDEO_PROCESS_STEREO_VIEWS = 2; 399 enum int D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15; 400 enum int D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16; 401 enum int D3D12_VIEWPORT_BOUNDS_MAX = 32767; 402 enum int D3D12_VIEWPORT_BOUNDS_MIN = -32768; 403 enum int D3D12_VS_INPUT_REGISTER_COMPONENTS = 4; 404 enum int D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 405 enum int D3D12_VS_INPUT_REGISTER_COUNT = 32; 406 enum int D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2; 407 enum int D3D12_VS_INPUT_REGISTER_READ_PORTS = 1; 408 enum int D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4; 409 enum int D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32; 410 enum int D3D12_VS_OUTPUT_REGISTER_COUNT = 32; 411 enum int D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10; 412 enum int D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25; 413 enum int D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25; 414 415 enum int D3D12_SHADER_COMPONENT_MAPPING_MASK = 0x7; 416 enum int D3D12_SHADER_COMPONENT_MAPPING_SHIFT = 3; 417 enum int D3D12_FILTER_REDUCTION_TYPE_MASK = 0x3; 418 enum int D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7; 419 enum int D3D12_FILTER_TYPE_MASK = 0x3; 420 enum int D3D12_MIN_FILTER_SHIFT = 4; 421 enum int D3D12_MAG_FILTER_SHIFT = 2; 422 enum int D3D12_MIP_FILTER_SHIFT = 0; 423 enum int D3D12_ANISOTROPIC_FILTERING_BIT = 0x40; 424 425 const IID D3D12ExperimentalShaderModels = { 0x76f5573e, 0xf13a, 0x40f5, [0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f]}; 426 427 alias ulong D3D12_GPU_VIRTUAL_ADDRESS; 428 alias D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY; 429 alias D3D_PRIMITIVE D3D12_PRIMITIVE; 430 alias RECT D3D12_RECT; 431 432 433 /// 434 /// Mixins 435 /// 436 437 ///This macros have not yet been converted to mixins 438 /* 439 #define D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES (1<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4)) 440 #define D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(Src0,Src1,Src2,Src3) ((((Src0)&D3D12_SHADER_COMPONENT_MAPPING_MASK)| \ 441 (((Src1)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<D3D12_SHADER_COMPONENT_MAPPING_SHIFT)| \ 442 (((Src2)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2))| \ 443 (((Src3)&D3D12_SHADER_COMPONENT_MAPPING_MASK)<<(D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3))| \ 444 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES)) 445 #define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(ComponentToExtract,Mapping) ((D3D12_SHADER_COMPONENT_MAPPING)(Mapping >> (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) & D3D12_SHADER_COMPONENT_MAPPING_MASK)) 446 #define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) 447 #define D3D12_ENCODE_BASIC_FILTER( min, mag, mip, reduction ) \ 448 ( ( D3D12_FILTER ) ( \ 449 ( ( ( min ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIN_FILTER_SHIFT ) | \ 450 ( ( ( mag ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MAG_FILTER_SHIFT ) | \ 451 ( ( ( mip ) & D3D12_FILTER_TYPE_MASK ) << D3D12_MIP_FILTER_SHIFT ) | \ 452 ( ( ( reduction ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) ) 453 #define D3D12_ENCODE_ANISOTROPIC_FILTER( reduction ) \ 454 ( ( D3D12_FILTER ) ( \ 455 D3D12_ANISOTROPIC_FILTERING_BIT | \ 456 D3D12_ENCODE_BASIC_FILTER( D3D12_FILTER_TYPE_LINEAR, \ 457 D3D12_FILTER_TYPE_LINEAR, \ 458 D3D12_FILTER_TYPE_LINEAR, \ 459 reduction ) ) ) 460 #define D3D12_DECODE_MIN_FILTER( D3D12Filter ) \ 461 ( ( D3D12_FILTER_TYPE ) \ 462 ( ( ( D3D12Filter ) >> D3D12_MIN_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) 463 #define D3D12_DECODE_MAG_FILTER( D3D12Filter ) \ 464 ( ( D3D12_FILTER_TYPE ) \ 465 ( ( ( D3D12Filter ) >> D3D12_MAG_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) 466 #define D3D12_DECODE_MIP_FILTER( D3D12Filter ) \ 467 ( ( D3D12_FILTER_TYPE ) \ 468 ( ( ( D3D12Filter ) >> D3D12_MIP_FILTER_SHIFT ) & D3D12_FILTER_TYPE_MASK ) ) 469 #define D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) \ 470 ( ( D3D12_FILTER_REDUCTION_TYPE ) \ 471 ( ( ( D3D12Filter ) >> D3D12_FILTER_REDUCTION_TYPE_SHIFT ) & D3D12_FILTER_REDUCTION_TYPE_MASK ) ) 472 #define D3D12_DECODE_IS_COMPARISON_FILTER( D3D12Filter ) \ 473 ( D3D12_DECODE_FILTER_REDUCTION( D3D12Filter ) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON ) 474 #define D3D12_DECODE_IS_ANISOTROPIC_FILTER( D3D12Filter ) \ 475 ( ( ( D3D12Filter ) & D3D12_ANISOTROPIC_FILTERING_BIT ) && \ 476 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER( D3D12Filter ) ) && \ 477 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER( D3D12Filter ) ) && \ 478 ( D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER( D3D12Filter ) ) ) 479 */ 480 481 /// 482 /// Functions 483 /// 484 485 HRESULT D3D12CreateDevice(IUnknown pAdapter, D3D_FEATURE_LEVEL MinimumFeatureLevel, REFIID riid, void** ppDevice ); 486 HRESULT D3D12GetDebugInterface(REFIID riid, void** ppvDebug); 487 HRESULT D3D12EnableExperimentalFeatures(uint NumFeatures, const IID* pIIDs, void* pConfigurationStructs, uint* pConfigurationStructSizes); 488 HRESULT D3D12SerializeRootSignature(const D3D12_ROOT_SIGNATURE_DESC* pRootSignature, D3D_ROOT_SIGNATURE_VERSION Version, ID3DBlob* ppBlob, ID3DBlob* ppErrorBlob); 489 HRESULT D3D12CreateRootSignatureDeserializer(const void *pSrcData, size_t SrcDataSizeInBytes, REFIID pRootSignatureDeserializerInterface, void** ppRootSignatureDeserializer); 490 HRESULT D3D12SerializeVersionedRootSignature(const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* pRootSignature, ID3DBlob* ppBlob, ID3DBlob* ppErrorBlob); 491 HRESULT D3D12CreateVersionedRootSignatureDeserializer(const void *pSrcData, size_t SrcDataSizeInBytes, REFIID pRootSignatureDeserializerInterface, void** ppRootSignatureDeserializer); 492 493 /// 494 /// Enumerations 495 /// 496 497 enum D3D12_COMMAND_LIST_TYPE 498 { 499 DIRECT= 0, 500 BUNDLE= 1, 501 COMPUTE= 2, 502 COPY= 3, 503 VIDEO_DECODE= 4, 504 VIDEO_PROCESS= 5 505 } 506 507 enum D3D12_COMMAND_QUEUE_FLAGS 508 { 509 NONE = 0, 510 DISABLE_GPU_TIMEOUT= 0x1 511 } 512 513 enum D3D12_COMMAND_QUEUE_PRIORITY 514 { 515 NORMAL= 0, 516 HIGH= 100, 517 GLOBAL_REALTIME= 10000 518 } 519 520 enum D3D12_PRIMITIVE_TOPOLOGY_TYPE 521 { 522 UNDEFINED= 0, 523 POINT= 1, 524 LINE= 2, 525 TRIANGLE= 3, 526 PATCH= 4 527 } 528 529 enum D3D12_INPUT_CLASSIFICATION 530 { 531 PER_VERTEX_DATA= 0, 532 PER_INSTANCE_DATA= 1 533 } 534 535 enum D3D12_FILL_MODE 536 { 537 D3D12_FILL_MODE_WIREFRAME= 2, 538 D3D12_FILL_MODE_SOLID= 3 539 } 540 541 enum D3D12_CULL_MODE 542 { 543 NONE= 1, 544 FRONT= 2, 545 BACK= 3 546 } 547 548 enum D3D12_COMPARISON_FUNC 549 { 550 NEVER = 1, 551 LESS = 2, 552 EQUAL = 3, 553 LESS_EQUAL = 4, 554 GREATER = 5, 555 NOT_EQUAL = 6, 556 GREATER_EQUAL = 7, 557 ALWAYS = 8 558 } 559 560 enum D3D12_DEPTH_WRITE_MASK 561 { 562 ZERO = 0, 563 ALL = 1 564 } 565 566 enum D3D12_STENCIL_OP 567 { 568 KEEP = 1, 569 ZERO = 2, 570 REPLACE = 3, 571 INCR_SAT = 4, 572 DECR_SAT = 5, 573 INVERT = 6, 574 INCR = 7, 575 DECR = 8 576 } 577 578 enum D3D12_BLEND 579 { 580 ZERO = 1, 581 ONE = 2, 582 SRC_COLOR = 3, 583 INV_SRC_COLOR = 4, 584 SRC_ALPHA = 5, 585 INV_SRC_ALPHA = 6, 586 DEST_ALPHA = 7, 587 INV_DEST_ALPHA = 8, 588 DEST_COLOR = 9, 589 INV_DEST_COLOR = 10, 590 SRC_ALPHA_SAT = 11, 591 BLEND_FACTOR = 14, 592 INV_BLEND_FACTOR = 15, 593 SRC1_COLOR = 16, 594 INV_SRC1_COLOR = 17, 595 SRC1_ALPHA = 18, 596 INV_SRC1_ALPHA = 19 597 } 598 599 enum D3D12_BLEND_OP 600 { 601 ADD = 1, 602 SUBTRACT = 2, 603 REV_SUBTRACT = 3, 604 MIN = 4, 605 MAX = 5 606 } 607 608 enum D3D12_COLOR_WRITE_ENABLE 609 { 610 RED = 1, 611 GREEN = 2, 612 BLUE = 4, 613 ALPHA = 8, 614 ALL = ( ( ( RED | GREEN ) | BLUE ) | ALPHA ) 615 } 616 617 enum D3D12_LOGIC_OP 618 { 619 CLEAR = 0, 620 SET = ( CLEAR + 1 ), 621 COPY = ( SET + 1 ), 622 COPY_INVERTED = ( COPY + 1 ), 623 NOOP = ( COPY_INVERTED + 1 ), 624 INVERT = ( NOOP + 1 ), 625 AND = ( INVERT + 1 ), 626 NAND = ( AND + 1 ), 627 OR = ( NAND + 1 ), 628 NOR = ( OR + 1 ), 629 XOR = ( NOR + 1 ), 630 EQUIV = ( XOR + 1 ), 631 AND_REVERSE = ( EQUIV + 1 ), 632 AND_INVERTED = ( AND_REVERSE + 1 ), 633 OR_REVERSE = ( AND_INVERTED + 1 ), 634 OR_INVERTED = ( OR_REVERSE + 1 ) } 635 636 enum D3D12_CONSERVATIVE_RASTERIZATION_MODE 637 { 638 OFF = 0, 639 ON = 1 640 } 641 642 enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE 643 { 644 VALUE_DISABLED = 0, 645 VALUE_0xFFFF = 1, 646 VALUE_0xFFFFFFFF = 2 647 } 648 649 enum D3D12_PIPELINE_STATE_FLAGS 650 { 651 NONE = 0, 652 TOOL_DEBUG = 0x1 653 } 654 655 enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE 656 { 657 ROOT_SIGNATURE = 0, 658 VS = ( ROOT_SIGNATURE + 1 ), 659 PS = ( VS + 1 ), 660 DS = ( PS + 1 ), 661 HS = ( DS + 1 ), 662 GS = ( HS + 1 ), 663 CS = ( GS + 1 ), 664 STREAM_OUTPUT = ( CS + 1 ), 665 BLEND = ( STREAM_OUTPUT + 1 ), 666 SAMPLE_MASK = ( BLEND + 1 ), 667 RASTERIZER = ( SAMPLE_MASK + 1 ), 668 DEPTH_STENCIL = ( RASTERIZER + 1 ), 669 INPUT_LAYOUT = ( DEPTH_STENCIL + 1 ), 670 IB_STRIP_CUT_VALUE = ( INPUT_LAYOUT + 1 ), 671 PRIMITIVE_TOPOLOGY = ( IB_STRIP_CUT_VALUE + 1 ), 672 RENDER_TARGET_FORMATS = ( PRIMITIVE_TOPOLOGY + 1 ), 673 DEPTH_STENCIL_FORMAT = ( RENDER_TARGET_FORMATS + 1 ), 674 SAMPLE_DESC = ( DEPTH_STENCIL_FORMAT + 1 ), 675 NODE_MASK = ( SAMPLE_DESC + 1 ), 676 CACHED_PSO = ( NODE_MASK + 1 ), 677 FLAGS = ( CACHED_PSO + 1 ), 678 DEPTH_STENCIL1 = ( FLAGS + 1 ), 679 VIEW_INSTANCING = ( DEPTH_STENCIL1 + 1 ), 680 MAX_VALID = ( VIEW_INSTANCING + 1 ) 681 } 682 683 enum D3D12_FEATURE 684 { 685 D3D12_OPTIONS = 0, 686 ARCHITECTURE = 1, 687 FEATURE_LEVELS = 2, 688 FORMAT_SUPPORT = 3, 689 MULTISAMPLE_QUALITY_LEVELS = 4, 690 FORMAT_INFO = 5, 691 GPU_VIRTUAL_ADDRESS_SUPPORT = 6, 692 SHADER_MODEL = 7, 693 D3D12_OPTIONS1 = 8, 694 ROOT_SIGNATURE = 12, 695 ARCHITECTURE1 = 16, 696 D3D12_OPTIONS2 = 18, 697 SHADER_CACHE = 19, 698 COMMAND_QUEUE_PRIORITY = 20, 699 D3D12_OPTIONS3 = 21, 700 EXISTING_HEAPS = 22 701 } 702 703 enum D3D12_SHADER_MIN_PRECISION_SUPPORT 704 { 705 SUPPORT_NONE = 0, 706 SUPPORT_10_BIT = 0x1, 707 SUPPORT_16_BIT = 0x2 708 } 709 710 enum D3D12_TILED_RESOURCES_TIER 711 { 712 TIER_NOT_SUPPORTED = 0, 713 TIER_1 = 1, 714 TIER_2 = 2, 715 TIER_3 = 3 716 } 717 718 enum D3D12_RESOURCE_BINDING_TIER 719 { 720 TIER_1 = 1, 721 TIER_2 = 2, 722 TIER_3 = 3 723 } 724 725 enum D3D12_CONSERVATIVE_RASTERIZATION_TIER 726 { 727 TIER_NOT_SUPPORTED = 0, 728 TIER_1 = 1, 729 TIER_2 = 2, 730 TIER_3 = 3 731 } 732 733 enum D3D12_FORMAT_SUPPORT1 734 { 735 NONE = 0, 736 BUFFER = 0x1, 737 IA_VERTEX_BUFFER = 0x2, 738 IA_INDEX_BUFFER = 0x4, 739 SO_BUFFER = 0x8, 740 TEXTURE1D = 0x10, 741 TEXTURE2D = 0x20, 742 TEXTURE3D = 0x40, 743 TEXTURECUBE = 0x80, 744 SHADER_LOAD = 0x100, 745 SHADER_SAMPLE = 0x200, 746 SHADER_SAMPLE_COMPARISON = 0x400, 747 SHADER_SAMPLE_MONO_TEXT = 0x800, 748 MIP = 0x1000, 749 RENDER_TARGET = 0x4000, 750 BLENDABLE = 0x8000, 751 DEPTH_STENCIL = 0x10000, 752 MULTISAMPLE_RESOLVE = 0x40000, 753 DISPLAY = 0x80000, 754 CAST_WITHIN_BIT_LAYOUT = 0x100000, 755 MULTISAMPLE_RENDERTARGET = 0x200000, 756 MULTISAMPLE_LOAD = 0x400000, 757 SHADER_GATHER = 0x800000, 758 BACK_BUFFER_CAST = 0x1000000, 759 TYPED_UNORDERED_ACCESS_VIEW = 0x2000000, 760 SHADER_GATHER_COMPARISON = 0x4000000, 761 DECODER_OUTPUT = 0x8000000, 762 VIDEO_PROCESSOR_OUTPUT = 0x10000000, 763 VIDEO_PROCESSOR_INPUT = 0x20000000, 764 VIDEO_ENCODER = 0x40000000 765 } 766 767 enum D3D12_FORMAT_SUPPORT2 768 { 769 NONE = 0, 770 UAV_ATOMIC_ADD = 0x1, 771 UAV_ATOMIC_BITWISE_OPS = 0x2, 772 UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4, 773 UAV_ATOMIC_EXCHANGE = 0x8, 774 UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10, 775 UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20, 776 UAV_TYPED_LOAD = 0x40, 777 UAV_TYPED_STORE = 0x80, 778 OUTPUT_MERGER_LOGIC_OP = 0x100, 779 TILED = 0x200, 780 MULTIPLANE_OVERLAY = 0x4000 781 } 782 783 enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS 784 { 785 NONE = 0, 786 TILED_RESOURCE = 0x1 787 } 788 789 enum D3D12_CROSS_NODE_SHARING_TIER 790 { 791 TIER_NOT_SUPPORTED = 0, 792 TIER_1_EMULATED = 1, 793 TIER_1 = 2, 794 TIER_2 = 3 795 } 796 797 enum D3D12_RESOURCE_HEAP_TIER 798 { 799 TIER_1 = 1, 800 TIER_2 = 2 801 } 802 803 enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER 804 { 805 TIER_NOT_SUPPORTED = 0, 806 TIER_1 = 1, 807 TIER_2 = 2 808 } 809 810 enum D3D12_VIEW_INSTANCING_TIER 811 { 812 TIER_NOT_SUPPORTED = 0, 813 TIER_1 = 1, 814 TIER_2 = 2, 815 TIER_3 = 3 816 } 817 818 enum D3D_ROOT_SIGNATURE_VERSION 819 { 820 VERSION_1 = 0x1, 821 VERSION_1_0 = 0x1, 822 VERSION_1_1 = 0x2 823 } 824 825 enum D3D_SHADER_MODEL 826 { 827 MODEL_5_1 = 0x51, 828 MODEL_6_0 = 0x60, 829 MODEL_6_1 = 0x61 830 } 831 832 enum D3D12_SHADER_CACHE_SUPPORT_FLAGS 833 { 834 NONE = 0, 835 SINGLE_PSO = 0x1, 836 LIBRARY = 0x2, 837 AUTOMATIC_INPROC_CACHE = 0x4, 838 AUTOMATIC_DISK_CACHE = 0x8 839 } 840 841 enum D3D12_COMMAND_LIST_SUPPORT_FLAGS 842 { 843 NONE = 0, 844 DIRECT = ( 1 << D3D12_COMMAND_LIST_TYPE.DIRECT ), 845 BUNDLE = ( 1 << D3D12_COMMAND_LIST_TYPE.BUNDLE ), 846 COMPUTE = ( 1 << D3D12_COMMAND_LIST_TYPE.COMPUTE ), 847 COPY = ( 1 << D3D12_COMMAND_LIST_TYPE.COPY ), 848 VIDEO_DECODE = ( 1 << D3D12_COMMAND_LIST_TYPE.VIDEO_DECODE ), 849 VIDEO_PROCESS = ( 1 << D3D12_COMMAND_LIST_TYPE.VIDEO_PROCESS ) 850 } 851 852 enum D3D12_HEAP_TYPE 853 { 854 DEFAULT = 1, 855 UPLOAD = 2, 856 READBACK = 3, 857 CUSTOM = 4 858 } 859 860 enum D3D12_CPU_PAGE_PROPERTY 861 { 862 UNKNOWN = 0, 863 NOT_AVAILABLE = 1, 864 WRITE_COMBINE = 2, 865 WRITE_BACK = 3 866 } 867 868 enum D3D12_MEMORY_POOL 869 { 870 POOL_UNKNOWN = 0, 871 POOL_L0 = 1, 872 POOL_L1 = 2 873 } 874 875 enum D3D12_HEAP_FLAGS 876 { 877 NONE = 0, 878 SHARED = 0x1, 879 DENY_BUFFERS = 0x4, 880 ALLOW_DISPLAY = 0x8, 881 SHARED_CROSS_ADAPTER = 0x20, 882 DENY_RT_DS_TEXTURES = 0x40, 883 DENY_NON_RT_DS_TEXTURES = 0x80, 884 HARDWARE_PROTECTED = 0x100, 885 ALLOW_WRITE_WATCH = 0x200, 886 ALLOW_ALL_BUFFERS_AND_TEXTURES = 0, 887 ALLOW_ONLY_BUFFERS = 0xc0, 888 ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44, 889 ALLOW_ONLY_RT_DS_TEXTURES = 0x84 890 } 891 892 enum D3D12_RESOURCE_DIMENSION 893 { 894 UNKNOWN = 0, 895 BUFFER = 1, 896 TEXTURE1D = 2, 897 TEXTURE2D = 3, 898 TEXTURE3D = 4 899 } 900 901 enum D3D12_TEXTURE_LAYOUT 902 { 903 LAYOUT_UNKNOWN = 0, 904 LAYOUT_ROW_MAJOR = 1, 905 LAYOUT_64KB_UNDEFINED_SWIZZLE = 2, 906 LAYOUT_64KB_STANDARD_SWIZZLE = 3 907 } 908 909 enum D3D12_RESOURCE_FLAGS 910 { 911 NONE = 0, 912 ALLOW_RENDER_TARGET = 0x1, 913 ALLOW_DEPTH_STENCIL = 0x2, 914 ALLOW_UNORDERED_ACCESS = 0x4, 915 DENY_SHADER_RESOURCE = 0x8, 916 ALLOW_CROSS_ADAPTER = 0x10, 917 ALLOW_SIMULTANEOUS_ACCESS = 0x20, 918 VIDEO_DECODE_REFERENCE_ONLY = 0x40 919 } 920 921 enum D3D12_TILE_RANGE_FLAGS 922 { 923 NONE = 0, 924 NULL = 1, 925 SKIP = 2, 926 REUSE_SINGLE_TILE = 4 927 } 928 929 enum D3D12_TILE_MAPPING_FLAGS 930 { 931 NONE = 0, 932 NO_HAZARD = 0x1 933 } 934 935 enum D3D12_TILE_COPY_FLAGS 936 { 937 NONE = 0, 938 NO_HAZARD = 0x1, 939 LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, 940 SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4 941 } 942 943 enum D3D12_RESOURCE_STATES 944 { 945 COMMON = 0, 946 VERTEX_AND_CONSTANT_BUFFER = 0x1, 947 INDEX_BUFFER = 0x2, 948 RENDER_TARGET = 0x4, 949 UNORDERED_ACCESS = 0x8, 950 DEPTH_WRITE = 0x10, 951 DEPTH_READ = 0x20, 952 NON_PIXEL_SHADER_RESOURCE = 0x40, 953 PIXEL_SHADER_RESOURCE = 0x80, 954 STREAM_OUT = 0x100, 955 INDIRECT_ARGUMENT = 0x200, 956 COPY_DEST = 0x400, 957 COPY_SOURCE = 0x800, 958 RESOLVE_DEST = 0x1000, 959 RESOLVE_SOURCE = 0x2000, 960 GENERIC_READ = ( ( ( ( ( 0x1 | 0x2 ) | 0x40 ) | 0x80 ) | 0x200 ) | 0x800 ) , 961 PRESENT = 0, 962 PREDICATION = 0x200, 963 VIDEO_DECODE_READ = 0x10000, 964 VIDEO_DECODE_WRITE = 0x20000, 965 VIDEO_PROCESS_READ = 0x40000, 966 VIDEO_PROCESS_WRITE = 0x80000 967 } 968 969 enum D3D12_RESOURCE_BARRIER_TYPE 970 { 971 TRANSITION = 0, 972 ALIASING = ( TRANSITION + 1 ) , 973 UAV = ( ALIASING + 1 ) 974 } 975 976 enum D3D12_RESOURCE_BARRIER_FLAGS 977 { 978 NONE = 0, 979 BEGIN_ONLY = 0x1, 980 END_ONLY = 0x2 981 } 982 983 enum D3D12_TEXTURE_COPY_TYPE 984 { 985 SUBRESOURCE_INDEX = 0, 986 PLACED_FOOTPRINT = 1 987 } 988 989 enum D3D12_RESOLVE_MODE 990 { 991 DECOMPRESS = 0, 992 MIN = 1, 993 MAX = 2, 994 AVERAGE = 3 995 } 996 997 enum D3D12_VIEW_INSTANCING_FLAGS 998 { 999 NONE = 0, 1000 ENABLE_VIEW_INSTANCE_MASKING = 0x1 1001 } 1002 1003 enum D3D12_SHADER_COMPONENT_MAPPING 1004 { 1005 FROM_MEMORY_COMPONENT_0 = 0, 1006 FROM_MEMORY_COMPONENT_1 = 1, 1007 FROM_MEMORY_COMPONENT_2 = 2, 1008 FROM_MEMORY_COMPONENT_3 = 3, 1009 FORCE_VALUE_0 = 4, 1010 FORCE_VALUE_1 = 5 1011 } 1012 1013 enum D3D12_BUFFER_SRV_FLAGS 1014 { 1015 NONE = 0, 1016 RAW = 0x1 1017 } 1018 1019 enum D3D12_SRV_DIMENSION 1020 { 1021 UNKNOWN = 0, 1022 BUFFER = 1, 1023 TEXTURE1D = 2, 1024 TEXTURE1DARRAY = 3, 1025 TEXTURE2D = 4, 1026 TEXTURE2DARRAY = 5, 1027 TEXTURE2DMS = 6, 1028 TEXTURE2DMSARRAY = 7, 1029 TEXTURE3D = 8, 1030 TEXTURECUBE = 9, 1031 TEXTURECUBEARRAY = 10 1032 } 1033 1034 enum D3D12_FILTER 1035 { 1036 MIN_MAG_MIP_POINT = 0, 1037 MIN_MAG_POINT_MIP_LINEAR = 0x1, 1038 MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4, 1039 MIN_POINT_MAG_MIP_LINEAR = 0x5, 1040 MIN_LINEAR_MAG_MIP_POINT = 0x10, 1041 MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11, 1042 MIN_MAG_LINEAR_MIP_POINT = 0x14, 1043 MIN_MAG_MIP_LINEAR = 0x15, 1044 ANISOTROPIC = 0x55, 1045 COMPARISON_MIN_MAG_MIP_POINT = 0x80, 1046 COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81, 1047 COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84, 1048 COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85, 1049 COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90, 1050 COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91, 1051 COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94, 1052 COMPARISON_MIN_MAG_MIP_LINEAR = 0x95, 1053 COMPARISON_ANISOTROPIC = 0xd5, 1054 MINIMUM_MIN_MAG_MIP_POINT = 0x100, 1055 MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101, 1056 MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104, 1057 MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105, 1058 MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110, 1059 MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111, 1060 MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114, 1061 MINIMUM_MIN_MAG_MIP_LINEAR = 0x115, 1062 MINIMUM_ANISOTROPIC = 0x155, 1063 MAXIMUM_MIN_MAG_MIP_POINT = 0x180, 1064 MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181, 1065 MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184, 1066 MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185, 1067 MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190, 1068 MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191, 1069 MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194, 1070 MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195, 1071 MAXIMUM_ANISOTROPIC = 0x1d5 1072 } 1073 1074 enum D3D12_FILTER_TYPE 1075 { 1076 POINT = 0, 1077 LINEAR = 1 1078 } 1079 1080 enum REDUCTION_TYPE 1081 { 1082 STANDARD = 0, 1083 COMPARISON = 1, 1084 MINIMUM = 2, 1085 MAXIMUM = 3 1086 } 1087 1088 enum D3D12_TEXTURE_ADDRESS_MODE 1089 { 1090 WRAP = 1, 1091 MIRROR = 2, 1092 CLAMP = 3, 1093 BORDER = 4, 1094 MIRROR_ONCE = 5 1095 } 1096 1097 enum D3D12_BUFFER_UAV_FLAGS 1098 { 1099 NONE = 0, 1100 RAW = 0x1 1101 } 1102 1103 enum D3D12_UAV_DIMENSION 1104 { 1105 UNKNOWN = 0, 1106 BUFFER = 1, 1107 TEXTURE1D = 2, 1108 TEXTURE1DARRAY = 3, 1109 TEXTURE2D = 4, 1110 TEXTURE2DARRAY = 5, 1111 TEXTURE3D = 8 1112 } 1113 1114 enum D3D12_RTV_DIMENSION 1115 { 1116 UNKNOWN = 0, 1117 BUFFER = 1, 1118 TEXTURE1D = 2, 1119 TEXTURE1DARRAY = 3, 1120 TEXTURE2D = 4, 1121 TEXTURE2DARRAY = 5, 1122 TEXTURE2DMS = 6, 1123 TEXTURE2DMSARRAY = 7, 1124 TEXTURE3D = 8 1125 } 1126 1127 enum D3D12_DSV_FLAGS 1128 { 1129 NONE = 0, 1130 READ_ONLY_DEPTH = 0x1, 1131 READ_ONLY_STENCIL = 0x2 1132 } 1133 1134 enum D3D12_DSV_DIMENSION 1135 { 1136 UNKNOWN = 0, 1137 TEXTURE1D = 1, 1138 TEXTURE1DARRAY = 2, 1139 TEXTURE2D = 3, 1140 TEXTURE2DARRAY = 4, 1141 TEXTURE2DMS = 5, 1142 TEXTURE2DMSARRAY = 6 1143 } 1144 1145 enum D3D12_CLEAR_FLAGS 1146 { 1147 DEPTH = 0x1, 1148 STENCIL = 0x2 1149 } 1150 1151 enum D3D12_FENCE_FLAGS 1152 { 1153 NONE = 0, 1154 SHARED = 0x1, 1155 SHARED_CROSS_ADAPTER = 0x2, 1156 NON_MONITORED = 0x4 1157 } 1158 1159 enum D3D12_DESCRIPTOR_HEAP_TYPE 1160 { 1161 CBV_SRV_UAV = 0, 1162 SAMPLER = ( CBV_SRV_UAV + 1 ) , 1163 RTV = ( SAMPLER + 1 ) , 1164 DSV = ( RTV + 1 ) , 1165 NUM_TYPES = ( DSV + 1 ) 1166 } 1167 1168 enum D3D12_DESCRIPTOR_HEAP_FLAGS 1169 { 1170 NONE = 0, 1171 SHADER_VISIBLE = 0x1 1172 } 1173 1174 enum D3D12_DESCRIPTOR_RANGE_TYPE 1175 { 1176 SRV = 0, 1177 UAV = ( SRV + 1 ) , 1178 CBV = ( UAV + 1 ) , 1179 SAMPLER = ( CBV + 1 ) 1180 } 1181 1182 enum D3D12_SHADER_VISIBILITY 1183 { 1184 ALL = 0, 1185 VERTEX = 1, 1186 HULL = 2, 1187 DOMAIN = 3, 1188 GEOMETRY = 4, 1189 PIXEL = 5 1190 } 1191 1192 enum D3D12_ROOT_PARAMETER_TYPE 1193 { 1194 TYPE_DESCRIPTOR_TABLE = 0, 1195 TYPE_32BIT_CONSTANTS = ( TYPE_DESCRIPTOR_TABLE + 1 ) , 1196 TYPE_CBV = ( TYPE_32BIT_CONSTANTS + 1 ) , 1197 TYPE_SRV = ( TYPE_CBV + 1 ) , 1198 TYPE_UAV = ( TYPE_SRV + 1 ) 1199 } 1200 1201 enum D3D12_ROOT_SIGNATURE_FLAGS 1202 { 1203 NONE = 0, 1204 ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1, 1205 DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2, 1206 DENY_HULL_SHADER_ROOT_ACCESS = 0x4, 1207 DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8, 1208 DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10, 1209 DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20, 1210 ALLOW_STREAM_OUTPUT = 0x40 1211 } 1212 1213 enum D3D12_STATIC_BORDER_COLOR 1214 { 1215 TRANSPARENT_BLACK = 0, 1216 OPAQUE_BLACK = ( TRANSPARENT_BLACK + 1 ) , 1217 OPAQUE_WHITE = ( OPAQUE_BLACK + 1 ) 1218 } 1219 1220 enum D3D12_DESCRIPTOR_RANGE_FLAGS 1221 { 1222 NONE = 0, 1223 DESCRIPTORS_VOLATILE = 0x1, 1224 DATA_VOLATILE = 0x2, 1225 DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4, 1226 DATA_STATIC = 0x8 1227 } 1228 1229 enum D3D12_ROOT_DESCRIPTOR_FLAGS 1230 { 1231 NONE = 0, 1232 DATA_VOLATILE = 0x2, 1233 DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4, 1234 DATA_STATIC = 0x8 1235 } 1236 1237 enum D3D12_QUERY_HEAP_TYPE 1238 { 1239 OCCLUSION = 0, 1240 TIMESTAMP = 1, 1241 PIPELINE_STATISTICS = 2, 1242 SO_STATISTICS = 3, 1243 VIDEO_DECODE_STATISTICS = 4, 1244 COPY_QUEUE_TIMESTAMP = 5 1245 } 1246 1247 enum D3D12_QUERY_TYPE 1248 { 1249 OCCLUSION = 0, 1250 BINARY_OCCLUSION = 1, 1251 TIMESTAMP = 2, 1252 PIPELINE_STATISTICS = 3, 1253 SO_STATISTICS_STREAM0 = 4, 1254 SO_STATISTICS_STREAM1 = 5, 1255 SO_STATISTICS_STREAM2 = 6, 1256 SO_STATISTICS_STREAM3 = 7, 1257 VIDEO_DECODE_STATISTICS = 8 1258 } 1259 1260 enum D3D12_PREDICATION_OP 1261 { 1262 EQUAL_ZERO = 0, 1263 NOT_EQUAL_ZERO = 1 1264 } 1265 1266 enum D3D12_INDIRECT_ARGUMENT_TYPE 1267 { 1268 DRAW = 0, 1269 DRAW_INDEXED = ( DRAW + 1 ) , 1270 DISPATCH = ( DRAW_INDEXED + 1 ) , 1271 VERTEX_BUFFER_VIEW = ( DISPATCH + 1 ) , 1272 INDEX_BUFFER_VIEW = ( VERTEX_BUFFER_VIEW + 1 ) , 1273 CONSTANT = ( INDEX_BUFFER_VIEW + 1 ) , 1274 CONSTANT_BUFFER_VIEW = ( CONSTANT + 1 ) , 1275 SHADER_RESOURCE_VIEW = ( CONSTANT_BUFFER_VIEW + 1 ) , 1276 UNORDERED_ACCESS_VIEW = ( SHADER_RESOURCE_VIEW + 1 ) 1277 } 1278 1279 enum D3D12_WRITEBUFFERIMMEDIATE_MODE 1280 { 1281 DEFAULT = 0, 1282 MARKER_IN = 0x1, 1283 MARKER_OUT = 0x2 1284 } 1285 1286 enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS 1287 { 1288 NONE = 0, 1289 ANY = 0x1, 1290 ALL = 0 1291 } 1292 1293 enum D3D12_RESIDENCY_PRIORITY 1294 { 1295 MINIMUM = 0x28000000, 1296 LOW = 0x50000000, 1297 NORMAL = 0x78000000, 1298 HIGH = 0xa0010000, 1299 MAXIMUM = 0xc8000000 1300 } 1301 1302 enum D3D12_RESIDENCY_FLAGS 1303 { 1304 NONE = 0, 1305 DENY_OVERBUDGET = 0x1 1306 } 1307 1308 /// 1309 /// Structures 1310 /// 1311 1312 struct D3D12_COMMAND_QUEUE_DESC 1313 { 1314 D3D12_COMMAND_LIST_TYPE Type; 1315 int Priority; 1316 D3D12_COMMAND_QUEUE_FLAGS Flags; 1317 uint NodeMask; 1318 } 1319 1320 struct D3D12_INPUT_ELEMENT_DESC 1321 { 1322 LPCSTR SemanticName; 1323 uint SemanticIndex; 1324 DXGI_FORMAT Format; 1325 uint InputSlot; 1326 uint AlignedByteOffset; 1327 D3D12_INPUT_CLASSIFICATION InputSlotClass; 1328 uint InstanceDataStepRate; 1329 } 1330 1331 struct D3D12_SO_DECLARATION_ENTRY 1332 { 1333 uint Stream; 1334 LPCSTR SemanticName; 1335 uint SemanticIndex; 1336 BYTE StartComponent; 1337 BYTE ComponentCount; 1338 BYTE OutputSlot; 1339 } 1340 1341 struct D3D12_VIEWPORT 1342 { 1343 float TopLeftX; 1344 float TopLeftY; 1345 float Width; 1346 float Height; 1347 float MinDepth; 1348 float MaxDepth; 1349 } 1350 1351 1352 struct D3D12_BOX 1353 { 1354 uint left; 1355 uint top; 1356 uint front; 1357 uint right; 1358 uint bottom; 1359 uint back; 1360 } 1361 1362 struct D3D12_DEPTH_STENCILOP_DESC 1363 { 1364 D3D12_STENCIL_OP StencilFailOp; 1365 D3D12_STENCIL_OP StencilDepthFailOp; 1366 D3D12_STENCIL_OP StencilPassOp; 1367 D3D12_COMPARISON_FUNC StencilFunc; 1368 } 1369 1370 struct D3D12_DEPTH_STENCIL_DESC 1371 { 1372 bool DepthEnable; 1373 D3D12_DEPTH_WRITE_MASK DepthWriteMask; 1374 D3D12_COMPARISON_FUNC DepthFunc; 1375 bool StencilEnable; 1376 ubyte StencilReadMask; 1377 ubyte StencilWriteMask; 1378 D3D12_DEPTH_STENCILOP_DESC FrontFace; 1379 D3D12_DEPTH_STENCILOP_DESC BackFace; 1380 } 1381 1382 struct D3D12_DEPTH_STENCIL_DESC1 1383 { 1384 bool DepthEnable; 1385 D3D12_DEPTH_WRITE_MASK DepthWriteMask; 1386 D3D12_COMPARISON_FUNC DepthFunc; 1387 bool StencilEnable; 1388 ubyte StencilReadMask; 1389 ubyte StencilWriteMask; 1390 D3D12_DEPTH_STENCILOP_DESC FrontFace; 1391 D3D12_DEPTH_STENCILOP_DESC BackFace; 1392 bool DepthBoundsTestEnable; 1393 } 1394 1395 struct D3D12_RENDER_TARGET_BLEND_DESC 1396 { 1397 bool BlendEnable; 1398 bool LogicOpEnable; 1399 D3D12_BLEND SrcBlend; 1400 D3D12_BLEND DestBlend; 1401 D3D12_BLEND_OP BlendOp; 1402 D3D12_BLEND SrcBlendAlpha; 1403 D3D12_BLEND DestBlendAlpha; 1404 D3D12_BLEND_OP BlendOpAlpha; 1405 D3D12_LOGIC_OP LogicOp; 1406 ubyte RenderTargetWriteMask; 1407 } 1408 1409 struct D3D12_BLEND_DESC 1410 { 1411 bool AlphaToCoverageEnable; 1412 bool IndependentBlendEnable; 1413 D3D12_RENDER_TARGET_BLEND_DESC[8] RenderTarget; 1414 } 1415 1416 struct D3D12_RASTERIZER_DESC 1417 { 1418 D3D12_FILL_MODE FillMode; 1419 D3D12_CULL_MODE CullMode; 1420 bool FrontCounterClockwise; 1421 int DepthBias; 1422 float DepthBiasClamp; 1423 float SlopeScaledDepthBias; 1424 bool DepthClipEnable; 1425 bool MultisampleEnable; 1426 bool AntialiasedLineEnable; 1427 uint ForcedSampleCount; 1428 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster; 1429 } 1430 1431 struct D3D12_SHADER_BYTECODE 1432 { 1433 const void *pShaderBytecode; 1434 size_t BytecodeLength; 1435 } 1436 1437 struct D3D12_STREAM_OUTPUT_DESC 1438 { 1439 const D3D12_SO_DECLARATION_ENTRY *pSODeclaration; 1440 uint NumEntries; 1441 const uint *pBufferStrides; 1442 uint NumStrides; 1443 uint RasterizedStream; 1444 } 1445 1446 struct D3D12_INPUT_LAYOUT_DESC 1447 { 1448 const D3D12_INPUT_ELEMENT_DESC *pInputElementDescs; 1449 uint NumElements; 1450 } 1451 1452 struct D3D12_CACHED_PIPELINE_STATE 1453 { 1454 const void *pCachedBlob; 1455 size_t CachedBlobSizeInBytes; 1456 } 1457 1458 struct D3D12_GRAPHICS_PIPELINE_STATE_DESC 1459 { 1460 ID3D12RootSignature pRootSignature; 1461 D3D12_SHADER_BYTECODE VS; 1462 D3D12_SHADER_BYTECODE PS; 1463 D3D12_SHADER_BYTECODE DS; 1464 D3D12_SHADER_BYTECODE HS; 1465 D3D12_SHADER_BYTECODE GS; 1466 D3D12_STREAM_OUTPUT_DESC StreamOutput; 1467 D3D12_BLEND_DESC BlendState; 1468 uint SampleMask; 1469 D3D12_RASTERIZER_DESC RasterizerState; 1470 D3D12_DEPTH_STENCIL_DESC DepthStencilState; 1471 D3D12_INPUT_LAYOUT_DESC InputLayout; 1472 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue; 1473 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType; 1474 uint NumRenderTargets; 1475 DXGI_FORMAT[8] RTVFormats; 1476 DXGI_FORMAT DSVFormat; 1477 DXGI_SAMPLE_DESC SampleDesc; 1478 uint NodeMask; 1479 D3D12_CACHED_PIPELINE_STATE CachedPSO; 1480 D3D12_PIPELINE_STATE_FLAGS Flags; 1481 } 1482 1483 struct D3D12_COMPUTE_PIPELINE_STATE_DESC 1484 { 1485 ID3D12RootSignature pRootSignature; 1486 D3D12_SHADER_BYTECODE CS; 1487 uint NodeMask; 1488 D3D12_CACHED_PIPELINE_STATE CachedPSO; 1489 D3D12_PIPELINE_STATE_FLAGS Flags; 1490 } 1491 1492 struct D3D12_RT_FORMAT_ARRAY 1493 { 1494 DXGI_FORMAT[8] RTFormats; 1495 uint NumRenderTargets; 1496 } 1497 1498 struct D3D12_PIPELINE_STATE_STREAM_DESC 1499 { 1500 size_t SizeInBytes; 1501 void *pPipelineStateSubobjectStream; 1502 } 1503 1504 struct D3D12_FEATURE_DATA_D3D12_OPTIONS 1505 { 1506 bool DoublePrecisionFloatShaderOps; 1507 bool OutputMergerLogicOp; 1508 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport; 1509 D3D12_TILED_RESOURCES_TIER TiledResourcesTier; 1510 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier; 1511 bool PSSpecifiedStencilRefSupported; 1512 bool TypedUAVLoadAdditionalFormats; 1513 bool ROVsSupported; 1514 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier; 1515 uint MaxGPUVirtualAddressBitsPerResource; 1516 bool StandardSwizzle64KBSupported; 1517 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier; 1518 bool CrossAdapterRowMajorTextureSupported; 1519 bool VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation; 1520 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier; 1521 } 1522 1523 struct D3D12_FEATURE_DATA_D3D12_OPTIONS1 1524 { 1525 bool WaveOps; 1526 uint WaveLaneCountMin; 1527 uint WaveLaneCountMax; 1528 uint TotalLaneCount; 1529 bool ExpandedComputeResourceStates; 1530 bool Int64ShaderOps; 1531 } 1532 1533 struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 1534 { 1535 bool DepthBoundsTestSupported; 1536 D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier; 1537 } 1538 1539 struct D3D12_FEATURE_DATA_ROOT_SIGNATURE 1540 { 1541 D3D_ROOT_SIGNATURE_VERSION HighestVersion; 1542 } 1543 1544 struct D3D12_FEATURE_DATA_ARCHITECTURE 1545 { 1546 uint NodeIndex; 1547 bool TileBasedRenderer; 1548 bool UMA; 1549 bool CacheCoherentUMA; 1550 } 1551 1552 struct D3D12_FEATURE_DATA_ARCHITECTURE1 1553 { 1554 uint NodeIndex; 1555 bool TileBasedRenderer; 1556 bool UMA; 1557 bool CacheCoherentUMA; 1558 bool IsolatedMMU; 1559 } 1560 1561 struct D3D12_FEATURE_DATA_FEATURE_LEVELS 1562 { 1563 uint NumFeatureLevels; 1564 const D3D_FEATURE_LEVEL *pFeatureLevelsRequested; 1565 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel; 1566 } 1567 1568 struct D3D12_FEATURE_DATA_SHADER_MODEL 1569 { 1570 D3D_SHADER_MODEL HighestShaderModel; 1571 } 1572 1573 struct D3D12_FEATURE_DATA_FORMAT_SUPPORT 1574 { 1575 DXGI_FORMAT Format; 1576 D3D12_FORMAT_SUPPORT1 Support1; 1577 D3D12_FORMAT_SUPPORT2 Support2; 1578 } 1579 1580 struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS 1581 { 1582 DXGI_FORMAT Format; 1583 uint SampleCount; 1584 D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags; 1585 uint NumQualityLevels; 1586 } 1587 1588 struct D3D12_FEATURE_DATA_FORMAT_INFO 1589 { 1590 DXGI_FORMAT Format; 1591 ubyte PlaneCount; 1592 } 1593 1594 struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT 1595 { 1596 uint MaxGPUVirtualAddressBitsPerResource; 1597 uint MaxGPUVirtualAddressBitsPerProcess; 1598 } 1599 1600 struct D3D12_FEATURE_DATA_SHADER_CACHE 1601 { 1602 D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags; 1603 } 1604 1605 struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY 1606 { 1607 D3D12_COMMAND_LIST_TYPE CommandListType; 1608 uint Priority; 1609 bool PriorityForTypeIsSupported; 1610 } 1611 1612 struct D3D12_FEATURE_DATA_D3D12_OPTIONS3 1613 { 1614 bool CopyQueueTimestampQueriesSupported; 1615 bool CastingFullyTypedFormatSupported; 1616 D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags; 1617 D3D12_VIEW_INSTANCING_TIER ViewInstancingTier; 1618 bool BarycentricsSupported; 1619 } 1620 1621 struct D3D12_FEATURE_DATA_EXISTING_HEAPS 1622 { 1623 bool Supported; 1624 } 1625 1626 struct D3D12_RESOURCE_ALLOCATION_INFO 1627 { 1628 ulong SizeInBytes; 1629 ulong Alignment; 1630 } 1631 1632 struct D3D12_HEAP_PROPERTIES 1633 { 1634 D3D12_HEAP_TYPE Type; 1635 D3D12_CPU_PAGE_PROPERTY CPUPageProperty; 1636 D3D12_MEMORY_POOL MemoryPoolPreference; 1637 uint CreationNodeMask; 1638 uint VisibleNodeMask; 1639 } 1640 1641 struct D3D12_HEAP_DESC 1642 { 1643 ulong SizeInBytes; 1644 D3D12_HEAP_PROPERTIES Properties; 1645 ulong Alignment; 1646 D3D12_HEAP_FLAGS Flags; 1647 } 1648 1649 struct D3D12_RESOURCE_DESC 1650 { 1651 D3D12_RESOURCE_DIMENSION Dimension; 1652 ulong Alignment; 1653 ulong Width; 1654 uint Height; 1655 ushort DepthOrArraySize; 1656 ushort MipLevels; 1657 DXGI_FORMAT Format; 1658 DXGI_SAMPLE_DESC SampleDesc; 1659 D3D12_TEXTURE_LAYOUT Layout; 1660 D3D12_RESOURCE_FLAGS Flags; 1661 } 1662 1663 struct D3D12_DEPTH_STENCIL_VALUE 1664 { 1665 float Depth; 1666 ubyte Stencil; 1667 } 1668 1669 struct D3D12_CLEAR_VALUE 1670 { 1671 DXGI_FORMAT Format; 1672 union 1673 { 1674 float[4] Color; 1675 D3D12_DEPTH_STENCIL_VALUE DepthStencil; 1676 } 1677 } 1678 1679 struct D3D12_RANGE 1680 { 1681 size_t Begin; 1682 size_t End; 1683 } 1684 1685 struct D3D12_RANGE_UINT64 1686 { 1687 ulong Begin; 1688 ulong End; 1689 } 1690 1691 struct D3D12_SUBRESOURCE_RANGE_UINT64 1692 { 1693 uint Subresource; 1694 D3D12_RANGE_UINT64 Range; 1695 } 1696 1697 struct D3D12_SUBRESOURCE_INFO 1698 { 1699 ulong Offset; 1700 uint RowPitch; 1701 uint DepthPitch; 1702 } 1703 1704 struct D3D12_TILED_RESOURCE_COORDINATE 1705 { 1706 uint X; 1707 uint Y; 1708 uint Z; 1709 uint Subresource; 1710 } 1711 1712 struct D3D12_TILE_REGION_SIZE 1713 { 1714 uint NumTiles; 1715 bool UseBox; 1716 uint Width; 1717 ushort Height; 1718 ushort Depth; 1719 } 1720 1721 struct D3D12_SUBRESOURCE_TILING 1722 { 1723 uint WidthInTiles; 1724 ushort HeightInTiles; 1725 ushort DepthInTiles; 1726 uint StartTileIndexInOverallResource; 1727 } 1728 1729 struct D3D12_TILE_SHAPE 1730 { 1731 uint WidthInTexels; 1732 uint HeightInTexels; 1733 uint DepthInTexels; 1734 } 1735 1736 struct D3D12_PACKED_MIP_INFO 1737 { 1738 ubyte NumStandardMips; 1739 ubyte NumPackedMips; 1740 uint NumTilesForPackedMips; 1741 uint StartTileIndexInOverallResource; 1742 } 1743 1744 struct D3D12_RESOURCE_TRANSITION_BARRIER 1745 { 1746 ID3D12Resource pResource; 1747 uint Subresource; 1748 D3D12_RESOURCE_STATES StateBefore; 1749 D3D12_RESOURCE_STATES StateAfter; 1750 } 1751 1752 struct D3D12_RESOURCE_ALIASING_BARRIER 1753 { 1754 ID3D12Resource pResourceBefore; 1755 ID3D12Resource pResourceAfter; 1756 } 1757 1758 struct D3D12_RESOURCE_UAV_BARRIER 1759 { 1760 ID3D12Resource pResource; 1761 } 1762 1763 struct D3D12_RESOURCE_BARRIER 1764 { 1765 D3D12_RESOURCE_BARRIER_TYPE Type; 1766 D3D12_RESOURCE_BARRIER_FLAGS Flags; 1767 union 1768 { 1769 D3D12_RESOURCE_TRANSITION_BARRIER Transition; 1770 D3D12_RESOURCE_ALIASING_BARRIER Aliasing; 1771 D3D12_RESOURCE_UAV_BARRIER UAV; 1772 } 1773 } 1774 1775 struct D3D12_SUBRESOURCE_FOOTPRINT 1776 { 1777 DXGI_FORMAT Format; 1778 uint Width; 1779 uint Height; 1780 uint Depth; 1781 uint RowPitch; 1782 } 1783 1784 struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT 1785 { 1786 ulong Offset; 1787 D3D12_SUBRESOURCE_FOOTPRINT Footprint; 1788 } 1789 1790 struct D3D12_TEXTURE_COPY_LOCATION 1791 { 1792 ID3D12Resource pResource; 1793 D3D12_TEXTURE_COPY_TYPE Type; 1794 union 1795 { 1796 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint; 1797 uint SubresourceIndex; 1798 } 1799 } 1800 1801 struct D3D12_SAMPLE_POSITION 1802 { 1803 byte X; 1804 byte Y; 1805 } 1806 1807 struct D3D12_VIEW_INSTANCE_LOCATION 1808 { 1809 uint ViewportArrayIndex; 1810 uint RenderTargetArrayIndex; 1811 } 1812 1813 struct D3D12_VIEW_INSTANCING_DESC 1814 { 1815 uint ViewInstanceCount; 1816 const D3D12_VIEW_INSTANCE_LOCATION *pViewInstanceLocations; 1817 D3D12_VIEW_INSTANCING_FLAGS Flags; 1818 } 1819 1820 struct D3D12_BUFFER_SRV 1821 { 1822 ulong FirstElement; 1823 uint NumElements; 1824 uint StructureByteStride; 1825 D3D12_BUFFER_SRV_FLAGS Flags; 1826 } 1827 1828 struct D3D12_TEX1D_SRV 1829 { 1830 uint MostDetailedMip; 1831 uint MipLevels; 1832 float ResourceMinLODClamp; 1833 } 1834 1835 struct D3D12_TEX1D_ARRAY_SRV 1836 { 1837 uint MostDetailedMip; 1838 uint MipLevels; 1839 uint FirstArraySlice; 1840 uint ArraySize; 1841 float ResourceMinLODClamp; 1842 } 1843 1844 struct D3D12_TEX2D_SRV 1845 { 1846 uint MostDetailedMip; 1847 uint MipLevels; 1848 uint PlaneSlice; 1849 float ResourceMinLODClamp; 1850 } 1851 1852 struct D3D12_TEX2D_ARRAY_SRV 1853 { 1854 uint MostDetailedMip; 1855 uint MipLevels; 1856 uint FirstArraySlice; 1857 uint ArraySize; 1858 uint PlaneSlice; 1859 float ResourceMinLODClamp; 1860 } 1861 1862 struct D3D12_TEX3D_SRV 1863 { 1864 uint MostDetailedMip; 1865 uint MipLevels; 1866 float ResourceMinLODClamp; 1867 } 1868 1869 struct D3D12_TEXCUBE_SRV 1870 { 1871 uint MostDetailedMip; 1872 uint MipLevels; 1873 float ResourceMinLODClamp; 1874 } 1875 1876 struct D3D12_TEXCUBE_ARRAY_SRV 1877 { 1878 uint MostDetailedMip; 1879 uint MipLevels; 1880 uint First2DArrayFace; 1881 uint NumCubes; 1882 float ResourceMinLODClamp; 1883 } 1884 1885 struct D3D12_TEX2DMS_SRV 1886 { 1887 uint UnusedField_NothingToDefine; 1888 } 1889 1890 struct D3D12_TEX2DMS_ARRAY_SRV 1891 { 1892 uint FirstArraySlice; 1893 uint ArraySize; 1894 } 1895 1896 struct D3D12_SHADER_RESOURCE_VIEW_DESC 1897 { 1898 DXGI_FORMAT Format; 1899 D3D12_SRV_DIMENSION ViewDimension; 1900 uint Shader4ComponentMapping; 1901 union 1902 { 1903 D3D12_BUFFER_SRV Buffer; 1904 D3D12_TEX1D_SRV Texture1D; 1905 D3D12_TEX1D_ARRAY_SRV Texture1DArray; 1906 D3D12_TEX2D_SRV Texture2D; 1907 D3D12_TEX2D_ARRAY_SRV Texture2DArray; 1908 D3D12_TEX2DMS_SRV Texture2DMS; 1909 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray; 1910 D3D12_TEX3D_SRV Texture3D; 1911 D3D12_TEXCUBE_SRV TextureCube; 1912 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray; 1913 } 1914 } 1915 1916 struct D3D12_CONSTANT_BUFFER_VIEW_DESC 1917 { 1918 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1919 uint SizeInBytes; 1920 } 1921 1922 struct D3D12_SAMPLER_DESC 1923 { 1924 D3D12_FILTER Filter; 1925 D3D12_TEXTURE_ADDRESS_MODE AddressU; 1926 D3D12_TEXTURE_ADDRESS_MODE AddressV; 1927 D3D12_TEXTURE_ADDRESS_MODE AddressW; 1928 float MipLODBias; 1929 uint MaxAnisotropy; 1930 D3D12_COMPARISON_FUNC ComparisonFunc; 1931 float[4] BorderColor; 1932 float MinLOD; 1933 float MaxLOD; 1934 } 1935 1936 struct D3D12_BUFFER_UAV 1937 { 1938 ulong FirstElement; 1939 uint NumElements; 1940 uint StructureByteStride; 1941 ulong CounterOffsetInBytes; 1942 D3D12_BUFFER_UAV_FLAGS Flags; 1943 } 1944 1945 struct D3D12_TEX1D_UAV 1946 { 1947 uint MipSlice; 1948 } 1949 1950 struct D3D12_TEX1D_ARRAY_UAV 1951 { 1952 uint MipSlice; 1953 uint FirstArraySlice; 1954 uint ArraySize; 1955 } 1956 1957 struct D3D12_TEX2D_UAV 1958 { 1959 uint MipSlice; 1960 uint PlaneSlice; 1961 } 1962 1963 struct D3D12_TEX2D_ARRAY_UAV 1964 { 1965 uint MipSlice; 1966 uint FirstArraySlice; 1967 uint ArraySize; 1968 uint PlaneSlice; 1969 } 1970 1971 struct D3D12_TEX3D_UAV 1972 { 1973 uint MipSlice; 1974 uint FirstWSlice; 1975 uint WSize; 1976 } 1977 1978 struct D3D12_UNORDERED_ACCESS_VIEW_DESC 1979 { 1980 DXGI_FORMAT Format; 1981 D3D12_UAV_DIMENSION ViewDimension; 1982 union 1983 { 1984 D3D12_BUFFER_UAV Buffer; 1985 D3D12_TEX1D_UAV Texture1D; 1986 D3D12_TEX1D_ARRAY_UAV Texture1DArray; 1987 D3D12_TEX2D_UAV Texture2D; 1988 D3D12_TEX2D_ARRAY_UAV Texture2DArray; 1989 D3D12_TEX3D_UAV Texture3D; 1990 } 1991 } 1992 1993 struct D3D12_BUFFER_RTV 1994 { 1995 ulong FirstElement; 1996 uint NumElements; 1997 } 1998 1999 struct D3D12_TEX1D_RTV 2000 { 2001 uint MipSlice; 2002 } 2003 2004 struct D3D12_TEX1D_ARRAY_RTV 2005 { 2006 uint MipSlice; 2007 uint FirstArraySlice; 2008 uint ArraySize; 2009 } 2010 2011 struct D3D12_TEX2D_RTV 2012 { 2013 uint MipSlice; 2014 uint PlaneSlice; 2015 } 2016 2017 struct D3D12_TEX2DMS_RTV 2018 { 2019 uint UnusedField_NothingToDefine; 2020 } 2021 2022 struct D3D12_TEX2D_ARRAY_RTV 2023 { 2024 uint MipSlice; 2025 uint FirstArraySlice; 2026 uint ArraySize; 2027 uint PlaneSlice; 2028 } 2029 2030 struct D3D12_TEX2DMS_ARRAY_RTV 2031 { 2032 uint FirstArraySlice; 2033 uint ArraySize; 2034 } 2035 2036 struct D3D12_TEX3D_RTV 2037 { 2038 uint MipSlice; 2039 uint FirstWSlice; 2040 uint WSize; 2041 } 2042 2043 struct D3D12_RENDER_TARGET_VIEW_DESC 2044 { 2045 DXGI_FORMAT Format; 2046 D3D12_RTV_DIMENSION ViewDimension; 2047 union 2048 { 2049 D3D12_BUFFER_RTV Buffer; 2050 D3D12_TEX1D_RTV Texture1D; 2051 D3D12_TEX1D_ARRAY_RTV Texture1DArray; 2052 D3D12_TEX2D_RTV Texture2D; 2053 D3D12_TEX2D_ARRAY_RTV Texture2DArray; 2054 D3D12_TEX2DMS_RTV Texture2DMS; 2055 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray; 2056 D3D12_TEX3D_RTV Texture3D; 2057 } 2058 } 2059 2060 struct D3D12_TEX1D_DSV 2061 { 2062 uint MipSlice; 2063 } 2064 2065 struct D3D12_TEX1D_ARRAY_DSV 2066 { 2067 uint MipSlice; 2068 uint FirstArraySlice; 2069 uint ArraySize; 2070 } 2071 2072 struct D3D12_TEX2D_DSV 2073 { 2074 uint MipSlice; 2075 } 2076 2077 struct D3D12_TEX2D_ARRAY_DSV 2078 { 2079 uint MipSlice; 2080 uint FirstArraySlice; 2081 uint ArraySize; 2082 } 2083 2084 struct D3D12_TEX2DMS_DSV 2085 { 2086 uint UnusedField_NothingToDefine; 2087 } 2088 2089 struct D3D12_TEX2DMS_ARRAY_DSV 2090 { 2091 uint FirstArraySlice; 2092 uint ArraySize; 2093 } 2094 2095 struct D3D12_DEPTH_STENCIL_VIEW_DESC 2096 { 2097 DXGI_FORMAT Format; 2098 D3D12_DSV_DIMENSION ViewDimension; 2099 D3D12_DSV_FLAGS Flags; 2100 union 2101 { 2102 D3D12_TEX1D_DSV Texture1D; 2103 D3D12_TEX1D_ARRAY_DSV Texture1DArray; 2104 D3D12_TEX2D_DSV Texture2D; 2105 D3D12_TEX2D_ARRAY_DSV Texture2DArray; 2106 D3D12_TEX2DMS_DSV Texture2DMS; 2107 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray; 2108 } 2109 } 2110 2111 struct D3D12_DESCRIPTOR_HEAP_DESC 2112 { 2113 D3D12_DESCRIPTOR_HEAP_TYPE Type; 2114 uint NumDescriptors; 2115 D3D12_DESCRIPTOR_HEAP_FLAGS Flags; 2116 uint NodeMask; 2117 } 2118 2119 struct D3D12_DESCRIPTOR_RANGE 2120 { 2121 D3D12_DESCRIPTOR_RANGE_TYPE RangeType; 2122 uint NumDescriptors; 2123 uint BaseShaderRegister; 2124 uint RegisterSpace; 2125 uint OffsetInDescriptorsFromTableStart; 2126 } 2127 2128 struct D3D12_ROOT_DESCRIPTOR_TABLE 2129 { 2130 uint NumDescriptorRanges; 2131 const D3D12_DESCRIPTOR_RANGE *pDescriptorRanges; 2132 } 2133 2134 struct D3D12_ROOT_CONSTANTS 2135 { 2136 uint ShaderRegister; 2137 uint RegisterSpace; 2138 uint Num32BitValues; 2139 } 2140 2141 struct D3D12_ROOT_DESCRIPTOR 2142 { 2143 uint ShaderRegister; 2144 uint RegisterSpace; 2145 } 2146 2147 struct D3D12_ROOT_PARAMETER 2148 { 2149 D3D12_ROOT_PARAMETER_TYPE ParameterType; 2150 union 2151 { 2152 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable; 2153 D3D12_ROOT_CONSTANTS Constants; 2154 D3D12_ROOT_DESCRIPTOR Descriptor; 2155 } 2156 D3D12_SHADER_VISIBILITY ShaderVisibility; 2157 } 2158 2159 struct D3D12_STATIC_SAMPLER_DESC 2160 { 2161 D3D12_FILTER Filter; 2162 D3D12_TEXTURE_ADDRESS_MODE AddressU; 2163 D3D12_TEXTURE_ADDRESS_MODE AddressV; 2164 D3D12_TEXTURE_ADDRESS_MODE AddressW; 2165 float MipLODBias; 2166 uint MaxAnisotropy; 2167 D3D12_COMPARISON_FUNC ComparisonFunc; 2168 D3D12_STATIC_BORDER_COLOR BorderColor; 2169 float MinLOD; 2170 float MaxLOD; 2171 uint ShaderRegister; 2172 uint RegisterSpace; 2173 D3D12_SHADER_VISIBILITY ShaderVisibility; 2174 } 2175 2176 struct D3D12_ROOT_SIGNATURE_DESC 2177 { 2178 uint NumParameters; 2179 const D3D12_ROOT_PARAMETER *pParameters; 2180 uint NumStaticSamplers; 2181 const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers; 2182 D3D12_ROOT_SIGNATURE_FLAGS Flags; 2183 } 2184 2185 struct D3D12_DESCRIPTOR_RANGE1 2186 { 2187 D3D12_DESCRIPTOR_RANGE_TYPE RangeType; 2188 uint NumDescriptors; 2189 uint BaseShaderRegister; 2190 uint RegisterSpace; 2191 D3D12_DESCRIPTOR_RANGE_FLAGS Flags; 2192 uint OffsetInDescriptorsFromTableStart; 2193 } 2194 2195 struct D3D12_ROOT_DESCRIPTOR_TABLE1 2196 { 2197 uint NumDescriptorRanges; 2198 const D3D12_DESCRIPTOR_RANGE1 *pDescriptorRanges; 2199 } 2200 2201 struct D3D12_ROOT_DESCRIPTOR1 2202 { 2203 uint ShaderRegister; 2204 uint RegisterSpace; 2205 D3D12_ROOT_DESCRIPTOR_FLAGS Flags; 2206 } 2207 2208 struct D3D12_ROOT_PARAMETER1 2209 { 2210 D3D12_ROOT_PARAMETER_TYPE ParameterType; 2211 union 2212 { 2213 D3D12_ROOT_DESCRIPTOR_TABLE1 DescriptorTable; 2214 D3D12_ROOT_CONSTANTS Constants; 2215 D3D12_ROOT_DESCRIPTOR1 Descriptor; 2216 } 2217 D3D12_SHADER_VISIBILITY ShaderVisibility; 2218 } 2219 2220 struct D3D12_ROOT_SIGNATURE_DESC1 2221 { 2222 uint NumParameters; 2223 const D3D12_ROOT_PARAMETER1 *pParameters; 2224 uint NumStaticSamplers; 2225 const D3D12_STATIC_SAMPLER_DESC *pStaticSamplers; 2226 D3D12_ROOT_SIGNATURE_FLAGS Flags; 2227 } 2228 2229 struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC 2230 { 2231 D3D_ROOT_SIGNATURE_VERSION Version; 2232 union 2233 { 2234 D3D12_ROOT_SIGNATURE_DESC Desc_1_0; 2235 D3D12_ROOT_SIGNATURE_DESC1 Desc_1_1; 2236 } 2237 } 2238 2239 struct D3D12_CPU_DESCRIPTOR_HANDLE 2240 { 2241 size_t ptr; 2242 } 2243 2244 struct D3D12_GPU_DESCRIPTOR_HANDLE 2245 { 2246 ulong ptr; 2247 } 2248 2249 struct D3D12_DISCARD_REGION 2250 { 2251 uint NumRects; 2252 const D3D12_RECT *pRects; 2253 uint FirstSubresource; 2254 uint NumSubresources; 2255 } 2256 2257 struct D3D12_QUERY_HEAP_DESC 2258 { 2259 D3D12_QUERY_HEAP_TYPE Type; 2260 uint Count; 2261 uint NodeMask; 2262 } 2263 2264 struct D3D12_QUERY_DATA_PIPELINE_STATISTICS 2265 { 2266 ulong IAVertices; 2267 ulong IAPrimitives; 2268 ulong VSInvocations; 2269 ulong GSInvocations; 2270 ulong GSPrimitives; 2271 ulong CInvocations; 2272 ulong CPrimitives; 2273 ulong PSInvocations; 2274 ulong HSInvocations; 2275 ulong DSInvocations; 2276 ulong CSInvocations; 2277 } 2278 2279 struct D3D12_QUERY_DATA_SO_STATISTICS 2280 { 2281 ulong NumPrimitivesWritten; 2282 ulong PrimitivesStorageNeeded; 2283 } 2284 2285 struct D3D12_STREAM_OUTPUT_BUFFER_VIEW 2286 { 2287 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 2288 ulong SizeInBytes; 2289 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation; 2290 } 2291 2292 struct D3D12_DRAW_ARGUMENTS 2293 { 2294 uint VertexCountPerInstance; 2295 uint InstanceCount; 2296 uint StartVertexLocation; 2297 uint StartInstanceLocation; 2298 } 2299 2300 struct D3D12_DRAW_INDEXED_ARGUMENTS 2301 { 2302 uint IndexCountPerInstance; 2303 uint InstanceCount; 2304 uint StartIndexLocation; 2305 int BaseVertexLocation; 2306 uint StartInstanceLocation; 2307 } 2308 2309 struct D3D12_DISPATCH_ARGUMENTS 2310 { 2311 uint ThreadGroupCountX; 2312 uint ThreadGroupCountY; 2313 uint ThreadGroupCountZ; 2314 } 2315 2316 struct D3D12_VERTEX_BUFFER_VIEW 2317 { 2318 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 2319 uint SizeInBytes; 2320 uint StrideInBytes; 2321 } 2322 2323 struct D3D12_INDEX_BUFFER_VIEW 2324 { 2325 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 2326 uint SizeInBytes; 2327 DXGI_FORMAT Format; 2328 } 2329 2330 struct D3D12_INDIRECT_ARGUMENT_DESC 2331 { 2332 D3D12_INDIRECT_ARGUMENT_TYPE Type; 2333 union 2334 { 2335 struct VertexBuffer 2336 { 2337 uint Slot; 2338 }; 2339 struct Constant 2340 { 2341 uint RootParameterIndex; 2342 uint DestOffsetIn32BitValues; 2343 uint Num32BitValuesToSet; 2344 }; 2345 struct ConstantBufferView 2346 { 2347 uint RootParameterIndex; 2348 }; 2349 struct ShaderResourceView 2350 { 2351 uint RootParameterIndex; 2352 }; 2353 struct UnorderedAccessView 2354 { 2355 uint RootParameterIndex; 2356 }; 2357 }; 2358 } 2359 2360 struct D3D12_COMMAND_SIGNATURE_DESC 2361 { 2362 uint ByteStride; 2363 uint NumArgumentDescs; 2364 const D3D12_INDIRECT_ARGUMENT_DESC *pArgumentDescs; 2365 uint NodeMask; 2366 } 2367 2368 struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER 2369 { 2370 D3D12_GPU_VIRTUAL_ADDRESS Dest; 2371 uint Value; 2372 } 2373 struct D3D12_SUBRESOURCE_DATA 2374 { 2375 const void *pData; 2376 LONG_PTR RowPitch; 2377 LONG_PTR SlicePitch; 2378 } 2379 2380 struct D3D12_MEMCPY_DEST 2381 { 2382 void *pData; 2383 size_t RowPitch; 2384 size_t SlicePitch; 2385 } 2386 2387 struct D3D12_RESOURCE_ALLOCATION_INFO1 2388 { 2389 ulong Offset; 2390 ulong Alignment; 2391 ulong SizeInBytes; 2392 } 2393 2394 /// 2395 /// Interfaces 2396 /// 2397 2398 mixin(uuid!(ID3D12Object, "c4fec28f-7966-4e95-9f94-f431cb56c3b8")); 2399 public interface ID3D12Object : IUnknown 2400 { 2401 extern(Windows): 2402 HRESULT GetPrivateData(REFGUID guid, uint *pDataSize, void *pData); 2403 HRESULT SetName(const wchar *Name); 2404 HRESULT SetPrivateData(REFGUID guid, uint DataSize, const void *pData); 2405 HRESULT SetPrivateDataInterface(REFGUID guid, const IUnknown *pData); 2406 } 2407 2408 mixin(uuid!(ID3D12DeviceChild, "905db94b-a00c-4140-9df5-2b64ca9ea357")); 2409 public interface ID3D12DeviceChild : ID3D12Object 2410 { 2411 extern(Windows): 2412 HRESULT GetDevice(REFIID riid, void **ppvDevice); 2413 } 2414 2415 mixin(uuid!(ID3D12RootSignature, "c54a6b66-72df-4ee8-8be5-a946a1429214")); 2416 public interface ID3D12RootSignature : ID3D12DeviceChild 2417 { 2418 extern(Windows): 2419 } 2420 2421 mixin(uuid!(ID3D12RootSignatureDeserializer, "34AB647B-3CC8-46AC-841B-C0965645C046")); 2422 public interface ID3D12RootSignatureDeserializer : IUnknown 2423 { 2424 extern(Windows): 2425 D3D12_ROOT_SIGNATURE_DESC* GetRootSignatureDesc(); 2426 } 2427 2428 mixin(uuid!(ID3D12VersionedRootSignatureDeserializer, "7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")); 2429 public interface ID3D12VersionedRootSignatureDeserializer : IUnknown 2430 { 2431 extern(Windows): 2432 HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION convertToVersion, const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **ppDesc); 2433 const D3D12_VERSIONED_ROOT_SIGNATURE_DESC* GetUnconvertedRootSignatureDesc(); 2434 } 2435 2436 mixin(uuid!(ID3D12Pageable, "63ee58fb-1268-4835-86da-f008ce62f0d6")); 2437 public interface ID3D12Pageable : ID3D12DeviceChild 2438 { 2439 extern(Windows): 2440 } 2441 2442 mixin(uuid!(ID3D12Heap, "6b3b2502-6e51-45b3-90ee-9884265e8df3")); 2443 public interface ID3D12Heap : ID3D12Pageable 2444 { 2445 extern(Windows): 2446 D3D12_HEAP_DESC GetDesc(); 2447 } 2448 2449 mixin(uuid!(ID3D12Resource, "696442be-a72e-4059-bc79-5b5c98040fad")); 2450 public interface ID3D12Resource : ID3D12Pageable 2451 { 2452 extern(Windows): 2453 HRESULT Map(uint Subresource, const D3D12_RANGE *pReadRange, void **ppData); 2454 void Unmap(uint Subresource, const D3D12_RANGE *pWrittenRange); 2455 D3D12_RESOURCE_DESC GetDesc(); 2456 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress(); 2457 HRESULT WriteToSubresource(uint DstSubresource, const D3D12_BOX *pDstBox, const void *pSrcData, uint SrcRowPitch, uint SrcDepthPitch); 2458 HRESULT ReadFromSubresource(void *pDstData, uint DstRowPitch, uint DstDepthPitch, uint SrcSubresource, const D3D12_BOX *pSrcBox); 2459 HRESULT GetHeapProperties(D3D12_HEAP_PROPERTIES *pHeapProperties, D3D12_HEAP_FLAGS *pHeapFlags); 2460 } 2461 2462 mixin(uuid!(ID3D12CommandAllocator, "6102dee4-af59-4b09-b999-b44d73f09b24")); 2463 public interface ID3D12CommandAllocator : ID3D12Pageable 2464 { 2465 extern(Windows): 2466 HRESULT Reset(); 2467 } 2468 2469 mixin(uuid!(ID3D12Fence, "0a753dcf-c4d8-4b91-adf6-be5a60d95a76")); 2470 public interface ID3D12Fence : ID3D12Pageable 2471 { 2472 extern(Windows): 2473 ulong GetCompletedValue(); 2474 HRESULT SetEventOnCompletion(ulong Value, HANDLE hEvent); 2475 HRESULT Signal(ulong Value); 2476 } 2477 2478 mixin(uuid!(ID3D12Fence1, "433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")); 2479 public interface ID3D12Fence1 : ID3D12Fence 2480 { 2481 extern(Windows): 2482 D3D12_FENCE_FLAGS GetCreationFlags(); 2483 } 2484 2485 mixin(uuid!(ID3D12PipelineState, "765a30f3-f624-4c6f-a828-ace948622445")); 2486 public interface ID3D12PipelineState : ID3D12Pageable 2487 { 2488 extern(Windows): 2489 HRESULT GetCachedBlob(ID3DBlob *ppBlob); 2490 } 2491 2492 mixin(uuid!(ID3D12DescriptorHeap, "8efb471d-616c-4f49-90f7-127bb763fa51")); 2493 public interface ID3D12DescriptorHeap : ID3D12Pageable 2494 { 2495 extern(Windows): 2496 D3D12_DESCRIPTOR_HEAP_DESC GetDesc(); 2497 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart(); 2498 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart(); 2499 } 2500 2501 mixin(uuid!(ID3D12QueryHeap, "0d9658ae-ed45-469e-a61d-970ec583cab4")); 2502 public interface ID3D12QueryHeap : ID3D12Pageable 2503 { 2504 extern(Windows): 2505 } 2506 2507 mixin(uuid!(ID3D12CommandSignature, "c36a797c-ec80-4f0a-8985-a7b2475082d1")); 2508 public interface ID3D12CommandSignature : ID3D12Pageable 2509 { 2510 extern(Windows): 2511 } 2512 2513 mixin(uuid!(ID3D12CommandList, "7116d91c-e7e4-47ce-b8c6-ec8168f437e5")); 2514 public interface ID3D12CommandList : ID3D12DeviceChild 2515 { 2516 extern(Windows): 2517 D3D12_COMMAND_LIST_TYPE GetType(); 2518 } 2519 2520 mixin(uuid!(ID3D12GraphicsCommandList, "5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")); 2521 public interface ID3D12GraphicsCommandList : ID3D12CommandList 2522 { 2523 extern(Windows): 2524 HRESULT Close(); 2525 HRESULT Reset(ID3D12CommandAllocator pAllocator, ID3D12PipelineState pInitialState); 2526 void ClearState(ID3D12PipelineState pPipelineState); 2527 void DrawInstanced(uint VertexCountPerInstance, uint InstanceCount, uint StartVertexLocation, uint StartInstanceLocation); 2528 void DrawIndexedInstanced(uint IndexCountPerInstance, uint InstanceCount, uint StartIndexLocation, int BaseVertexLocation, uint StartInstanceLocation); 2529 void Dispatch(uint ThreadGroupCountX, uint ThreadGroupCountY, uint ThreadGroupCountZ); 2530 void CopyBufferRegion(ID3D12Resource pDstBuffer, ulong DstOffset, ID3D12Resource pSrcBuffer, ulong SrcOffset, ulong NumBytes); 2531 void CopyTextureRegion(const D3D12_TEXTURE_COPY_LOCATION *pDst, uint DstX, uint DstY, uint DstZ, const D3D12_TEXTURE_COPY_LOCATION *pSrc, const D3D12_BOX *pSrcBox); 2532 void CopyResource(ID3D12Resource pDstResource, ID3D12Resource pSrcResource); 2533 void CopyTiles(ID3D12Resource pTiledResource, const D3D12_TILED_RESOURCE_COORDINATE *pTileRegionStartCoordinate, const D3D12_TILE_REGION_SIZE *pTileRegionSize, ID3D12Resource pBuffer, ulong BufferStartOffsetInBytes, D3D12_TILE_COPY_FLAGS Flags); 2534 void ResolveSubresource(ID3D12Resource pDstResource, uint DstSubresource, ID3D12Resource pSrcResource, uint SrcSubresource, DXGI_FORMAT Format); 2535 void IASetPrimitiveTopology(D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); 2536 void RSSetViewports(uint NumViewports, const D3D12_VIEWPORT *pViewports); 2537 void RSSetScissorRects(uint NumRects, const D3D12_RECT *pRects); 2538 void OMSetBlendFactor(const float[4] BlendFactor); 2539 void OMSetStencilRef(uint StencilRef); 2540 void SetPipelineState(ID3D12PipelineState pPipelineState); 2541 void ResourceBarrier(uint NumBarriers, const D3D12_RESOURCE_BARRIER *pBarriers); 2542 void ExecuteBundle(ID3D12GraphicsCommandList pCommandList); 2543 void SetDescriptorHeaps(uint NumDescriptorHeaps, const(ID3D12DescriptorHeap) *ppDescriptorHeaps); 2544 void SetComputeRootSignature(ID3D12RootSignature pRootSignature); 2545 void SetGraphicsRootSignature(ID3D12RootSignature pRootSignature); 2546 void SetComputeRootDescriptorTable(uint RootParameterIndex, D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); 2547 void SetGraphicsRootDescriptorTable(uint RootParameterIndex, D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); 2548 void SetComputeRoot32BitConstant(uint RootParameterIndex, uint SrcData, uint DestOffsetIn32BitValues); 2549 void SetGraphicsRoot32BitConstant(uint RootParameterIndex, uint SrcData, uint DestOffsetIn32BitValues); 2550 void SetComputeRoot32BitConstants(uint RootParameterIndex, uint Num32BitValuesToSet, const void *pSrcData, uint DestOffsetIn32BitValues); 2551 void SetGraphicsRoot32BitConstants(uint RootParameterIndex, uint Num32BitValuesToSet, const void *pSrcData, uint DestOffsetIn32BitValues); 2552 void SetComputeRootConstantBufferView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2553 void SetGraphicsRootConstantBufferView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2554 void SetComputeRootShaderResourceView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2555 void SetGraphicsRootShaderResourceView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2556 void SetComputeRootUnorderedAccessView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2557 void SetGraphicsRootUnorderedAccessView(uint RootParameterIndex, D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2558 void IASetIndexBuffer(const D3D12_INDEX_BUFFER_VIEW *pView); 2559 void IASetVertexBuffers(uint StartSlot, uint NumViews, const D3D12_VERTEX_BUFFER_VIEW *pViews); 2560 void SOSetTargets(uint StartSlot, uint NumViews, const D3D12_STREAM_OUTPUT_BUFFER_VIEW *pViews); 2561 void OMSetRenderTargets(uint NumRenderTargetDescriptors, const D3D12_CPU_DESCRIPTOR_HANDLE *pRenderTargetDescriptors, bool RTsSingleHandleToDescriptorRange, const D3D12_CPU_DESCRIPTOR_HANDLE *pDepthStencilDescriptor); 2562 void ClearDepthStencilView(D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, D3D12_CLEAR_FLAGS ClearFlags, float Depth, ubyte Stencil, uint NumRects, const D3D12_RECT *pRects); 2563 void ClearRenderTargetView(D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, const float[4] ColorRGBA, uint NumRects, const D3D12_RECT *pRects); 2564 void ClearUnorderedAccessViewUint(D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, ID3D12Resource pResource, const uint[4] Values, uint NumRects, const D3D12_RECT *pRects); 2565 void ClearUnorderedAccessViewFloat(D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, ID3D12Resource pResource, const float[4] Values, uint NumRects, const D3D12_RECT *pRects); 2566 void DiscardResource(ID3D12Resource pResource, const D3D12_DISCARD_REGION *pRegion); 2567 void BeginQuery(ID3D12QueryHeap pQueryHeap, D3D12_QUERY_TYPE Type, uint Index); 2568 void EndQuery(ID3D12QueryHeap pQueryHeap, D3D12_QUERY_TYPE Type, uint Index); 2569 void ResolveQueryData(ID3D12QueryHeap pQueryHeap, D3D12_QUERY_TYPE Type, uint StartIndex, uint NumQueries, ID3D12Resource pDestinationBuffer, ulong AlignedDestinationBufferOffset); 2570 void SetPredication(ID3D12Resource pBuffer, ulong AlignedBufferOffset, D3D12_PREDICATION_OP Operation); 2571 void SetMarker(uint Metadata, const void *pData, uint Size); 2572 void BeginEvent(uint Metadata, const void *pData, uint Size); 2573 void EndEvent(); 2574 void ExecuteIndirect(ID3D12CommandSignature pCommandSignature, uint MaxCommandCount, ID3D12Resource pArgumentBuffer, ulong ArgumentBufferOffset, ID3D12Resource pCountBuffer, ulong CountBufferOffset); 2575 } 2576 2577 mixin(uuid!(ID3D12GraphicsCommandList1, "553103fb-1fe7-4557-bb38-946d7d0e7ca7")); 2578 public interface ID3D12GraphicsCommandList1 : ID3D12GraphicsCommandList 2579 { 2580 extern(Windows): 2581 void AtomicCopyBufferUINT(ID3D12Resource pDstBuffer, ulong DstOffset, ID3D12Resource pSrcBuffer, ulong SrcOffset, uint Dependencies, const(ID3D12Resource) *ppDependentResources, const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); 2582 void AtomicCopyBufferUINT64(ID3D12Resource pDstBuffer, ulong DstOffset, ID3D12Resource pSrcBuffer, ulong SrcOffset, uint Dependencies, const(ID3D12Resource) *ppDependentResources, const D3D12_SUBRESOURCE_RANGE_UINT64 *pDependentSubresourceRanges); 2583 void OMSetDepthBounds(float Min, float Max); 2584 void SetSamplePositions(uint NumSamplesPerPixel, uint NumPixels, D3D12_SAMPLE_POSITION *pSamplePositions); 2585 void ResolveSubresourceRegion(ID3D12Resource pDstResource, uint DstSubresource, uint DstX, uint DstY, ID3D12Resource pSrcResource, uint SrcSubresource, D3D12_RECT *pSrcRect, DXGI_FORMAT Format, D3D12_RESOLVE_MODE ResolveMode); 2586 void SetViewInstanceMask(uint Mask); 2587 } 2588 2589 mixin(uuid!(ID3D12GraphicsCommandList2, "38C3E585-FF17-412C-9150-4FC6F9D72A28")); 2590 public interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1 2591 { 2592 extern(Windows): 2593 void WriteBufferImmediate(uint Count, const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *pParams, const D3D12_WRITEBUFFERIMMEDIATE_MODE *pModes); 2594 } 2595 2596 mixin(uuid!(ID3D12CommandQueue, "0ec870a6-5d7e-4c22-8cfc-5baae07616ed")); 2597 public interface ID3D12CommandQueue : ID3D12Pageable 2598 { 2599 extern(Windows): 2600 void UpdateTileMappings(ID3D12Resource pResource, uint NumResourceRegions, const D3D12_TILED_RESOURCE_COORDINATE *pResourceRegionStartCoordinates, const D3D12_TILE_REGION_SIZE *pResourceRegionSizes, ID3D12Heap pHeap, uint NumRanges, const D3D12_TILE_RANGE_FLAGS *pRangeFlags, const uint *pHeapRangeStartOffsets, const uint *pRangeTileCounts, D3D12_TILE_MAPPING_FLAGS Flags); 2601 void CopyTileMappings(ID3D12Resource pDstResource, const D3D12_TILED_RESOURCE_COORDINATE *pDstRegionStartCoordinate, ID3D12Resource pSrcResource, const D3D12_TILED_RESOURCE_COORDINATE *pSrcRegionStartCoordinate, const D3D12_TILE_REGION_SIZE *pRegionSize, D3D12_TILE_MAPPING_FLAGS Flags); 2602 void ExecuteCommandLists(uint NumCommandLists, const(ID3D12CommandList) *ppCommandLists); 2603 void SetMarker( uint Metadata, const void *pData, uint Size); 2604 void BeginEvent(uint Metadata, const void *pData, uint Size); 2605 void EndEvent(); 2606 HRESULT Signal(ID3D12Fence pFence, ulong Value); 2607 HRESULT Wait(ID3D12Fence pFence, ulong Value); 2608 HRESULT GetTimestampFrequency(ulong *pFrequency); 2609 HRESULT GetClockCalibration(ulong *pGpuTimestamp, ulong *pCpuTimestamp); 2610 D3D12_COMMAND_QUEUE_DESC GetDesc(); 2611 } 2612 2613 mixin(uuid!(ID3D12Device, "189819f1-1db6-4b57-be54-1821339b85f7")); 2614 public interface ID3D12Device : ID3D12Object 2615 { 2616 extern(Windows): 2617 uint GetNodeCount(); 2618 HRESULT CreateCommandQueue(const D3D12_COMMAND_QUEUE_DESC *pDesc, REFIID riid, void **ppCommandQueue); 2619 HRESULT CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE type, REFIID riid, void **ppCommandAllocator); 2620 HRESULT CreateGraphicsPipelineState(const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState); 2621 HRESULT CreateComputePipelineState(const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState); 2622 HRESULT CreateCommandList(uint nodeMask, D3D12_COMMAND_LIST_TYPE type, ID3D12CommandAllocator pCommandAllocator, ID3D12PipelineState pInitialState, REFIID riid, void **ppCommandList); 2623 HRESULT CheckFeatureSupport(D3D12_FEATURE Feature, void *pFeatureSupportData, uint FeatureSupportDataSize); 2624 HRESULT CreateDescriptorHeap(const D3D12_DESCRIPTOR_HEAP_DESC *pDescriptorHeapDesc, REFIID riid, void **ppvHeap); 2625 uint GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); 2626 HRESULT CreateRootSignature(uint nodeMask, const void *pBlobWithRootSignature, size_t blobLengthInBytes, REFIID riid, void **ppvRootSignature); 2627 void CreateConstantBufferView(const D3D12_CONSTANT_BUFFER_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2628 void CreateShaderResourceView(ID3D12Resource pResource, const D3D12_SHADER_RESOURCE_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2629 void CreateUnorderedAccessView(ID3D12Resource pResource, ID3D12Resource pCounterResource, const D3D12_UNORDERED_ACCESS_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2630 void CreateRenderTargetView(ID3D12Resource pResource, const D3D12_RENDER_TARGET_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2631 void CreateDepthStencilView(ID3D12Resource pResource, const D3D12_DEPTH_STENCIL_VIEW_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2632 void CreateSampler(const D3D12_SAMPLER_DESC *pDesc, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2633 void CopyDescriptors(uint NumDestDescriptorRanges, const D3D12_CPU_DESCRIPTOR_HANDLE *pDestDescriptorRangeStarts, const uint *pDestDescriptorRangeSizes, uint NumSrcDescriptorRanges, const D3D12_CPU_DESCRIPTOR_HANDLE *pSr, const uint *pSrcDescriptorRangeSizes, D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); 2634 void CopyDescriptorsSimple(uint NumDescriptors, D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); 2635 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo(uint visibleMask, uint numResourceDescs, const D3D12_RESOURCE_DESC *pResourceDescs); 2636 D3D12_HEAP_PROPERTIES GetCustomHeapProperties(uint nodeMask, D3D12_HEAP_TYPE heapType); 2637 HRESULT CreateCommittedResource(const D3D12_HEAP_PROPERTIES *pHeapProperties, D3D12_HEAP_FLAGS HeapFlags, const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riidResource, void **ppvResource); 2638 HRESULT CreateHeap(const D3D12_HEAP_DESC *pDesc, REFIID riid, void **ppvHeap); 2639 HRESULT CreatePlacedResource(ID3D12Heap pHeap, ulong HeapOffset, const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riid, void **ppvResource); 2640 HRESULT CreateReservedResource(const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, REFIID riid, void **ppvResource); 2641 HRESULT CreateSharedHandle(ID3D12DeviceChild pObject, const SECURITY_ATTRIBUTES *pAttributes, uint Access, const wchar *Name, HANDLE *pHandle); 2642 HRESULT OpenSharedHandle(HANDLE NTHandle, REFIID riid, void **ppvObj); 2643 HRESULT OpenSharedHandleByName(const wchar *Name, uint Access, HANDLE *pNTHandle); 2644 HRESULT MakeResident( uint NumObjects, const(ID3D12Pageable) *ppObjects); 2645 HRESULT Evict(uint NumObjects, const(ID3D12Pageable) *ppObjects); 2646 HRESULT CreateFence(ulong InitialValue, D3D12_FENCE_FLAGS Flags, REFIID riid, void **ppFence); 2647 HRESULT GetDeviceRemovedReason(); 2648 void GetCopyableFootprints(const D3D12_RESOURCE_DESC *pResourceDesc, uint FirstSubresource, uint NumSubresources, ulong BaseOffset, D3D12_PLACED_SUBRESOURCE_FOOTPRINT *pLayouts, uint *pNumRows, ulong *pRowSizeInBytes, ulong *pTotalBytes); 2649 HRESULT CreateQueryHeap(const D3D12_QUERY_HEAP_DESC *pDesc, REFIID riid, void **ppvHeap); 2650 HRESULT SetStablePowerState(bool Enable); 2651 HRESULT CreateCommandSignature(const D3D12_COMMAND_SIGNATURE_DESC *pDesc, ID3D12RootSignature pRootSignature, REFIID riid, void **ppvCommandSignature); 2652 void GetResourceTiling(ID3D12Resource pTiledResource, uint *pNumTilesForEntireResource, D3D12_PACKED_MIP_INFO *pPackedMipDesc, D3D12_TILE_SHAPE *pStandardTileShapeForNonPackedMips, uint *pNumSubresourceTilings, uint FirstSubresourceTilingToGet, D3D12_SUBRESOURCE_TILING *pSubresourceTilingsForNonPackedMips); 2653 LUID GetAdapterLuid(); 2654 } 2655 2656 mixin(uuid!(ID3D12PipelineLibrary, "c64226a8-9201-46af-b4cc-53fb9ff7414f")); 2657 public interface ID3D12PipelineLibrary : ID3D12DeviceChild 2658 { 2659 extern(Windows): 2660 HRESULT StorePipeline(const wchar *pName, ID3D12PipelineState pPipeline); 2661 HRESULT LoadGraphicsPipeline(const wchar *pName, const D3D12_GRAPHICS_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState); 2662 HRESULT LoadComputePipeline(const wchar *pName, const D3D12_COMPUTE_PIPELINE_STATE_DESC *pDesc, REFIID riid, void **ppPipelineState); 2663 size_t GetSerializedSize(); 2664 HRESULT Serialize(void *pData, size_t DataSizeInBytes); 2665 } 2666 2667 mixin(uuid!(ID3D12PipelineLibrary1, "80eabf42-2568-4e5e-bd82-c37f86961dc3")); 2668 public interface ID3D12PipelineLibrary1 : ID3D12PipelineLibrary 2669 { 2670 extern(Windows): 2671 HRESULT LoadPipeline(const wchar *Name, const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, REFIID riid, void **ppPipelineState); 2672 } 2673 2674 mixin(uuid!(ID3D12Device1, "77acce80-638e-4e65-8895-c1f23386863e")); 2675 public interface ID3D12Device1 : ID3D12Device 2676 { 2677 extern(Windows): 2678 HRESULT CreatePipelineLibrary(const void *pLibraryBlob, size_t BlobLength, REFIID riid, void **ppPipelineLibrary); 2679 HRESULT SetEventOnMultipleFenceCompletion(const(ID3D12Fence) *ppFences, const ulong *pFenceValues, uint NumFences, D3D12_MULTIPLE_FENCE_WAIT_FLAGS Flags, HANDLE hEvent); 2680 HRESULT SetResidencyPriority(uint NumObjects, const(ID3D12Pageable) *ppObjects, const D3D12_RESIDENCY_PRIORITY *pPriorities); 2681 } 2682 2683 mixin(uuid!(ID3D12Device2, "30baa41e-b15b-475c-a0bb-1af5c5b64328")); 2684 public interface ID3D12Device2 : ID3D12Device1 2685 { 2686 extern(Windows): 2687 HRESULT CreatePipelineState(const D3D12_PIPELINE_STATE_STREAM_DESC *pDesc, REFIID riid, void **ppPipelineState); 2688 } 2689 2690 mixin(uuid!(ID3D12Device3, "81dadc15-2bad-4392-93c5-101345c4aa98")); 2691 public interface ID3D12Device3 : ID3D12Device2 2692 { 2693 extern(Windows): 2694 HRESULT OpenExistingHeapFromAddress(const void *pAddress, REFIID riid, void **ppvHeap); 2695 HRESULT OpenExistingHeapFromFileMapping(HANDLE hFileMapping, REFIID riid, void **ppvHeap); 2696 HRESULT EnqueueMakeResident(D3D12_RESIDENCY_FLAGS Flags, uint NumObjects, const(ID3D12Pageable) *ppObjects, ID3D12Fence pFenceToSignal, ulong FenceValueToSignal); 2697 } 2698 2699 mixin(uuid!(ID3D12Tools, "7071e1f0-e84b-4b33-974f-12fa49de65c5")); 2700 public interface ID3D12Tools : IUnknown 2701 { 2702 extern(Windows): 2703 void EnableShaderInstrumentation(bool bEnable); 2704 bool ShaderInstrumentationEnabled(); 2705 } 2706 2707 enum D3D12_COMMAND_LIST_FLAGS 2708 { 2709 D3D12_COMMAND_LIST_FLAG_NONE = 0 2710 } 2711 2712 enum D3D12_COMMAND_POOL_FLAGS 2713 { 2714 D3D12_COMMAND_POOL_FLAG_NONE = 0 2715 } 2716 2717 enum D3D12_COMMAND_RECORDER_FLAGS 2718 { 2719 D3D12_COMMAND_RECORDER_FLAG_NONE = 0 2720 } 2721 2722 enum D3D12_PROTECTED_SESSION_STATUS 2723 { 2724 D3D12_PROTECTED_SESSION_STATUS_OK = 0, 2725 D3D12_PROTECTED_SESSION_STATUS_INVALID = 1 2726 } 2727 2728 enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS 2729 { 2730 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0, 2731 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1 2732 } 2733 2734 enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS 2735 { 2736 D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0 2737 } 2738 2739 enum D3D12_LIFETIME_STATE 2740 { 2741 D3D12_LIFETIME_STATE_IN_USE = 0, 2742 D3D12_LIFETIME_STATE_NOT_IN_USE = ( D3D12_LIFETIME_STATE_IN_USE + 1 ) 2743 } 2744 2745 enum D3D12_META_COMMAND_PARAMETER_TYPE 2746 { 2747 D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0, 2748 D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 1, 2749 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 2, 2750 D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 3, 2751 D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 4 2752 } 2753 2754 enum D3D12_META_COMMAND_PARAMETER_FLAGS 2755 { 2756 D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1, 2757 D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2 2758 } 2759 2760 enum D3D12_META_COMMAND_PARAMETER_STAGE 2761 { 2762 D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0, 2763 D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 1, 2764 D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 2 2765 } 2766 2767 struct D3D12_META_COMMAND_PARAMETER_DESC 2768 { 2769 const wchar *Name; 2770 D3D12_META_COMMAND_PARAMETER_TYPE Type; 2771 D3D12_META_COMMAND_PARAMETER_FLAGS Flags; 2772 D3D12_RESOURCE_STATES RequiredResourceState; 2773 uint StructureOffset; 2774 } 2775 2776 enum D3D12_GRAPHICS_STATES 2777 { 2778 D3D12_GRAPHICS_STATE_NONE = 0, 2779 D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = ( 1 << 0 ) , 2780 D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = ( 1 << 1 ) , 2781 D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = ( 1 << 2 ) , 2782 D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = ( 1 << 3 ) , 2783 D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = ( 1 << 4 ) , 2784 D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 << 5 ) , 2785 D3D12_GRAPHICS_STATE_RS_VIEWPORTS = ( 1 << 6 ) , 2786 D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = ( 1 << 7 ) , 2787 D3D12_GRAPHICS_STATE_PREDICATION = ( 1 << 8 ) , 2788 D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = ( 1 << 9 ) , 2789 D3D12_GRAPHICS_STATE_OM_STENCIL_REF = ( 1 << 10 ) , 2790 D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = ( 1 << 11 ) , 2791 D3D12_GRAPHICS_STATE_PIPELINE_STATE = ( 1 << 12 ) , 2792 D3D12_GRAPHICS_STATE_SO_TARGETS = ( 1 << 13 ) , 2793 D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = ( 1 << 14 ) , 2794 D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = ( 1 << 15 ) , 2795 D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = ( 1 << 16 ) 2796 } 2797 2798 struct D3D12_META_COMMAND_DESC 2799 { 2800 GUID Id; 2801 const wchar *Name; 2802 D3D12_GRAPHICS_STATES InitializationDirtyState; 2803 D3D12_GRAPHICS_STATES ExecutionDirtyState; 2804 } 2805 2806 2807 struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT 2808 { 2809 uint NodeIndex; 2810 D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS Support; 2811 } 2812 2813 struct D3D12_PROTECTED_RESOURCE_SESSION_DESC 2814 { 2815 uint NodeMask; 2816 D3D12_PROTECTED_RESOURCE_SESSION_FLAGS Flags; 2817 } 2818 2819 mixin(uuid!(ID3D12ProtectedSession, "A1533D18-0AC1-4084-85B9-89A96116806B")); 2820 public interface ID3D12ProtectedSession : ID3D12DeviceChild 2821 { 2822 extern(Windows): 2823 HRESULT GetStatusFence(REFIID riid, void **ppFence); 2824 D3D12_PROTECTED_SESSION_STATUS GetSessionStatus(); 2825 } 2826 2827 mixin(uuid!(ID3D12ProtectedResourceSession, "6CD696F4-F289-40CC-8091-5A6C0A099C3D")); 2828 public interface ID3D12ProtectedResourceSession : ID3D12ProtectedSession 2829 { 2830 extern(Windows): 2831 D3D12_PROTECTED_RESOURCE_SESSION_DESC GetDesc(); 2832 } 2833 2834 mixin(uuid!(ID3D12Device4, "e865df17-a9ee-46f9-a463-3098315aa2e5")); 2835 public interface ID3D12Device4 : ID3D12Device3 2836 { 2837 extern(Windows): 2838 HRESULT CreateCommandList1(uint nodeMask, D3D12_COMMAND_LIST_TYPE type, D3D12_COMMAND_LIST_FLAGS flags, REFIID riid, void **ppCommandList); 2839 HRESULT CreateProtectedResourceSession(const D3D12_PROTECTED_RESOURCE_SESSION_DESC *pDesc, REFIID riid, void **ppSession); 2840 HRESULT CreateCommittedResource1(const D3D12_HEAP_PROPERTIES *pHeapProperties, D3D12_HEAP_FLAGS HeapFlags, const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialResourceState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, ID3D12ProtectedResourceSession pProtectedSession, REFIID riidResource, void **ppvResource); 2841 HRESULT CreateHeap1(const D3D12_HEAP_DESC *pDesc, ID3D12ProtectedResourceSession pProtectedSession, REFIID riid, void **ppvHeap); 2842 HRESULT CreateReservedResource1(const D3D12_RESOURCE_DESC *pDesc, D3D12_RESOURCE_STATES InitialState, const D3D12_CLEAR_VALUE *pOptimizedClearValue, ID3D12ProtectedResourceSession pProtectedSession, REFIID riid, void **ppvResource); 2843 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo1(uint visibleMask, uint numResourceDescs, const D3D12_RESOURCE_DESC *pResourceDescs, D3D12_RESOURCE_ALLOCATION_INFO1 *pResourceAllocationInfo1); 2844 } 2845 2846 mixin(uuid!(ID3D12LifetimeOwner, "e667af9f-cd56-4f46-83ce-032e595d70a8")); 2847 public interface ID3D12LifetimeOwner : IUnknown 2848 { 2849 extern(Windows): 2850 void LifetimeStateUpdated(D3D12_LIFETIME_STATE NewState); 2851 } 2852 2853 mixin(uuid!(ID3D12SwapChainAssistant, "f1df64b6-57fd-49cd-8807-c0eb88b45c8f")); 2854 public interface ID3D12SwapChainAssistant : IUnknown 2855 { 2856 extern(Windows): 2857 LUID GetLUID(); 2858 HRESULT GetSwapChainObject(REFIID riid, void **ppv); 2859 HRESULT GetCurrentResourceAndCommandQueue(REFIID riidResource, void **ppvResource, REFIID riidQueue, void **ppvQueue); 2860 HRESULT InsertImplicitSync(); 2861 } 2862 2863 mixin(uuid!(ID3D12LifetimeTracker, "3fd03d36-4eb1-424a-a582-494ecb8ba813")); 2864 public interface ID3D12LifetimeTracker : ID3D12DeviceChild 2865 { 2866 extern(Windows): 2867 HRESULT DestroyOwnedObject(ID3D12DeviceChild pObject); 2868 } 2869 2870 mixin(uuid!(ID3D12StateObject, "47016943-fca8-4594-93ea-af258b55346d")); 2871 public interface ID3D12StateObject : ID3D12Pageable 2872 { 2873 extern(Windows): 2874 } 2875 2876 mixin(uuid!(ID3D12StateObjectProperties, "de5fa827-9bf9-4f26-89ff-d7f56fde3860")); 2877 public interface ID3D12StateObjectProperties : IUnknown 2878 { 2879 extern(Windows): 2880 void *GetShaderIdentifier(const wchar *pExportName); 2881 ulong GetShaderStackSize(const wchar *pExportName); 2882 ulong GetPipelineStackSize(); 2883 void SetPipelineStackSize(ulong PipelineStackSizeInBytes); 2884 } 2885 2886 enum D3D12_STATE_SUBOBJECT_TYPE 2887 { 2888 D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0, 2889 D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 1, 2890 D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 2, 2891 D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 3, 2892 D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 5, 2893 D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 6, 2894 D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7, 2895 D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 8, 2896 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9, 2897 D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 10, 2898 D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, 2899 D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = ( D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP + 1 ) 2900 } 2901 2902 struct D3D12_STATE_SUBOBJECT 2903 { 2904 D3D12_STATE_SUBOBJECT_TYPE Type; 2905 const void *pDesc; 2906 } 2907 2908 enum D3D12_STATE_OBJECT_FLAGS 2909 { 2910 D3D12_STATE_OBJECT_FLAG_NONE = 0, 2911 D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1, 2912 D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2 2913 } 2914 2915 struct D3D12_STATE_OBJECT_CONFIG 2916 { 2917 D3D12_STATE_OBJECT_FLAGS Flags; 2918 } 2919 2920 struct D3D12_GLOBAL_ROOT_SIGNATURE 2921 { 2922 ID3D12RootSignature pGlobalRootSignature; 2923 } 2924 2925 struct D3D12_LOCAL_ROOT_SIGNATURE 2926 { 2927 ID3D12RootSignature pLocalRootSignature; 2928 } 2929 2930 struct D3D12_NODE_MASK 2931 { 2932 uint NodeMask; 2933 } 2934 2935 enum D3D12_EXPORT_FLAGS 2936 { 2937 D3D12_EXPORT_FLAG_NONE = 0 2938 } 2939 2940 struct D3D12_EXPORT_DESC 2941 { 2942 const wchar *Name; 2943 const wchar *ExportToRename; 2944 D3D12_EXPORT_FLAGS Flags; 2945 } 2946 2947 struct D3D12_DXIL_LIBRARY_DESC 2948 { 2949 D3D12_SHADER_BYTECODE DXILLibrary; 2950 uint NumExports; 2951 D3D12_EXPORT_DESC *pExports; 2952 } 2953 2954 struct D3D12_EXISTING_COLLECTION_DESC 2955 { 2956 ID3D12StateObject pExistingCollection; 2957 uint NumExports; 2958 D3D12_EXPORT_DESC *pExports; 2959 } 2960 2961 struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION 2962 { 2963 const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate; 2964 uint NumExports; 2965 const wchar **pExports; 2966 } 2967 2968 struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION 2969 { 2970 const wchar *SubobjectToAssociate; 2971 uint NumExports; 2972 const wchar **pExports; 2973 } 2974 2975 enum D3D12_HIT_GROUP_TYPE 2976 { 2977 D3D12_HIT_GROUP_TYPE_TRIANGLES = 0, 2978 D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1 2979 } 2980 2981 struct D3D12_HIT_GROUP_DESC 2982 { 2983 const wchar *HitGroupExport; 2984 D3D12_HIT_GROUP_TYPE Type; 2985 const wchar *AnyHitShaderImport; 2986 const wchar *ClosestHitShaderImport; 2987 const wchar *IntersectionShaderImport; 2988 } 2989 2990 struct D3D12_RAYTRACING_SHADER_CONFIG 2991 { 2992 uint MaxPayloadSizeInBytes; 2993 uint MaxAttributeSizeInBytes; 2994 } 2995 2996 struct D3D12_RAYTRACING_PIPELINE_CONFIG 2997 { 2998 uint MaxTraceRecursionDepth; 2999 } 3000 3001 enum D3D12_STATE_OBJECT_TYPE 3002 { 3003 D3D12_STATE_OBJECT_TYPE_COLLECTION = 0, 3004 D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3 3005 } 3006 3007 struct D3D12_STATE_OBJECT_DESC 3008 { 3009 D3D12_STATE_OBJECT_TYPE Type; 3010 uint NumSubobjects; 3011 const D3D12_STATE_SUBOBJECT *pSubobjects; 3012 } 3013 3014 enum D3D12_RAYTRACING_GEOMETRY_FLAGS 3015 { 3016 D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0, 3017 D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1, 3018 D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2 3019 } 3020 3021 enum D3D12_RAYTRACING_GEOMETRY_TYPE 3022 { 3023 D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0, 3024 D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 ) 3025 } 3026 3027 enum D3D12_RAYTRACING_INSTANCE_FLAGS 3028 { 3029 D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0, 3030 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE = 0x1, 3031 D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE = 0x2, 3032 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4, 3033 D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE = 0x8 3034 } 3035 3036 struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE 3037 { 3038 D3D12_GPU_VIRTUAL_ADDRESS StartAddress; 3039 ulong StrideInBytes; 3040 } 3041 3042 struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE 3043 { 3044 D3D12_GPU_VIRTUAL_ADDRESS StartAddress; 3045 ulong SizeInBytes; 3046 } 3047 3048 struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE 3049 { 3050 D3D12_GPU_VIRTUAL_ADDRESS StartAddress; 3051 ulong SizeInBytes; 3052 ulong StrideInBytes; 3053 } 3054 3055 struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC 3056 { 3057 D3D12_GPU_VIRTUAL_ADDRESS Transform3x4; 3058 DXGI_FORMAT IndexFormat; 3059 DXGI_FORMAT VertexFormat; 3060 uint IndexCount; 3061 uint VertexCount; 3062 D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer; 3063 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer; 3064 } 3065 3066 struct D3D12_RAYTRACING_AABB 3067 { 3068 float MinX; 3069 float MinY; 3070 float MinZ; 3071 float MaxX; 3072 float MaxY; 3073 float MaxZ; 3074 } 3075 3076 struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC 3077 { 3078 ulong AABBCount; 3079 D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs; 3080 } 3081 3082 enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS 3083 { 3084 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0, 3085 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x1, 3086 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2, 3087 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x4, 3088 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x8, 3089 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10, 3090 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20 3091 } 3092 3093 enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE 3094 { 3095 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0, 3096 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT = 0x1, 3097 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS = 0x2, 3098 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3, 3099 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE = 0x4 3100 } 3101 3102 enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE 3103 { 3104 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0, 3105 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1 3106 } 3107 3108 enum D3D12_ELEMENTS_LAYOUT 3109 { 3110 D3D12_ELEMENTS_LAYOUT_ARRAY = 0, 3111 D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1 3112 } 3113 3114 enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE 3115 { 3116 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0, 3117 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1, 3118 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2, 3119 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3 3120 } 3121 3122 struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC 3123 { 3124 D3D12_GPU_VIRTUAL_ADDRESS DestBuffer; 3125 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType; 3126 } 3127 3128 struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC 3129 { 3130 ulong CompactedSizeInBytes; 3131 } 3132 3133 struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC 3134 { 3135 ulong DecodedSizeInBytes; 3136 } 3137 3138 struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER 3139 { 3140 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type; 3141 uint NumDescs; 3142 } 3143 3144 struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC 3145 { 3146 ulong SerializedSizeInBytes; 3147 ulong NumBottomLevelAccelerationStructurePointers; 3148 } 3149 3150 struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER 3151 { 3152 GUID DriverOpaqueGUID; 3153 ubyte[16] DriverOpaqueVersioningData; 3154 } 3155 3156 enum D3D12_SERIALIZED_DATA_TYPE 3157 { 3158 D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0 3159 } 3160 3161 enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS 3162 { 3163 D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0, 3164 D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1, 3165 D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2, 3166 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3, 3167 D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4 3168 } 3169 3170 struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER 3171 { 3172 D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER DriverMatchingIdentifier; 3173 ulong SerializedSizeInBytesIncludingHeader; 3174 ulong DeserializedSizeInBytes; 3175 ulong NumBottomLevelAccelerationStructurePointersAfterHeader; 3176 } 3177 3178 struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC 3179 { 3180 ulong CurrentSizeInBytes; 3181 } 3182 3183 struct D3D12_RAYTRACING_INSTANCE_DESC 3184 { 3185 float[3][4] Transform; 3186 uint InstanceID; 3187 uint InstanceMask; 3188 uint InstanceContributionToHitGroupIndex; 3189 uint Flags; 3190 D3D12_GPU_VIRTUAL_ADDRESS AccelerationStructure; 3191 } 3192 3193 struct D3D12_RAYTRACING_GEOMETRY_DESC 3194 { 3195 D3D12_RAYTRACING_GEOMETRY_TYPE Type; 3196 D3D12_RAYTRACING_GEOMETRY_FLAGS Flags; 3197 union 3198 { 3199 D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles; 3200 D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs; 3201 }; 3202 } 3203 3204 struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS 3205 { 3206 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type; 3207 D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags; 3208 uint NumDescs; 3209 D3D12_ELEMENTS_LAYOUT DescsLayout; 3210 union 3211 { 3212 D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs; 3213 const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs; 3214 const D3D12_RAYTRACING_GEOMETRY_DESC **ppGeometryDescs; 3215 }; 3216 } 3217 3218 struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC 3219 { 3220 D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData; 3221 D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs; 3222 D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData; 3223 D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData; 3224 } 3225 3226 struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO 3227 { 3228 ulong ResultDataMaxSizeInBytes; 3229 ulong ScratchDataSizeInBytes; 3230 ulong UpdateScratchDataSizeInBytes; 3231 } 3232 3233 enum D3D12_RAY_FLAGS 3234 { 3235 D3D12_RAY_FLAG_NONE = 0, 3236 D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1, 3237 D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2, 3238 D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH = 0x4, 3239 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x8, 3240 D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 0x10, 3241 D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 0x20, 3242 D3D12_RAY_FLAG_CULL_OPAQUE = 0x40, 3243 D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80 3244 } 3245 3246 enum D3D12_HIT_KIND 3247 { 3248 D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe, 3249 D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff 3250 } 3251 3252 mixin(uuid!(ID3D12Device5, "8b4f173b-2fea-4b80-8f58-4307191ab95d")); 3253 public interface ID3D12Device5 : ID3D12Device4 3254 { 3255 extern(Windows): 3256 HRESULT CreateLifetimeTracker(ID3D12LifetimeOwner pOwner, REFIID riid, void **ppvTracker); 3257 void RemoveDevice(); 3258 HRESULT EnumerateMetaCommands(uint *pNumMetaCommands, D3D12_META_COMMAND_DESC *pDescs); 3259 HRESULT EnumerateMetaCommandParameters(REFGUID CommandId, D3D12_META_COMMAND_PARAMETER_STAGE Stage, uint *pTotalStructureSizeInBytes, uint *pParameterCount, D3D12_META_COMMAND_PARAMETER_DESC *pParameterDescs); 3260 HRESULT CreateMetaCommand(REFGUID CommandId, uint NodeMask, const void *pCreationParametersData, size_t CreationParametersDataSizeInBytes, REFIID riid, void **ppMetaCommand); 3261 HRESULT CreateStateObject(const D3D12_STATE_OBJECT_DESC *pDesc, REFIID riid, void **ppStateObject); 3262 void GetRaytracingAccelerationStructurePrebuildInfo(const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *pDesc, D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *pInfo); 3263 D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(D3D12_SERIALIZED_DATA_TYPE SerializedDataType, const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *pIdentifierToCheck); 3264 } 3265 3266 enum D3D12_AUTO_BREADCRUMB_OP 3267 { 3268 D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0, 3269 D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1, 3270 D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2, 3271 D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED = 3, 3272 D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED = 4, 3273 D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT = 5, 3274 D3D12_AUTO_BREADCRUMB_OP_DISPATCH = 6, 3275 D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION = 7, 3276 D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION = 8, 3277 D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE = 9, 3278 D3D12_AUTO_BREADCRUMB_OP_COPYTILES = 10, 3279 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11, 3280 D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW = 12, 3281 D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW = 13, 3282 D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW = 14, 3283 D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER = 15, 3284 D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE = 16, 3285 D3D12_AUTO_BREADCRUMB_OP_PRESENT = 17, 3286 D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA = 18, 3287 D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION = 19, 3288 D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION = 20, 3289 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME = 21, 3290 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES = 22, 3291 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT = 23, 3292 D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64 = 24, 3293 D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION = 25, 3294 D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE = 26, 3295 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1 = 27, 3296 D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION = 28, 3297 D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2 = 29, 3298 D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1 = 30, 3299 D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE = 31, 3300 D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO = 32, 3301 D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE = 33, 3302 D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS = 34, 3303 D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND = 35, 3304 D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36, 3305 D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION = 37, 3306 D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP = 38, 3307 D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39 3308 } 3309 3310 struct D3D12_AUTO_BREADCRUMB_NODE 3311 { 3312 const char *pCommandListDebugNameA; 3313 const wchar *pCommandListDebugNameW; 3314 const char *pCommandQueueDebugNameA; 3315 const wchar *pCommandQueueDebugNameW; 3316 ID3D12GraphicsCommandList pCommandList; 3317 ID3D12CommandQueue pCommandQueue; 3318 uint BreadcrumbCount; 3319 uint *pLastBreadcrumbValue; 3320 D3D12_AUTO_BREADCRUMB_OP *pCommandHistory; 3321 D3D12_AUTO_BREADCRUMB_NODE *pNext; 3322 } 3323 3324 enum D3D12_DRED_VERSION 3325 { 3326 D3D12_DRED_VERSION_1_0 = 0x1 3327 } 3328 3329 enum D3D12_DRED_FLAGS 3330 { 3331 D3D12_DRED_FLAG_NONE = 0, 3332 D3D12_DRED_FLAG_FORCE_ENABLE = 1, 3333 D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2 3334 } 3335 3336 struct D3D12_DEVICE_REMOVED_EXTENDED_DATA 3337 { 3338 D3D12_DRED_FLAGS Flags; 3339 D3D12_AUTO_BREADCRUMB_NODE *pHeadAutoBreadcrumbNode; 3340 } 3341 3342 struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA 3343 { 3344 D3D12_DRED_VERSION Version; 3345 union 3346 { 3347 D3D12_DEVICE_REMOVED_EXTENDED_DATA Dred_1_0; 3348 }; 3349 } 3350 3351 mixin(uuid!(ID3D12Resource1, "9D5E227A-4430-4161-88B3-3ECA6BB16E19")); 3352 public interface ID3D12Resource1 : ID3D12Resource 3353 { 3354 extern(Windows): 3355 HRESULT GetProtectedResourceSession(REFIID riid, void **ppProtectedSession); 3356 } 3357 3358 mixin(uuid!(ID3D12Heap1, "572F7389-2168-49E3-9693-D6DF5871BF6D")); 3359 public interface ID3D12Heap1 : ID3D12Heap 3360 { 3361 extern(Windows): 3362 HRESULT GetProtectedResourceSession(REFIID riid, void **ppProtectedSession); 3363 } 3364 3365 mixin(uuid!(ID3D12GraphicsCommandList3, "6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")); 3366 public interface ID3D12GraphicsCommandList3 : ID3D12GraphicsCommandList2 3367 { 3368 extern(Windows): 3369 void SetProtectedResourceSession(ID3D12ProtectedResourceSession pProtectedResourceSession); 3370 } 3371 3372 enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE 3373 { 3374 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0, 3375 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) , 3376 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) , 3377 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 ) 3378 } 3379 3380 struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS 3381 { 3382 D3D12_CLEAR_VALUE ClearValue; 3383 } 3384 3385 struct D3D12_RENDER_PASS_BEGINNING_ACCESS 3386 { 3387 D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type; 3388 union 3389 { 3390 D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear; 3391 }; 3392 } 3393 3394 enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE 3395 { 3396 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0, 3397 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ), 3398 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ), 3399 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 ) 3400 } 3401 3402 struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS 3403 { 3404 uint SrcSubresource; 3405 uint DstSubresource; 3406 uint DstX; 3407 uint DstY; 3408 D3D12_RECT SrcRect; 3409 } 3410 3411 struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS 3412 { 3413 ID3D12Resource pSrcResource; 3414 ID3D12Resource pDstResource; 3415 uint SubresourceCount; 3416 const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters; 3417 DXGI_FORMAT Format; 3418 D3D12_RESOLVE_MODE ResolveMode; 3419 bool PreserveResolveSource; 3420 } 3421 3422 struct D3D12_RENDER_PASS_ENDING_ACCESS 3423 { 3424 D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type; 3425 union 3426 { 3427 D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve; 3428 }; 3429 } 3430 3431 struct D3D12_RENDER_PASS_RENDER_TARGET_DESC 3432 { 3433 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor; 3434 D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess; 3435 D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess; 3436 } 3437 3438 struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC 3439 { 3440 D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor; 3441 D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess; 3442 D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess; 3443 D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess; 3444 D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess; 3445 } 3446 3447 enum D3D12_RENDER_PASS_FLAGS 3448 { 3449 D3D12_RENDER_PASS_FLAG_NONE = 0, 3450 D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1, 3451 D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2, 3452 D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4 3453 } 3454 3455 mixin(uuid!(ID3D12MetaCommand, "DBB84C27-36CE-4FC9-B801-F048C46AC570")); 3456 public interface ID3D12MetaCommand : ID3D12Pageable 3457 { 3458 extern(Windows): 3459 ulong GetRequiredParameterResourceSize(D3D12_META_COMMAND_PARAMETER_STAGE Stage, uint ParameterIndex); 3460 } 3461 3462 struct D3D12_DISPATCH_RAYS_DESC 3463 { 3464 D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord; 3465 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable; 3466 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable; 3467 D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable; 3468 uint Width; 3469 uint Height; 3470 uint Depth; 3471 } 3472 3473 mixin(uuid!(ID3D12GraphicsCommandList4, "8754318e-d3a9-4541-98cf-645b50dc4874")); 3474 public interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3 3475 { 3476 extern(Windows): 3477 void BeginRenderPass(uint NumRenderTargets, const D3D12_RENDER_PASS_RENDER_TARGET_DESC *pRenderTargets, const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *pDepthStencil, D3D12_RENDER_PASS_FLAGS Flags); 3478 void EndRenderPass(); 3479 void InitializeMetaCommand(ID3D12MetaCommand pMetaCommand, const void *pInitializationParametersData, size_t InitializationParametersDataSizeInBytes); 3480 void ExecuteMetaCommand(ID3D12MetaCommand pMetaCommand, const void *pExecutionParametersData, size_t ExecutionParametersDataSizeInBytes); 3481 void BuildRaytracingAccelerationStructure(const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *pDesc, uint NumPostbuildInfoDescs, const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pPostbuildInfoDescs); 3482 void EmitRaytracingAccelerationStructurePostbuildInfo(const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *pDesc, uint NumSourceAccelerationStructures, const D3D12_GPU_VIRTUAL_ADDRESS *pSourceAccelerationStructureData); 3483 void CopyRaytracingAccelerationStructure(D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData, D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData, D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE Mode); 3484 void SetPipelineState1(ID3D12StateObject pStateObject); 3485 void DispatchRays(const D3D12_DISPATCH_RAYS_DESC *pDesc); 3486 } 3487