1 module directx.d3d12; 2 /*------------------------------------------------------------------------------------- 3 * 4 * Copyright (c) Microsoft Corporation 5 * 6 *-------------------------------------------------------------------------------------*/ 7 8 public import directx.dxgi; 9 public import directx.d3dcommon; 10 11 enum { 12 D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff, 13 D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff, 14 D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff, 15 16 D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff, 17 18 D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9, 19 20 D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8, 21 D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2, 22 23 D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14, 24 D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4, 25 D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32, 26 D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15, 27 D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16, 28 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4, 29 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15, 30 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1, 31 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1, 32 33 D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64, 34 35 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4, 36 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1, 37 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1, 38 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1, 39 40 D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32, 41 42 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1, 43 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128, 44 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1, 45 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1, 46 D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128, 47 48 D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1, 49 D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16, 50 D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1, 51 D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1, 52 D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16, 53 54 D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32, 55 56 D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4, 57 D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32, 58 D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096, 59 D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3, 60 D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3, 61 62 D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10, 63 D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10, 64 65 D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8, 66 D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7, 67 68 D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256, 69 70 D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256, 71 D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64, 72 D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240, 73 D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68, 74 D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224, 75 D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72, 76 D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208, 77 D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76, 78 D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192, 79 D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84, 80 D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176, 81 D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92, 82 D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160, 83 D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100, 84 D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144, 85 D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112, 86 D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128, 87 D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128, 88 D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112, 89 D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144, 90 D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96, 91 D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168, 92 D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80, 93 D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204, 94 D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64, 95 D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256, 96 D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48, 97 D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340, 98 D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32, 99 D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512, 100 D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16, 101 D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768, 102 103 D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1, 104 D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256, 105 D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768, 106 D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768, 107 D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768, 108 D3D12_CS_4_X_UAV_REGISTER_COUNT = 1, 109 110 D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535, 111 112 D3D12_CS_TGSM_REGISTER_COUNT = 8192, 113 D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1, 114 D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1, 115 D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1, 116 117 D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3, 118 D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1, 119 120 D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1, 121 D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1, 122 123 D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3, 124 D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1, 125 126 D3D12_CS_THREADID_REGISTER_COMPONENTS = 3, 127 D3D12_CS_THREADID_REGISTER_COUNT = 1, 128 129 D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024, 130 D3D12_CS_THREAD_GROUP_MAX_X = 1024, 131 D3D12_CS_THREAD_GROUP_MAX_Y = 1024, 132 D3D12_CS_THREAD_GROUP_MAX_Z = 64, 133 D3D12_CS_THREAD_GROUP_MIN_X = 1, 134 D3D12_CS_THREAD_GROUP_MIN_Y = 1, 135 D3D12_CS_THREAD_GROUP_MIN_Z = 1, 136 137 D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384, 138 139 D3D12_DEFAULT_BLEND_FACTOR_ALPHA = 10f, 140 D3D12_DEFAULT_BLEND_FACTOR_BLUE = 10f, 141 D3D12_DEFAULT_BLEND_FACTOR_GREEN = 10f, 142 D3D12_DEFAULT_BLEND_FACTOR_RED = 10f, 143 D3D12_DEFAULT_BORDER_COLOR_COMPONENT = 0f, 144 D3D12_DEFAULT_DEPTH_BIAS = 0, 145 146 D3D12_DEFAULT_DEPTH_BIAS_CLAMP = 0f, 147 D3D12_DEFAULT_MAX_ANISOTROPY = 16, 148 149 D3D12_DEFAULT_MIP_LOD_BIAS = 0f , 150 D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304, 151 152 D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0, 153 D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536, 154 D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff, 155 156 D3D12_DEFAULT_SCISSOR_ENDX = 0, 157 D3D12_DEFAULT_SCISSOR_ENDY = 0, 158 D3D12_DEFAULT_SCISSOR_STARTX = 0, 159 D3D12_DEFAULT_SCISSOR_STARTY = 0, 160 161 D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0f, 162 D3D12_DEFAULT_STENCIL_READ_MASK = 0xff, 163 D3D12_DEFAULT_STENCIL_REFERENCE = 0, 164 D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff, 165 166 D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0, 167 D3D12_DEFAULT_VIEWPORT_HEIGHT = 0, 168 D3D12_DEFAULT_VIEWPORT_MAX_DEPTH = 0f, 169 D3D12_DEFAULT_VIEWPORT_MIN_DEPTH = 0f, 170 D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0, 171 D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0, 172 D3D12_DEFAULT_VIEWPORT_WIDTH = 0, 173 174 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff, 175 176 D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7, 177 D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0, 178 179 D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS= 3968, 180 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4, 181 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32, 182 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32, 183 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2, 184 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1, 185 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS= 3, 186 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32, 187 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1, 188 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2, 189 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS= 1, 190 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4, 191 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32, 192 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32, 193 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2, 194 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1, 195 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS= 1, 196 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 197 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1, 198 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2, 199 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS= 1, 200 D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4, 201 D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 202 D3D12_DS_OUTPUT_REGISTER_COUNT = 32, 203 204 D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP = 6, 205 //D3D12_FLOAT32_MAX = 3402823466e+38f, 206 D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = 6f, 207 D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = 24f, 208 D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = 10f, 209 D3D12_FLOAT_TO_SRGB_OFFSET = 55f, 210 D3D12_FLOAT_TO_SRGB_SCALE_1 = 1292f, 211 D3D12_FLOAT_TO_SRGB_SCALE_2 = 1055f, 212 D3D12_FLOAT_TO_SRGB_THRESHOLD = 31308f, 213 D3D12_FTOI_INSTRUCTION_MAX_INPUT = 2147483647999f, 214 D3D12_FTOI_INSTRUCTION_MIN_INPUT = -2147483648999f, 215 D3D12_FTOU_INSTRUCTION_MAX_INPUT = 4294967295999f, 216 D3D12_FTOU_INSTRUCTION_MIN_INPUT = 0f, 217 218 D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2, 219 D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1, 220 D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1, 221 D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT= 32, 222 D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1, 223 D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1, 224 D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32, 225 D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1, 226 D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2, 227 D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1, 228 D3D12_GS_INPUT_REGISTER_COMPONENTS = 4, 229 D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 230 D3D12_GS_INPUT_REGISTER_COUNT = 32, 231 D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2, 232 D3D12_GS_INPUT_REGISTER_READ_PORTS = 1, 233 D3D12_GS_INPUT_REGISTER_VERTICES = 32, 234 D3D12_GS_MAX_INSTANCE_COUNT = 32, 235 D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024, 236 D3D12_GS_OUTPUT_ELEMENTS = 32, 237 D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4, 238 D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 239 D3D12_GS_OUTPUT_REGISTER_COUNT = 32, 240 D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32, 241 D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32, 242 D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4, 243 D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32, 244 D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2, 245 D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1, 246 D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff, 247 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1, 248 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 249 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1, 250 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2, 251 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1, 252 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1, 253 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 254 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1, 255 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2, 256 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1, 257 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1, 258 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 259 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1, 260 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2, 261 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1, 262 D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff, 263 D3D12_HS_MAXTESSFACTOR_LOWER_BOUND = 10f, 264 D3D12_HS_MAXTESSFACTOR_UPPER_BOUND = 640f, 265 D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968, 266 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1, 267 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 268 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1, 269 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2, 270 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1, 271 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4, 272 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32, 273 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32, 274 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2, 275 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1, 276 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128, 277 D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0, 278 D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0, 279 D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0, 280 D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1, 281 D3D12_IA_INSTANCE_ID_BIT_COUNT = 32, 282 D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32, 283 D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32, 284 D3D12_IA_PRIMITIVE_ID_BIT_COUNT= 32, 285 D3D12_IA_VERTEX_ID_BIT_COUNT = 32, 286 D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32, 287 D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128, 288 D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32, 289 D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff, 290 D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff, 291 D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff, 292 D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff, 293 D3D12_LINEAR_GAMMA = 10f, 294 D3D12_MAJOR_VERSION = 12, 295 D3D12_MAX_BORDER_COLOR_COMPONENT = 10f, 296 D3D12_MAX_DEPTH = 10f, 297 D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032, 298 D3D12_MAX_MAXANISOTROPY = 16, 299 D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32, 300 //D3D12_MAX_POSITION_VALUE = 3402823466e+34f, 301 D3D12_MAX_ROOT_COST = 64, 302 D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000, 303 D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000, 304 D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048, 305 D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17, 306 D3D12_MINOR_VERSION = 0, 307 D3D12_MIN_BORDER_COLOR_COMPONENT = 0f, 308 D3D12_MIN_DEPTH = 0f, 309 D3D12_MIN_MAXANISOTROPY = 0, 310 D3D12_MIP_LOD_BIAS_MAX = 1599f, 311 D3D12_MIP_LOD_BIAS_MIN = -160f, 312 D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8, 313 D3D12_MIP_LOD_RANGE_BIT_COUNT = 8, 314 D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 14f, 315 D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0, 316 D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff, 317 D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8, 318 D3D12_PACKED_TILE = 0xffffffff, 319 D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15, 320 D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16, 321 D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1, 322 D3D12_PS_CS_UAV_REGISTER_COUNT = 8, 323 D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1, 324 D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1, 325 D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff, 326 D3D12_PS_FRONTFACING_FALSE_VALUE = 0, 327 D3D12_PS_FRONTFACING_TRUE_VALUE = 0xffffffff, 328 D3D12_PS_INPUT_REGISTER_COMPONENTS = 4, 329 D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 330 D3D12_PS_INPUT_REGISTER_COUNT = 32, 331 D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2, 332 D3D12_PS_INPUT_REGISTER_READ_PORTS = 1, 333 D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0f, 334 D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1, 335 D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32, 336 D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1, 337 D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1, 338 D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32, 339 D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1, 340 D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4, 341 D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 342 D3D12_PS_OUTPUT_REGISTER_COUNT = 8, 343 D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 5f, 344 D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16, 345 D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096, 346 D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27, 347 D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096, 348 D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096, 349 D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32, 350 D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32, 351 D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384, 352 D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024, 353 D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096, 354 D3D12_REQ_MAXANISOTROPY = 16, 355 D3D12_REQ_MIP_LEVELS = 15, 356 D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048, 357 D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096, 358 D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384, 359 D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128, 360 D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = 25f, 361 D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048, 362 D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20, 363 D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096, 364 D3D12_REQ_SUBRESOURCES = 30720, 365 D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048, 366 D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384, 367 D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048, 368 D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384, 369 D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048, 370 D3D12_REQ_TEXTURECUBE_DIMENSION = 16384, 371 D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0, 372 D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff, 373 D3D12_SHADER_MAJOR_VERSION = 5, 374 D3D12_SHADER_MAX_INSTANCES = 65535, 375 D3D12_SHADER_MAX_INTERFACES = 253, 376 D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096, 377 D3D12_SHADER_MAX_TYPES = 65535, 378 D3D12_SHADER_MINOR_VERSION = 1, 379 D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0, 380 D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5, 381 D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8, 382 D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536, 383 D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096, 384 D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048, 385 D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512, 386 D3D12_SO_BUFFER_SLOT_COUNT = 4, 387 D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff, 388 D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff, 389 D3D12_SO_OUTPUT_COMPONENT_COUNT = 128, 390 D3D12_SO_STREAM_COUNT = 4, 391 D3D12_SPEC_DATE_DAY = 14, 392 D3D12_SPEC_DATE_MONTH = 11, 393 D3D12_SPEC_DATE_YEAR = 2014, 394 D3D12_SPEC_VERSION = 116 , 395 D3D12_SRGB_GAMMA = 22f , 396 D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 = 1292f , 397 D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 = 1055f , 398 D3D12_SRGB_TO_FLOAT_EXPONENT = 24f, 399 D3D12_SRGB_TO_FLOAT_OFFSET = 55f, 400 D3D12_SRGB_TO_FLOAT_THRESHOLD = 4045f, 401 D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = 5f, 402 D3D12_STANDARD_COMPONENT_BIT_COUNT = 32, 403 D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64, 404 D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4, 405 D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128, 406 D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32, 407 D3D12_STANDARD_VECTOR_SIZE = 4, 408 D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32, 409 D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64, 410 D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8, 411 D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8, 412 D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff, 413 D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0, 414 D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64, 415 D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64, 416 D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63, 417 D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64, 418 D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2, 419 D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1, 420 D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1, 421 D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16, 422 D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256, 423 D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512, 424 D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES= 65536, 425 D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096, 426 D3D12_UAV_SLOT_COUNT = 64, 427 D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0, 428 D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15, 429 D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16, 430 D3D12_VIEWPORT_BOUNDS_MAX = 32767, 431 D3D12_VIEWPORT_BOUNDS_MIN = -32768, 432 D3D12_VS_INPUT_REGISTER_COMPONENTS = 4, 433 D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 434 D3D12_VS_INPUT_REGISTER_COUNT = 32, 435 D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2, 436 D3D12_VS_INPUT_REGISTER_READ_PORTS = 1, 437 D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4, 438 D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 439 D3D12_VS_OUTPUT_REGISTER_COUNT = 32, 440 D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10, 441 D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25, 442 D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25 443 } 444 445 alias UINT64 D3D12_GPU_VIRTUAL_ADDRESS; 446 447 alias uint D3D12_COMMAND_LIST_TYPE; 448 enum : D3D12_COMMAND_LIST_TYPE { 449 D3D12_COMMAND_LIST_TYPE_DIRECT = 0, 450 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1, 451 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2, 452 D3D12_COMMAND_LIST_TYPE_COPY = 3 453 } 454 455 alias uint D3D12_COMMAND_QUEUE_FLAGS; 456 enum : D3D12_COMMAND_QUEUE_FLAGS { 457 D3D12_COMMAND_QUEUE_FLAG_NONE = 0, 458 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1 459 } 460 461 alias uint D3D12_COMMAND_QUEUE_PRIORITY; 462 enum : D3D12_COMMAND_QUEUE_PRIORITY { 463 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0, 464 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100 465 } 466 467 struct D3D12_COMMAND_QUEUE_DESC { 468 D3D12_COMMAND_LIST_TYPE Type; 469 INT Priority; 470 D3D12_COMMAND_QUEUE_FLAGS Flags; 471 UINT NodeMask; 472 } 473 474 alias uint D3D12_PRIMITIVE_TOPOLOGY_TYPE; 475 enum : D3D12_PRIMITIVE_TOPOLOGY_TYPE { 476 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0, 477 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1, 478 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2, 479 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3, 480 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4 481 } 482 483 alias uint D3D12_INPUT_CLASSIFICATION; 484 enum : D3D12_INPUT_CLASSIFICATION { 485 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0, 486 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1 487 } 488 489 struct D3D12_INPUT_ELEMENT_DESC { 490 LPCSTR SemanticName; 491 UINT SemanticIndex; 492 DXGI_FORMAT Format; 493 UINT InputSlot; 494 UINT AlignedByteOffset; 495 D3D12_INPUT_CLASSIFICATION InputSlotClass; 496 UINT InstanceDataStepRate; 497 } 498 499 alias uint D3D12_FILL_MODE; 500 enum : D3D12_FILL_MODE { 501 D3D12_FILL_MODE_WIREFRAME = 2, 502 D3D12_FILL_MODE_SOLID = 3 503 } 504 505 alias D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY; 506 alias D3D_PRIMITIVE D3D12_PRIMITIVE; 507 508 alias uint D3D12_CULL_MODE; 509 enum : D3D12_CULL_MODE { 510 D3D12_CULL_MODE_NONE = 1, 511 D3D12_CULL_MODE_FRONT = 2, 512 D3D12_CULL_MODE_BACK = 3 513 } 514 515 struct D3D12_SO_DECLARATION_ENTRY { 516 UINT Stream; 517 LPCSTR SemanticName; 518 UINT SemanticIndex; 519 BYTE StartComponent; 520 BYTE ComponentCount; 521 BYTE OutputSlot; 522 } 523 524 struct D3D12_VIEWPORT { 525 FLOAT TopLeftX; 526 FLOAT TopLeftY; 527 FLOAT Width; 528 FLOAT Height; 529 FLOAT MinDepth; 530 FLOAT MaxDepth; 531 } 532 533 alias RECT D3D12_RECT; 534 535 struct D3D12_BOX { 536 UINT left; 537 UINT top; 538 UINT front; 539 UINT right; 540 UINT bottom; 541 UINT back; 542 } 543 544 alias uint D3D12_COMPARISON_FUNC; 545 enum : D3D12_COMPARISON_FUNC { 546 D3D12_COMPARISON_FUNC_NEVER = 1, 547 D3D12_COMPARISON_FUNC_LESS = 2, 548 D3D12_COMPARISON_FUNC_EQUAL = 3, 549 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4, 550 D3D12_COMPARISON_FUNC_GREATER = 5, 551 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6, 552 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7, 553 D3D12_COMPARISON_FUNC_ALWAYS = 8 554 } 555 556 alias uint D3D12_DEPTH_WRITE_MASK; 557 enum : D3D12_DEPTH_WRITE_MASK { 558 D3D12_DEPTH_WRITE_MASK_ZERO = 0, 559 D3D12_DEPTH_WRITE_MASK_ALL = 1 560 } 561 562 alias uint D3D12_STENCIL_OP; 563 enum : D3D12_STENCIL_OP { 564 D3D12_STENCIL_OP_KEEP = 1, 565 D3D12_STENCIL_OP_ZERO = 2, 566 D3D12_STENCIL_OP_REPLACE = 3, 567 D3D12_STENCIL_OP_INCR_SAT = 4, 568 D3D12_STENCIL_OP_DECR_SAT = 5, 569 D3D12_STENCIL_OP_INVERT = 6, 570 D3D12_STENCIL_OP_INCR = 7, 571 D3D12_STENCIL_OP_DECR = 8 572 } 573 574 struct D3D12_DEPTH_STENCILOP_DESC { 575 D3D12_STENCIL_OP StencilFailOp; 576 D3D12_STENCIL_OP StencilDepthFailOp; 577 D3D12_STENCIL_OP StencilPassOp; 578 D3D12_COMPARISON_FUNC StencilFunc; 579 } 580 581 struct D3D12_DEPTH_STENCIL_DESC { 582 BOOL DepthEnable; 583 D3D12_DEPTH_WRITE_MASK DepthWriteMask; 584 D3D12_COMPARISON_FUNC DepthFunc; 585 BOOL StencilEnable; 586 UINT8 StencilReadMask; 587 UINT8 StencilWriteMask; 588 D3D12_DEPTH_STENCILOP_DESC FrontFace; 589 D3D12_DEPTH_STENCILOP_DESC BackFace; 590 } 591 592 alias uint D3D12_BLEND; 593 enum : D3D12_BLEND { 594 D3D12_BLEND_ZERO = 1, 595 D3D12_BLEND_ONE = 2, 596 D3D12_BLEND_SRC_COLOR = 3, 597 D3D12_BLEND_INV_SRC_COLOR = 4, 598 D3D12_BLEND_SRC_ALPHA = 5, 599 D3D12_BLEND_INV_SRC_ALPHA = 6, 600 D3D12_BLEND_DEST_ALPHA = 7, 601 D3D12_BLEND_INV_DEST_ALPHA = 8, 602 D3D12_BLEND_DEST_COLOR = 9, 603 D3D12_BLEND_INV_DEST_COLOR = 10, 604 D3D12_BLEND_SRC_ALPHA_SAT = 11, 605 D3D12_BLEND_BLEND_FACTOR = 14, 606 D3D12_BLEND_INV_BLEND_FACTOR = 15, 607 D3D12_BLEND_SRC1_COLOR = 16, 608 D3D12_BLEND_INV_SRC1_COLOR = 17, 609 D3D12_BLEND_SRC1_ALPHA = 18, 610 D3D12_BLEND_INV_SRC1_ALPHA = 19 611 } 612 613 alias uint D3D12_BLEND_OP; 614 enum : D3D12_BLEND_OP { 615 D3D12_BLEND_OP_ADD = 1, 616 D3D12_BLEND_OP_SUBTRACT = 2, 617 D3D12_BLEND_OP_REV_SUBTRACT = 3, 618 D3D12_BLEND_OP_MIN = 4, 619 D3D12_BLEND_OP_MAX = 5 620 } 621 622 alias uint D3D12_COLOR_WRITE_ENABLE; 623 enum : D3D12_COLOR_WRITE_ENABLE { 624 D3D12_COLOR_WRITE_ENABLE_RED = 1, 625 D3D12_COLOR_WRITE_ENABLE_GREEN = 2, 626 D3D12_COLOR_WRITE_ENABLE_BLUE = 4, 627 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8, 628 D3D12_COLOR_WRITE_ENABLE_ALL = D3D12_COLOR_WRITE_ENABLE_RED | 629 D3D12_COLOR_WRITE_ENABLE_GREEN | 630 D3D12_COLOR_WRITE_ENABLE_BLUE | 631 D3D12_COLOR_WRITE_ENABLE_ALPHA 632 } 633 634 alias uint D3D12_LOGIC_OP; 635 enum : D3D12_LOGIC_OP { 636 D3D12_LOGIC_OP_CLEAR = 0, 637 D3D12_LOGIC_OP_SET = D3D12_LOGIC_OP_CLEAR + 1, 638 D3D12_LOGIC_OP_COPY = D3D12_LOGIC_OP_SET + 1, 639 D3D12_LOGIC_OP_COPY_INVERTED = D3D12_LOGIC_OP_COPY + 1, 640 D3D12_LOGIC_OP_NOOP = D3D12_LOGIC_OP_COPY_INVERTED + 1, 641 D3D12_LOGIC_OP_INVERT = D3D12_LOGIC_OP_NOOP + 1, 642 D3D12_LOGIC_OP_AND = D3D12_LOGIC_OP_INVERT + 1, 643 D3D12_LOGIC_OP_NAND = D3D12_LOGIC_OP_AND + 1, 644 D3D12_LOGIC_OP_OR = D3D12_LOGIC_OP_NAND + 1, 645 D3D12_LOGIC_OP_NOR = D3D12_LOGIC_OP_OR + 1, 646 D3D12_LOGIC_OP_XOR = D3D12_LOGIC_OP_NOR + 1, 647 D3D12_LOGIC_OP_EQUIV = D3D12_LOGIC_OP_XOR + 1, 648 D3D12_LOGIC_OP_AND_REVERSE = D3D12_LOGIC_OP_EQUIV + 1, 649 D3D12_LOGIC_OP_AND_INVERTED = D3D12_LOGIC_OP_AND_REVERSE + 1, 650 D3D12_LOGIC_OP_OR_REVERSE = D3D12_LOGIC_OP_AND_INVERTED + 1, 651 D3D12_LOGIC_OP_OR_INVERTED = D3D12_LOGIC_OP_OR_REVERSE + 1 652 } 653 654 struct D3D12_RENDER_TARGET_BLEND_DESC { 655 BOOL BlendEnable; 656 BOOL LogicOpEnable; 657 D3D12_BLEND SrcBlend; 658 D3D12_BLEND DestBlend; 659 D3D12_BLEND_OP BlendOp; 660 D3D12_BLEND SrcBlendAlpha; 661 D3D12_BLEND DestBlendAlpha; 662 D3D12_BLEND_OP BlendOpAlpha; 663 D3D12_LOGIC_OP LogicOp; 664 UINT8 RenderTargetWriteMask; 665 } 666 667 struct D3D12_BLEND_DESC { 668 BOOL AlphaToCoverageEnable; 669 BOOL IndependentBlendEnable; 670 D3D12_RENDER_TARGET_BLEND_DESC[8] RenderTarget; 671 } 672 673 alias uint D3D12_CONSERVATIVE_RASTERIZATION_MODE; 674 enum : D3D12_CONSERVATIVE_RASTERIZATION_MODE { 675 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, 676 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1 677 } 678 679 struct D3D12_RASTERIZER_DESC { 680 D3D12_FILL_MODE FillMode; 681 D3D12_CULL_MODE CullMode; 682 BOOL FrontCounterClockwise; 683 INT DepthBias; 684 FLOAT DepthBiasClamp; 685 FLOAT SlopeScaledDepthBias; 686 BOOL DepthClipEnable; 687 BOOL MultisampleEnable; 688 BOOL AntialiasedLineEnable; 689 UINT ForcedSampleCount; 690 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster; 691 } 692 693 mixin(uuid!(ID3D12Object, "c4fec28f-7966-4e95-9f94-f431cb56c3b8")); 694 extern (C++) interface ID3D12Object : IUnknown { 695 HRESULT GetPrivateData(REFGUID guid, 696 UINT* pDataSize, 697 void* pData); 698 699 HRESULT SetPrivateData(REFGUID guid, 700 UINT DataSize, 701 const(void)* pData); 702 703 HRESULT SetPrivateDataInterface(REFGUID guid, 704 const IUnknown pData); 705 706 HRESULT SetName(LPCWSTR Name); 707 } 708 709 mixin(uuid!(ID3D12DeviceChild, "905db94b-a00c-4140-9df5-2b64ca9ea357")); 710 extern (C++) interface ID3D12DeviceChild : ID3D12Object { 711 HRESULT GetDevice(REFIID riid, 712 void** ppvDevice); 713 } 714 715 mixin(uuid!(ID3D12RootSignature, "c54a6b66-72df-4ee8-8be5-a946a1429214")); 716 extern (C++) interface ID3D12RootSignature : ID3D12DeviceChild {} 717 718 struct D3D12_SHADER_BYTECODE { 719 const(void)* pShaderBytecode; 720 SIZE_T BytecodeLength; 721 } 722 723 struct D3D12_STREAM_OUTPUT_DESC { 724 const(D3D12_SO_DECLARATION_ENTRY)* pSODeclaration; 725 UINT NumEntries; 726 const(UINT)* pBufferStrides; 727 UINT NumStrides; 728 UINT RasterizedStream; 729 } 730 731 struct D3D12_INPUT_LAYOUT_DESC { 732 const(D3D12_INPUT_ELEMENT_DESC)* pInputElementDescs; 733 UINT NumElements; 734 } 735 736 alias uint D3D12_INDEX_BUFFER_STRIP_CUT_VALUE; 737 enum : D3D12_INDEX_BUFFER_STRIP_CUT_VALUE { 738 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0, 739 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1, 740 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2 741 } 742 743 struct D3D12_CACHED_PIPELINE_STATE { 744 const(void)* pCachedBlob; 745 SIZE_T CachedBlobSizeInBytes; 746 } 747 748 alias uint D3D12_PIPELINE_STATE_FLAGS; 749 enum : D3D12_PIPELINE_STATE_FLAGS { 750 D3D12_PIPELINE_STATE_FLAG_NONE = 0, 751 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1 752 } 753 754 struct D3D12_GRAPHICS_PIPELINE_STATE_DESC { 755 ID3D12RootSignature pRootSignature; 756 D3D12_SHADER_BYTECODE VS; 757 D3D12_SHADER_BYTECODE PS; 758 D3D12_SHADER_BYTECODE DS; 759 D3D12_SHADER_BYTECODE HS; 760 D3D12_SHADER_BYTECODE GS; 761 D3D12_STREAM_OUTPUT_DESC StreamOutput; 762 D3D12_BLEND_DESC BlendState; 763 UINT SampleMask; 764 D3D12_RASTERIZER_DESC RasterizerState; 765 D3D12_DEPTH_STENCIL_DESC DepthStencilState; 766 D3D12_INPUT_LAYOUT_DESC InputLayout; 767 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue; 768 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType; 769 UINT NumRenderTargets; 770 DXGI_FORMAT[8] RTVFormats; 771 DXGI_FORMAT DSVFormat; 772 DXGI_SAMPLE_DESC SampleDesc; 773 UINT NodeMask; 774 D3D12_CACHED_PIPELINE_STATE CachedPSO; 775 D3D12_PIPELINE_STATE_FLAGS Flags; 776 } 777 778 struct D3D12_COMPUTE_PIPELINE_STATE_DESC { 779 ID3D12RootSignature pRootSignature; 780 D3D12_SHADER_BYTECODE CS; 781 UINT NodeMask; 782 D3D12_CACHED_PIPELINE_STATE CachedPSO; 783 D3D12_PIPELINE_STATE_FLAGS Flags; 784 } 785 786 alias uint D3D12_FEATURE; 787 enum : D3D12_FEATURE { 788 D3D12_FEATURE_D3D12_OPTIONS = 0, 789 D3D12_FEATURE_ARCHITECTURE = D3D12_FEATURE_D3D12_OPTIONS + 1, 790 D3D12_FEATURE_FEATURE_LEVELS = D3D12_FEATURE_ARCHITECTURE + 1, 791 D3D12_FEATURE_FORMAT_SUPPORT = D3D12_FEATURE_FEATURE_LEVELS + 1, 792 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = D3D12_FEATURE_FORMAT_SUPPORT + 1, 793 D3D12_FEATURE_FORMAT_INFO = D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS + 1, 794 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = D3D12_FEATURE_FORMAT_INFO + 1 795 } 796 797 alias uint D3D12_SHADER_MIN_PRECISION_SUPPORT; 798 enum : D3D12_SHADER_MIN_PRECISION_SUPPORT { 799 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0, 800 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1, 801 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2 802 } 803 804 alias uint D3D12_TILED_RESOURCES_TIER; 805 enum : D3D12_TILED_RESOURCES_TIER { 806 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0, 807 D3D12_TILED_RESOURCES_TIER_1 = 1, 808 D3D12_TILED_RESOURCES_TIER_2 = 2, 809 D3D12_TILED_RESOURCES_TIER_3 = 3 810 } 811 812 alias uint D3D12_RESOURCE_BINDING_TIER; 813 enum : D3D12_RESOURCE_BINDING_TIER { 814 D3D12_RESOURCE_BINDING_TIER_1 = 1, 815 D3D12_RESOURCE_BINDING_TIER_2 = 2, 816 D3D12_RESOURCE_BINDING_TIER_3 = 3 817 } 818 819 alias uint D3D12_CONSERVATIVE_RASTERIZATION_TIER; 820 enum : D3D12_CONSERVATIVE_RASTERIZATION_TIER { 821 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0, 822 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1, 823 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2, 824 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3 825 } 826 827 alias uint D3D12_FORMAT_SUPPORT1; 828 enum : D3D12_FORMAT_SUPPORT1 { 829 D3D12_FORMAT_SUPPORT1_NONE = 0, 830 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1, 831 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2, 832 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4, 833 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8, 834 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10, 835 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20, 836 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40, 837 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80, 838 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100, 839 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200, 840 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400, 841 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800, 842 D3D12_FORMAT_SUPPORT1_MIP = 0x1000, 843 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000, 844 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000, 845 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000, 846 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000, 847 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000, 848 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000, 849 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000, 850 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000, 851 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000, 852 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000, 853 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000, 854 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000, 855 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000, 856 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000, 857 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000, 858 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000 859 } 860 861 alias uint D3D12_FORMAT_SUPPORT2; 862 enum : D3D12_FORMAT_SUPPORT2 { 863 D3D12_FORMAT_SUPPORT2_NONE = 0, 864 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1, 865 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2, 866 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4, 867 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8, 868 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10, 869 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20, 870 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40, 871 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80, 872 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100, 873 D3D12_FORMAT_SUPPORT2_TILED = 0x200, 874 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000 875 } 876 877 alias uint D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS; 878 enum : D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS { 879 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0, 880 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1 881 } 882 883 alias uint D3D12_CROSS_NODE_SHARING_TIER; 884 enum : D3D12_CROSS_NODE_SHARING_TIER { 885 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0, 886 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1, 887 D3D12_CROSS_NODE_SHARING_TIER_1 = 2, 888 D3D12_CROSS_NODE_SHARING_TIER_2 = 3 889 } 890 891 alias uint D3D12_RESOURCE_HEAP_TIER; 892 enum : D3D12_RESOURCE_HEAP_TIER { 893 D3D12_RESOURCE_HEAP_TIER_1 = 1, 894 D3D12_RESOURCE_HEAP_TIER_2 = 2 895 } 896 897 struct D3D12_FEATURE_DATA_D3D12_OPTIONS { 898 BOOL DoublePrecisionFloatShaderOps; 899 BOOL OutputMergerLogicOp; 900 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport; 901 D3D12_TILED_RESOURCES_TIER TiledResourcesTier; 902 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier; 903 BOOL PSSpecifiedStencilRefSupported; 904 BOOL TypedUAVLoadAdditionalFormats; 905 BOOL ROVsSupported; 906 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier; 907 UINT MaxGPUVirtualAddressBitsPerResource; 908 BOOL StandardSwizzle64KBSupported; 909 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier; 910 BOOL CrossAdapterRowMajorTextureSupported; 911 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation; 912 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier; 913 } 914 915 struct D3D12_FEATURE_DATA_ARCHITECTURE { 916 UINT NodeIndex; 917 BOOL TileBasedRenderer; 918 BOOL UMA; 919 BOOL CacheCoherentUMA; 920 } 921 922 struct D3D12_FEATURE_DATA_FEATURE_LEVELS { 923 UINT NumFeatureLevels; 924 const(D3D_FEATURE_LEVEL)* pFeatureLevelsRequested; 925 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel; 926 } 927 928 struct D3D12_FEATURE_DATA_FORMAT_SUPPORT { 929 DXGI_FORMAT Format; 930 D3D12_FORMAT_SUPPORT1 Support1; 931 D3D12_FORMAT_SUPPORT2 Support2; 932 } 933 934 struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS { 935 DXGI_FORMAT Format; 936 UINT SampleCount; 937 D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags; 938 UINT NumQualityLevels; 939 } 940 941 struct D3D12_FEATURE_DATA_FORMAT_INFO { 942 DXGI_FORMAT Format; 943 UINT8 PlaneCount; 944 } 945 946 struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT { 947 UINT MaxGPUVirtualAddressBitsPerResource; 948 UINT MaxGPUVirtualAddressBitsPerProcess; 949 } 950 951 struct D3D12_RESOURCE_ALLOCATION_INFO { 952 UINT64 SizeInBytes; 953 UINT64 Alignment; 954 } 955 956 alias uint D3D12_HEAP_TYPE; 957 enum : D3D12_HEAP_TYPE { 958 D3D12_HEAP_TYPE_DEFAULT = 1, 959 D3D12_HEAP_TYPE_UPLOAD = 2, 960 D3D12_HEAP_TYPE_READBACK = 3, 961 D3D12_HEAP_TYPE_CUSTOM = 4 962 } 963 964 alias uint D3D12_CPU_PAGE_PROPERTY; 965 enum : D3D12_CPU_PAGE_PROPERTY { 966 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0, 967 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1, 968 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2, 969 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3 970 } 971 972 alias uint D3D12_MEMORY_POOL; 973 enum : D3D12_MEMORY_POOL { 974 D3D12_MEMORY_POOL_UNKNOWN = 0, 975 D3D12_MEMORY_POOL_L0 = 1, 976 D3D12_MEMORY_POOL_L1 = 2 977 } 978 979 struct D3D12_HEAP_PROPERTIES { 980 D3D12_HEAP_TYPE Type; 981 D3D12_CPU_PAGE_PROPERTY CPUPageProperty; 982 D3D12_MEMORY_POOL MemoryPoolPreference; 983 UINT CreationNodeMask; 984 UINT VisibleNodeMask; 985 } 986 987 alias uint D3D12_HEAP_FLAGS; 988 enum : D3D12_HEAP_FLAGS { 989 D3D12_HEAP_FLAG_NONE = 0, 990 D3D12_HEAP_FLAG_SHARED = 0x1, 991 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4, 992 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8, 993 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20, 994 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40, 995 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80, 996 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0, 997 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0, 998 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44, 999 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84 1000 } 1001 1002 struct D3D12_HEAP_DESC { 1003 UINT64 SizeInBytes; 1004 D3D12_HEAP_PROPERTIES Properties; 1005 UINT64 Alignment; 1006 D3D12_HEAP_FLAGS Flags; 1007 } 1008 1009 alias uint D3D12_RESOURCE_DIMENSION; 1010 enum : D3D12_RESOURCE_DIMENSION { 1011 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0, 1012 D3D12_RESOURCE_DIMENSION_BUFFER = 1, 1013 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2, 1014 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3, 1015 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4 1016 } 1017 1018 alias uint D3D12_TEXTURE_LAYOUT; 1019 enum : D3D12_TEXTURE_LAYOUT { 1020 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0, 1021 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, 1022 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2, 1023 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3 1024 } 1025 1026 alias uint D3D12_RESOURCE_FLAGS; 1027 enum : D3D12_RESOURCE_FLAGS { 1028 D3D12_RESOURCE_FLAG_NONE = 0, 1029 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1, 1030 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2, 1031 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4, 1032 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8, 1033 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10, 1034 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20 1035 } 1036 1037 struct D3D12_RESOURCE_DESC { 1038 D3D12_RESOURCE_DIMENSION Dimension; 1039 UINT64 Alignment; 1040 UINT64 Width; 1041 UINT Height; 1042 UINT16 DepthOrArraySize; 1043 UINT16 MipLevels; 1044 DXGI_FORMAT Format; 1045 DXGI_SAMPLE_DESC SampleDesc; 1046 D3D12_TEXTURE_LAYOUT Layout; 1047 D3D12_RESOURCE_FLAGS Flags; 1048 } 1049 1050 struct D3D12_DEPTH_STENCIL_VALUE { 1051 FLOAT Depth; 1052 UINT8 Stencil; 1053 } 1054 1055 struct D3D12_CLEAR_VALUE { 1056 DXGI_FORMAT Format; 1057 union { 1058 FLOAT[4] Color; 1059 D3D12_DEPTH_STENCIL_VALUE DepthStencil; 1060 } 1061 } 1062 1063 struct D3D12_RANGE { 1064 SIZE_T Begin; 1065 SIZE_T End; 1066 } 1067 1068 struct D3D12_SUBRESOURCE_INFO { 1069 UINT64 Offset; 1070 UINT RowPitch; 1071 UINT DepthPitch; 1072 } 1073 1074 struct D3D12_TILED_RESOURCE_COORDINATE { 1075 UINT X; 1076 UINT Y; 1077 UINT Z; 1078 UINT Subresource; 1079 } 1080 1081 struct D3D12_TILE_REGION_SIZE { 1082 UINT NumTiles; 1083 BOOL UseBox; 1084 UINT Width; 1085 UINT16 Height; 1086 UINT16 Depth; 1087 } 1088 1089 alias uint D3D12_TILE_RANGE_FLAGS; 1090 enum : D3D12_TILE_RANGE_FLAGS { 1091 D3D12_TILE_RANGE_FLAG_NONE = 0, 1092 D3D12_TILE_RANGE_FLAG_NULL = 1, 1093 D3D12_TILE_RANGE_FLAG_SKIP = 2, 1094 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4 1095 } 1096 1097 struct D3D12_SUBRESOURCE_TILING { 1098 UINT WidthInTiles; 1099 UINT16 HeightInTiles; 1100 UINT16 DepthInTiles; 1101 UINT StartTileIndexInOverallResource; 1102 } 1103 1104 struct D3D12_TILE_SHAPE { 1105 UINT WidthInTexels; 1106 UINT HeightInTexels; 1107 UINT DepthInTexels; 1108 } 1109 1110 struct D3D12_PACKED_MIP_INFO { 1111 UINT8 NumStandardMips; 1112 UINT8 NumPackedMips; 1113 UINT NumTilesForPackedMips; 1114 UINT StartTileIndexInOverallResource; 1115 } 1116 1117 alias uint D3D12_TILE_MAPPING_FLAGS; 1118 enum : D3D12_TILE_MAPPING_FLAGS { 1119 D3D12_TILE_MAPPING_FLAG_NONE = 0, 1120 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1 1121 } 1122 1123 alias uint D3D12_TILE_COPY_FLAGS; 1124 enum : D3D12_TILE_COPY_FLAGS { 1125 D3D12_TILE_COPY_FLAG_NONE = 0, 1126 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1, 1127 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, 1128 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4 1129 } 1130 1131 alias uint D3D12_RESOURCE_STATES; 1132 enum : D3D12_RESOURCE_STATES { 1133 D3D12_RESOURCE_STATE_COMMON = 0, 1134 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1, 1135 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2, 1136 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4, 1137 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8, 1138 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10, 1139 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20, 1140 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40, 1141 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80, 1142 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100, 1143 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200, 1144 D3D12_RESOURCE_STATE_COPY_DEST = 0x400, 1145 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800, 1146 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000, 1147 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000, 1148 D3D12_RESOURCE_STATE_GENERIC_READ = 0x1 | 0x2 | 0x40 | 0x80 | 0x200 | 0x800, 1149 D3D12_RESOURCE_STATE_PRESENT = 0, 1150 D3D12_RESOURCE_STATE_PREDICATION = 0x200 1151 } 1152 1153 alias uint D3D12_RESOURCE_BARRIER_TYPE; 1154 enum : D3D12_RESOURCE_BARRIER_TYPE { 1155 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0, 1156 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1, 1157 D3D12_RESOURCE_BARRIER_TYPE_UAV = D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 1158 } 1159 1160 1161 struct D3D12_RESOURCE_TRANSITION_BARRIER { 1162 ID3D12Resource pResource; 1163 UINT Subresource; 1164 D3D12_RESOURCE_STATES StateBefore; 1165 D3D12_RESOURCE_STATES StateAfter; 1166 } 1167 1168 struct D3D12_RESOURCE_ALIASING_BARRIER { 1169 ID3D12Resource pResourceBefore; 1170 ID3D12Resource pResourceAfter; 1171 } 1172 1173 struct D3D12_RESOURCE_UAV_BARRIER { 1174 ID3D12Resource pResource; 1175 } 1176 1177 alias uint D3D12_RESOURCE_BARRIER_FLAGS; 1178 enum : D3D12_RESOURCE_BARRIER_FLAGS { 1179 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0, 1180 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1, 1181 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2 1182 } 1183 1184 struct D3D12_RESOURCE_BARRIER { 1185 D3D12_RESOURCE_BARRIER_TYPE Type; 1186 D3D12_RESOURCE_BARRIER_FLAGS Flags; 1187 union { 1188 D3D12_RESOURCE_TRANSITION_BARRIER Transition; 1189 D3D12_RESOURCE_ALIASING_BARRIER Aliasing; 1190 D3D12_RESOURCE_UAV_BARRIER UAV; 1191 } 1192 } 1193 1194 struct D3D12_SUBRESOURCE_FOOTPRINT { 1195 DXGI_FORMAT Format; 1196 UINT Width; 1197 UINT Height; 1198 UINT Depth; 1199 UINT RowPitch; 1200 } 1201 1202 struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT { 1203 UINT64 Offset; 1204 D3D12_SUBRESOURCE_FOOTPRINT Footprint; 1205 } 1206 1207 alias uint D3D12_TEXTURE_COPY_TYPE; 1208 enum : D3D12_TEXTURE_COPY_TYPE { 1209 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0, 1210 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1 1211 } 1212 1213 struct D3D12_TEXTURE_COPY_LOCATION { 1214 ID3D12Resource pResource; 1215 D3D12_TEXTURE_COPY_TYPE Type; 1216 union { 1217 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint; 1218 UINT SubresourceIndex; 1219 } 1220 } 1221 1222 alias uint D3D12_SHADER_COMPONENT_MAPPING; 1223 enum : D3D12_SHADER_COMPONENT_MAPPING { 1224 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0, 1225 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1, 1226 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2, 1227 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3, 1228 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4, 1229 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5 1230 } 1231 1232 enum { 1233 D3D12_SHADER_COMPONENT_MAPPING_MASK = 0x7, 1234 D3D12_SHADER_COMPONENT_MAPPING_SHIFT = 3, 1235 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES = 1236 1 << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4), 1237 D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING = 1238 D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3) 1239 } 1240 1241 pure nothrow @nogc @safe { 1242 uint D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(uint Src0, uint Src1, 1243 uint Src2, uint Src3) 1244 { 1245 return ( (Src0 & D3D12_SHADER_COMPONENT_MAPPING_MASK) | 1246 ((Src1 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << 1247 D3D12_SHADER_COMPONENT_MAPPING_SHIFT) | 1248 ((Src2 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << 1249 (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) | 1250 ((Src3 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << 1251 (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) | 1252 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES); 1253 } 1254 1255 uint D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(uint ComponentToExtract, 1256 uint Mapping) 1257 { 1258 return cast(D3D12_SHADER_COMPONENT_MAPPING) 1259 (Mapping >> 1260 (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * ComponentToExtract) & 1261 D3D12_SHADER_COMPONENT_MAPPING_MASK); 1262 } 1263 } 1264 1265 alias uint D3D12_BUFFER_SRV_FLAGS; 1266 enum : D3D12_BUFFER_SRV_FLAGS { 1267 D3D12_BUFFER_SRV_FLAG_NONE = 0, 1268 D3D12_BUFFER_SRV_FLAG_RAW = 0x1 1269 } 1270 1271 struct D3D12_BUFFER_SRV { 1272 UINT64 FirstElement; 1273 UINT NumElements; 1274 UINT StructureByteStride; 1275 D3D12_BUFFER_SRV_FLAGS Flags; 1276 } 1277 1278 struct D3D12_TEX1D_SRV { 1279 UINT MostDetailedMip; 1280 UINT MipLevels; 1281 FLOAT ResourceMinLODClamp; 1282 } 1283 1284 struct D3D12_TEX1D_ARRAY_SRV { 1285 UINT MostDetailedMip; 1286 UINT MipLevels; 1287 UINT FirstArraySlice; 1288 UINT ArraySize; 1289 FLOAT ResourceMinLODClamp; 1290 } 1291 1292 struct D3D12_TEX2D_SRV { 1293 UINT MostDetailedMip; 1294 UINT MipLevels; 1295 UINT PlaneSlice; 1296 FLOAT ResourceMinLODClamp; 1297 } 1298 1299 struct D3D12_TEX2D_ARRAY_SRV { 1300 UINT MostDetailedMip; 1301 UINT MipLevels; 1302 UINT FirstArraySlice; 1303 UINT ArraySize; 1304 UINT PlaneSlice; 1305 FLOAT ResourceMinLODClamp; 1306 } 1307 1308 struct D3D12_TEX3D_SRV { 1309 UINT MostDetailedMip; 1310 UINT MipLevels; 1311 FLOAT ResourceMinLODClamp; 1312 } 1313 1314 struct D3D12_TEXCUBE_SRV { 1315 UINT MostDetailedMip; 1316 UINT MipLevels; 1317 FLOAT ResourceMinLODClamp; 1318 } 1319 1320 struct D3D12_TEXCUBE_ARRAY_SRV { 1321 UINT MostDetailedMip; 1322 UINT MipLevels; 1323 UINT First2DArrayFace; 1324 UINT NumCubes; 1325 FLOAT ResourceMinLODClamp; 1326 } 1327 1328 struct D3D12_TEX2DMS_SRV { 1329 UINT UnusedField_NothingToDefine; 1330 } 1331 1332 struct D3D12_TEX2DMS_ARRAY_SRV { 1333 UINT FirstArraySlice; 1334 UINT ArraySize; 1335 } 1336 1337 alias uint D3D12_SRV_DIMENSION; 1338 enum : D3D12_SRV_DIMENSION { 1339 D3D12_SRV_DIMENSION_UNKNOWN = 0, 1340 D3D12_SRV_DIMENSION_BUFFER = 1, 1341 D3D12_SRV_DIMENSION_TEXTURE1D = 2, 1342 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3, 1343 D3D12_SRV_DIMENSION_TEXTURE2D = 4, 1344 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5, 1345 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6, 1346 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7, 1347 D3D12_SRV_DIMENSION_TEXTURE3D = 8, 1348 D3D12_SRV_DIMENSION_TEXTURECUBE = 9, 1349 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10 1350 } 1351 1352 struct D3D12_SHADER_RESOURCE_VIEW_DESC { 1353 DXGI_FORMAT Format; 1354 D3D12_SRV_DIMENSION ViewDimension; 1355 UINT Shader4ComponentMapping; 1356 union 1357 { 1358 D3D12_BUFFER_SRV Buffer; 1359 D3D12_TEX1D_SRV Texture1D; 1360 D3D12_TEX1D_ARRAY_SRV Texture1DArray; 1361 D3D12_TEX2D_SRV Texture2D; 1362 D3D12_TEX2D_ARRAY_SRV Texture2DArray; 1363 D3D12_TEX2DMS_SRV Texture2DMS; 1364 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray; 1365 D3D12_TEX3D_SRV Texture3D; 1366 D3D12_TEXCUBE_SRV TextureCube; 1367 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray; 1368 } 1369 } 1370 1371 struct D3D12_CONSTANT_BUFFER_VIEW_DESC { 1372 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1373 UINT SizeInBytes; 1374 } 1375 1376 alias uint D3D12_FILTER; 1377 enum : D3D12_FILTER { 1378 D3D12_FILTER_MIN_MAG_MIP_POINT = 0, 1379 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1, 1380 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4, 1381 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5, 1382 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10, 1383 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11, 1384 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14, 1385 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15, 1386 D3D12_FILTER_ANISOTROPIC = 0x55, 1387 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80, 1388 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81, 1389 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84, 1390 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85, 1391 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90, 1392 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91, 1393 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94, 1394 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95, 1395 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5, 1396 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100, 1397 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101, 1398 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104, 1399 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105, 1400 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110, 1401 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111, 1402 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114, 1403 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115, 1404 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155, 1405 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180, 1406 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181, 1407 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184, 1408 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185, 1409 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190, 1410 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191, 1411 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194, 1412 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195, 1413 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5 1414 } 1415 1416 alias uint D3D12_FILTER_TYPE; 1417 enum : D3D12_FILTER_TYPE { 1418 D3D12_FILTER_TYPE_POINT = 0, 1419 D3D12_FILTER_TYPE_LINEAR = 1 1420 } 1421 1422 alias uint D3D12_FILTER_REDUCTION_TYPE; 1423 enum : D3D12_FILTER_REDUCTION_TYPE { 1424 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0, 1425 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1, 1426 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2, 1427 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3 1428 } 1429 1430 enum { 1431 D3D12_FILTER_REDUCTION_TYPE_MASK = 0x3, 1432 D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7, 1433 D3D12_FILTER_TYPE_MASK = 0x3, 1434 D3D12_MIN_FILTER_SHIFT = 4, 1435 D3D12_MAG_FILTER_SHIFT = 2, 1436 D3D12_MIP_FILTER_SHIFT = 0, 1437 D3D12_ANISOTROPIC_FILTERING_BIT = 0x40 1438 } 1439 1440 pure nothrow @safe @nogc { 1441 D3D12_FILTER D3D12_ENCODE_BASIC_FILTER(D3D12_FILTER_TYPE min, 1442 D3D12_FILTER_TYPE mag, 1443 D3D12_FILTER_TYPE mip, 1444 D3D12_FILTER_REDUCTION_TYPE reduction) 1445 { 1446 return cast(D3D12_FILTER) 1447 (((min & D3D12_FILTER_TYPE_MASK) << D3D12_MIN_FILTER_SHIFT ) | 1448 ((mag & D3D12_FILTER_TYPE_MASK) << D3D12_MAG_FILTER_SHIFT ) | 1449 ((mip & D3D12_FILTER_TYPE_MASK) << D3D12_MIP_FILTER_SHIFT ) | 1450 ((reduction & D3D12_FILTER_REDUCTION_TYPE_MASK) << 1451 D3D12_FILTER_REDUCTION_TYPE_SHIFT)); 1452 } 1453 1454 D3D12_FILTER D3D12_ENCODE_ANISOTROPIC_FILTER(D3D12_FILTER_REDUCTION_TYPE reduction) { 1455 return cast(D3D12_FILTER) 1456 (D3D12_ANISOTROPIC_FILTERING_BIT | 1457 D3D12_ENCODE_BASIC_FILTER(D3D12_FILTER_TYPE_LINEAR, 1458 D3D12_FILTER_TYPE_LINEAR, 1459 D3D12_FILTER_TYPE_LINEAR, 1460 reduction)); 1461 } 1462 1463 D3D12_FILTER_TYPE D3D12_DECODE_MIN_FILTER(D3D12_FILTER D3D12Filter) { 1464 return cast(D3D12_FILTER_TYPE) 1465 ((D3D12Filter >> D3D12_MIN_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK); 1466 } 1467 1468 D3D12_FILTER_TYPE D3D12_DECODE_MAG_FILTER(D3D12_FILTER D3D12Filter) { 1469 return cast(D3D12_FILTER_TYPE) 1470 ((D3D12Filter >> D3D12_MAG_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK); 1471 } 1472 1473 D3D12_FILTER_TYPE D3D12_DECODE_MIP_FILTER(D3D12_FILTER D3D12Filter) { 1474 return cast( D3D12_FILTER_TYPE ) 1475 ((D3D12Filter >> D3D12_MIP_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK); 1476 } 1477 1478 D3D12_FILTER_REDUCTION_TYPE D3D12_DECODE_FILTER_REDUCTION(D3D12_FILTER D3D12Filter) { 1479 return cast(D3D12_FILTER_REDUCTION_TYPE) 1480 ((D3D12Filter >> D3D12_FILTER_REDUCTION_TYPE_SHIFT) & 1481 D3D12_FILTER_REDUCTION_TYPE_MASK); 1482 } 1483 1484 bool D3D12_DECODE_IS_COMPARISON_FILTER(D3D12_FILTER D3D12Filter) { 1485 return D3D12_DECODE_FILTER_REDUCTION(D3D12Filter) == 1486 D3D12_FILTER_REDUCTION_TYPE_COMPARISON; 1487 } 1488 1489 bool D3D12_DECODE_IS_ANISOTROPIC_FILTER(D3D12_FILTER D3D12Filter) { 1490 return ((D3D12Filter & D3D12_ANISOTROPIC_FILTERING_BIT) && 1491 (D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER(D3D12Filter)) && 1492 (D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER(D3D12Filter)) && 1493 (D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER(D3D12Filter))); 1494 } 1495 } 1496 1497 alias uint D3D12_TEXTURE_ADDRESS_MODE; 1498 enum : D3D12_TEXTURE_ADDRESS_MODE { 1499 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1, 1500 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2, 1501 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3, 1502 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4, 1503 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5 1504 } 1505 1506 struct D3D12_SAMPLER_DESC { 1507 D3D12_FILTER Filter; 1508 D3D12_TEXTURE_ADDRESS_MODE AddressU; 1509 D3D12_TEXTURE_ADDRESS_MODE AddressV; 1510 D3D12_TEXTURE_ADDRESS_MODE AddressW; 1511 FLOAT MipLODBias; 1512 UINT MaxAnisotropy; 1513 D3D12_COMPARISON_FUNC ComparisonFunc; 1514 FLOAT[4] BorderColor; 1515 FLOAT MinLOD; 1516 FLOAT MaxLOD; 1517 } 1518 1519 alias uint D3D12_BUFFER_UAV_FLAGS; 1520 enum : D3D12_BUFFER_UAV_FLAGS { 1521 D3D12_BUFFER_UAV_FLAG_NONE = 0, 1522 D3D12_BUFFER_UAV_FLAG_RAW = 0x1 1523 } 1524 1525 struct D3D12_BUFFER_UAV { 1526 UINT64 FirstElement; 1527 UINT NumElements; 1528 UINT StructureByteStride; 1529 UINT64 CounterOffsetInBytes; 1530 D3D12_BUFFER_UAV_FLAGS Flags; 1531 } 1532 1533 struct D3D12_TEX1D_UAV { 1534 UINT MipSlice; 1535 } 1536 1537 struct D3D12_TEX1D_ARRAY_UAV { 1538 UINT MipSlice; 1539 UINT FirstArraySlice; 1540 UINT ArraySize; 1541 } 1542 1543 struct D3D12_TEX2D_UAV { 1544 UINT MipSlice; 1545 UINT PlaneSlice; 1546 } 1547 1548 struct D3D12_TEX2D_ARRAY_UAV { 1549 UINT MipSlice; 1550 UINT FirstArraySlice; 1551 UINT ArraySize; 1552 UINT PlaneSlice; 1553 } 1554 1555 struct D3D12_TEX3D_UAV { 1556 UINT MipSlice; 1557 UINT FirstWSlice; 1558 UINT WSize; 1559 } 1560 1561 alias uint D3D12_UAV_DIMENSION; 1562 enum : D3D12_UAV_DIMENSION { 1563 D3D12_UAV_DIMENSION_UNKNOWN = 0, 1564 D3D12_UAV_DIMENSION_BUFFER = 1, 1565 D3D12_UAV_DIMENSION_TEXTURE1D = 2, 1566 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3, 1567 D3D12_UAV_DIMENSION_TEXTURE2D = 4, 1568 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5, 1569 D3D12_UAV_DIMENSION_TEXTURE3D = 8 1570 } 1571 1572 struct D3D12_UNORDERED_ACCESS_VIEW_DESC { 1573 DXGI_FORMAT Format; 1574 D3D12_UAV_DIMENSION ViewDimension; 1575 union { 1576 D3D12_BUFFER_UAV Buffer; 1577 D3D12_TEX1D_UAV Texture1D; 1578 D3D12_TEX1D_ARRAY_UAV Texture1DArray; 1579 D3D12_TEX2D_UAV Texture2D; 1580 D3D12_TEX2D_ARRAY_UAV Texture2DArray; 1581 D3D12_TEX3D_UAV Texture3D; 1582 } 1583 } 1584 1585 struct D3D12_BUFFER_RTV { 1586 UINT64 FirstElement; 1587 UINT NumElements; 1588 } 1589 1590 struct D3D12_TEX1D_RTV { 1591 UINT MipSlice; 1592 } 1593 1594 struct D3D12_TEX1D_ARRAY_RTV { 1595 UINT MipSlice; 1596 UINT FirstArraySlice; 1597 UINT ArraySize; 1598 } 1599 1600 struct D3D12_TEX2D_RTV { 1601 UINT MipSlice; 1602 UINT PlaneSlice; 1603 } 1604 1605 struct D3D12_TEX2DMS_RTV { 1606 UINT UnusedField_NothingToDefine; 1607 } 1608 1609 struct D3D12_TEX2D_ARRAY_RTV { 1610 UINT MipSlice; 1611 UINT FirstArraySlice; 1612 UINT ArraySize; 1613 UINT PlaneSlice; 1614 } 1615 1616 struct D3D12_TEX2DMS_ARRAY_RTV { 1617 UINT FirstArraySlice; 1618 UINT ArraySize; 1619 } 1620 1621 struct D3D12_TEX3D_RTV { 1622 UINT MipSlice; 1623 UINT FirstWSlice; 1624 UINT WSize; 1625 } 1626 1627 alias uint D3D12_RTV_DIMENSION; 1628 enum : D3D12_RTV_DIMENSION { 1629 D3D12_RTV_DIMENSION_UNKNOWN = 0, 1630 D3D12_RTV_DIMENSION_BUFFER = 1, 1631 D3D12_RTV_DIMENSION_TEXTURE1D = 2, 1632 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3, 1633 D3D12_RTV_DIMENSION_TEXTURE2D = 4, 1634 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5, 1635 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6, 1636 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7, 1637 D3D12_RTV_DIMENSION_TEXTURE3D = 8 1638 } 1639 1640 struct D3D12_RENDER_TARGET_VIEW_DESC { 1641 DXGI_FORMAT Format; 1642 D3D12_RTV_DIMENSION ViewDimension; 1643 union 1644 { 1645 D3D12_BUFFER_RTV Buffer; 1646 D3D12_TEX1D_RTV Texture1D; 1647 D3D12_TEX1D_ARRAY_RTV Texture1DArray; 1648 D3D12_TEX2D_RTV Texture2D; 1649 D3D12_TEX2D_ARRAY_RTV Texture2DArray; 1650 D3D12_TEX2DMS_RTV Texture2DMS; 1651 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray; 1652 D3D12_TEX3D_RTV Texture3D; 1653 } 1654 } 1655 1656 struct D3D12_TEX1D_DSV { 1657 UINT MipSlice; 1658 } 1659 1660 struct D3D12_TEX1D_ARRAY_DSV { 1661 UINT MipSlice; 1662 UINT FirstArraySlice; 1663 UINT ArraySize; 1664 } 1665 1666 struct D3D12_TEX2D_DSV { 1667 UINT MipSlice; 1668 } 1669 1670 struct D3D12_TEX2D_ARRAY_DSV { 1671 UINT MipSlice; 1672 UINT FirstArraySlice; 1673 UINT ArraySize; 1674 } 1675 1676 struct D3D12_TEX2DMS_DSV { 1677 UINT UnusedField_NothingToDefine; 1678 } 1679 1680 struct D3D12_TEX2DMS_ARRAY_DSV { 1681 UINT FirstArraySlice; 1682 UINT ArraySize; 1683 } 1684 1685 alias uint D3D12_DSV_FLAGS; 1686 enum : D3D12_DSV_FLAGS { 1687 D3D12_DSV_FLAG_NONE = 0, 1688 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1, 1689 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2 1690 } 1691 1692 alias uint D3D12_DSV_DIMENSION; 1693 enum : D3D12_DSV_DIMENSION { 1694 D3D12_DSV_DIMENSION_UNKNOWN = 0, 1695 D3D12_DSV_DIMENSION_TEXTURE1D = 1, 1696 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2, 1697 D3D12_DSV_DIMENSION_TEXTURE2D = 3, 1698 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4, 1699 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5, 1700 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6 1701 } 1702 1703 struct D3D12_DEPTH_STENCIL_VIEW_DESC { 1704 DXGI_FORMAT Format; 1705 D3D12_DSV_DIMENSION ViewDimension; 1706 D3D12_DSV_FLAGS Flags; 1707 union 1708 { 1709 D3D12_TEX1D_DSV Texture1D; 1710 D3D12_TEX1D_ARRAY_DSV Texture1DArray; 1711 D3D12_TEX2D_DSV Texture2D; 1712 D3D12_TEX2D_ARRAY_DSV Texture2DArray; 1713 D3D12_TEX2DMS_DSV Texture2DMS; 1714 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray; 1715 } 1716 } 1717 1718 alias uint D3D12_CLEAR_FLAGS; 1719 enum : D3D12_CLEAR_FLAGS { 1720 D3D12_CLEAR_FLAG_DEPTH = 0x1, 1721 D3D12_CLEAR_FLAG_STENCIL = 0x2 1722 } 1723 1724 alias uint D3D12_FENCE_FLAGS; 1725 enum : D3D12_FENCE_FLAGS { 1726 D3D12_FENCE_FLAG_NONE = 0, 1727 D3D12_FENCE_FLAG_SHARED = 0x1, 1728 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2 1729 } 1730 1731 alias uint D3D12_DESCRIPTOR_HEAP_TYPE; 1732 enum : D3D12_DESCRIPTOR_HEAP_TYPE { 1733 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0, 1734 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1, 1735 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1, 1736 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1, 1737 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 1738 } 1739 1740 alias uint D3D12_DESCRIPTOR_HEAP_FLAGS; 1741 enum : D3D12_DESCRIPTOR_HEAP_FLAGS { 1742 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0, 1743 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1 1744 } 1745 1746 struct D3D12_DESCRIPTOR_HEAP_DESC { 1747 D3D12_DESCRIPTOR_HEAP_TYPE Type; 1748 UINT NumDescriptors; 1749 D3D12_DESCRIPTOR_HEAP_FLAGS Flags; 1750 UINT NodeMask; 1751 } 1752 1753 alias uint D3D12_DESCRIPTOR_RANGE_TYPE; 1754 enum : D3D12_DESCRIPTOR_RANGE_TYPE { 1755 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0, 1756 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1, 1757 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1, 1758 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 1759 } 1760 1761 struct D3D12_DESCRIPTOR_RANGE { 1762 D3D12_DESCRIPTOR_RANGE_TYPE RangeType; 1763 UINT NumDescriptors; 1764 UINT BaseShaderRegister; 1765 UINT RegisterSpace; 1766 UINT OffsetInDescriptorsFromTableStart; 1767 } 1768 1769 struct D3D12_ROOT_DESCRIPTOR_TABLE { 1770 UINT NumDescriptorRanges; 1771 const(D3D12_DESCRIPTOR_RANGE)* pDescriptorRanges; 1772 } 1773 1774 struct D3D12_ROOT_CONSTANTS { 1775 UINT ShaderRegister; 1776 UINT RegisterSpace; 1777 UINT Num32BitValues; 1778 } 1779 1780 struct D3D12_ROOT_DESCRIPTOR { 1781 UINT ShaderRegister; 1782 UINT RegisterSpace; 1783 } 1784 1785 alias uint D3D12_SHADER_VISIBILITY; 1786 enum : D3D12_SHADER_VISIBILITY { 1787 D3D12_SHADER_VISIBILITY_ALL = 0, 1788 D3D12_SHADER_VISIBILITY_VERTEX = 1, 1789 D3D12_SHADER_VISIBILITY_HULL = 2, 1790 D3D12_SHADER_VISIBILITY_DOMAIN = 3, 1791 D3D12_SHADER_VISIBILITY_GEOMETRY = 4, 1792 D3D12_SHADER_VISIBILITY_PIXEL = 5 1793 } 1794 1795 alias uint D3D12_ROOT_PARAMETER_TYPE; 1796 enum : D3D12_ROOT_PARAMETER_TYPE { 1797 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0, 1798 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1, 1799 D3D12_ROOT_PARAMETER_TYPE_CBV = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1, 1800 D3D12_ROOT_PARAMETER_TYPE_SRV = D3D12_ROOT_PARAMETER_TYPE_CBV + 1, 1801 D3D12_ROOT_PARAMETER_TYPE_UAV = D3D12_ROOT_PARAMETER_TYPE_SRV + 1 1802 } 1803 1804 struct D3D12_ROOT_PARAMETER { 1805 D3D12_ROOT_PARAMETER_TYPE ParameterType; 1806 union { 1807 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable; 1808 D3D12_ROOT_CONSTANTS Constants; 1809 D3D12_ROOT_DESCRIPTOR Descriptor; 1810 } 1811 D3D12_SHADER_VISIBILITY ShaderVisibility; 1812 } 1813 1814 alias uint D3D12_ROOT_SIGNATURE_FLAGS; 1815 enum : D3D12_ROOT_SIGNATURE_FLAGS { 1816 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0, 1817 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1, 1818 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2, 1819 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4, 1820 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8, 1821 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10, 1822 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20, 1823 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40 1824 } 1825 1826 alias uint D3D12_STATIC_BORDER_COLOR; 1827 enum : D3D12_STATIC_BORDER_COLOR { 1828 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0, 1829 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1, 1830 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 1831 } 1832 1833 struct D3D12_STATIC_SAMPLER_DESC { 1834 D3D12_FILTER Filter; 1835 D3D12_TEXTURE_ADDRESS_MODE AddressU; 1836 D3D12_TEXTURE_ADDRESS_MODE AddressV; 1837 D3D12_TEXTURE_ADDRESS_MODE AddressW; 1838 FLOAT MipLODBias; 1839 UINT MaxAnisotropy; 1840 D3D12_COMPARISON_FUNC ComparisonFunc; 1841 D3D12_STATIC_BORDER_COLOR BorderColor; 1842 FLOAT MinLOD; 1843 FLOAT MaxLOD; 1844 UINT ShaderRegister; 1845 UINT RegisterSpace; 1846 D3D12_SHADER_VISIBILITY ShaderVisibility; 1847 } 1848 1849 struct D3D12_ROOT_SIGNATURE_DESC { 1850 UINT NumParameters; 1851 const(D3D12_ROOT_PARAMETER)* pParameters; 1852 UINT NumStaticSamplers; 1853 const(D3D12_STATIC_SAMPLER_DESC)* pStaticSamplers; 1854 D3D12_ROOT_SIGNATURE_FLAGS Flags; 1855 } 1856 1857 alias uint D3D_ROOT_SIGNATURE_VERSION; 1858 enum : D3D_ROOT_SIGNATURE_VERSION { 1859 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1 1860 } 1861 1862 mixin(uuid!(ID3D12RootSignatureDeserializer, "34AB647B-3CC8-46AC-841B-C0965645C046")); 1863 extern (C++) interface ID3D12RootSignatureDeserializer : IUnknown { 1864 const(D3D12_ROOT_SIGNATURE_DESC)* GetRootSignatureDesc(); 1865 } 1866 1867 alias PFN_D3D12_SERIALIZE_ROOT_SIGNATURE = 1868 HRESULT function(const(D3D12_ROOT_SIGNATURE_DESC)* pRootSignature, 1869 D3D_ROOT_SIGNATURE_VERSION Version, 1870 ID3DBlob* ppBlob, 1871 ID3DBlob* ppErrorBlob); 1872 1873 HRESULT D3D12SerializeRootSignature(const(D3D12_ROOT_SIGNATURE_DESC)* pRootSignature, 1874 D3D_ROOT_SIGNATURE_VERSION Version, 1875 ID3DBlob* ppBlob, 1876 ID3DBlob* ppErrorBlob); 1877 1878 alias PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER = HRESULT function(LPCVOID pSrcData, 1879 SIZE_T SrcDataSizeInBytes, 1880 REFIID pRootSignatureDeserializerInterface, 1881 void** ppRootSignatureDeserializer); 1882 1883 HRESULT D3D12CreateRootSignatureDeserializer(LPCVOID pSrcData, 1884 SIZE_T SrcDataSizeInBytes, 1885 REFIID pRootSignatureDeserializerInterface, 1886 void** ppRootSignatureDeserializer); 1887 1888 struct D3D12_CPU_DESCRIPTOR_HANDLE { 1889 SIZE_T ptr; 1890 } 1891 1892 struct D3D12_GPU_DESCRIPTOR_HANDLE { 1893 UINT64 ptr; 1894 } 1895 1896 // If rects are supplied in D3D12_DISCARD_REGION, below, the resource 1897 // must have 2D subresources with all specified subresources the same dimension. 1898 struct D3D12_DISCARD_REGION { 1899 UINT NumRects; 1900 const(D3D12_RECT)* pRects; 1901 UINT FirstSubresource; 1902 UINT NumSubresources; 1903 } 1904 1905 alias uint D3D12_QUERY_HEAP_TYPE; 1906 enum : D3D12_QUERY_HEAP_TYPE { 1907 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0, 1908 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1, 1909 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2, 1910 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3 1911 } 1912 1913 struct D3D12_QUERY_HEAP_DESC { 1914 D3D12_QUERY_HEAP_TYPE Type; 1915 UINT Count; 1916 UINT NodeMask; 1917 } 1918 1919 alias uint D3D12_QUERY_TYPE; 1920 enum : D3D12_QUERY_TYPE { 1921 D3D12_QUERY_TYPE_OCCLUSION = 0, 1922 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1, 1923 D3D12_QUERY_TYPE_TIMESTAMP = 2, 1924 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3, 1925 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4, 1926 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5, 1927 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6, 1928 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7 1929 } 1930 1931 alias uint D3D12_PREDICATION_OP; 1932 enum : D3D12_PREDICATION_OP { 1933 D3D12_PREDICATION_OP_EQUAL_ZERO = 0, 1934 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1 1935 } 1936 1937 struct D3D12_QUERY_DATA_PIPELINE_STATISTICS { 1938 UINT64 IAVertices; 1939 UINT64 IAPrimitives; 1940 UINT64 VSInvocations; 1941 UINT64 GSInvocations; 1942 UINT64 GSPrimitives; 1943 UINT64 CInvocations; 1944 UINT64 CPrimitives; 1945 UINT64 PSInvocations; 1946 UINT64 HSInvocations; 1947 UINT64 DSInvocations; 1948 UINT64 CSInvocations; 1949 } 1950 1951 struct D3D12_QUERY_DATA_SO_STATISTICS { 1952 UINT64 NumPrimitivesWritten; 1953 UINT64 PrimitivesStorageNeeded; 1954 } 1955 1956 struct D3D12_STREAM_OUTPUT_BUFFER_VIEW { 1957 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1958 UINT64 SizeInBytes; 1959 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation; 1960 } 1961 1962 struct D3D12_DRAW_ARGUMENTS { 1963 UINT VertexCountPerInstance; 1964 UINT InstanceCount; 1965 UINT StartVertexLocation; 1966 UINT StartInstanceLocation; 1967 } 1968 1969 struct D3D12_DRAW_INDEXED_ARGUMENTS { 1970 UINT IndexCountPerInstance; 1971 UINT InstanceCount; 1972 UINT StartIndexLocation; 1973 INT BaseVertexLocation; 1974 UINT StartInstanceLocation; 1975 } 1976 1977 struct D3D12_DISPATCH_ARGUMENTS { 1978 UINT ThreadGroupCountX; 1979 UINT ThreadGroupCountY; 1980 UINT ThreadGroupCountZ; 1981 } 1982 1983 struct D3D12_VERTEX_BUFFER_VIEW { 1984 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1985 UINT SizeInBytes; 1986 UINT StrideInBytes; 1987 } 1988 1989 struct D3D12_INDEX_BUFFER_VIEW { 1990 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1991 UINT SizeInBytes; 1992 DXGI_FORMAT Format; 1993 } 1994 1995 alias uint D3D12_INDIRECT_ARGUMENT_TYPE; 1996 enum : D3D12_INDIRECT_ARGUMENT_TYPE { 1997 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0, 1998 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1, 1999 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1, 2000 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1, 2001 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1, 2002 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1, 2003 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1, 2004 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1, 2005 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 2006 } 2007 2008 struct D3D12_INDIRECT_ARGUMENT_DESC { 2009 D3D12_INDIRECT_ARGUMENT_TYPE Type; 2010 union { 2011 struct { 2012 UINT Slot; 2013 } 2014 static struct _Constant { 2015 UINT RootParameterIndex; 2016 UINT DestOffsetIn32BitValues; 2017 UINT Num32BitValuesToSet; 2018 } 2019 static struct _ConstantBufferView { 2020 UINT RootParameterIndex; 2021 } 2022 static struct _ShaderResourceView { 2023 UINT RootParameterIndex; 2024 } 2025 static struct _UnorderedAccessView { 2026 UINT RootParameterIndex; 2027 } 2028 2029 _Constant Constant; 2030 _ConstantBufferView ConstantBufferView; 2031 _ShaderResourceView ShaderResourceView; 2032 _UnorderedAccessView UnorderedAccessView; 2033 } 2034 } 2035 2036 struct D3D12_COMMAND_SIGNATURE_DESC { 2037 UINT ByteStride; 2038 UINT NumArgumentDescs; 2039 const(D3D12_INDIRECT_ARGUMENT_DESC)* pArgumentDescs; 2040 UINT NodeMask; 2041 } 2042 2043 mixin(uuid!(ID3D12Pageable, "63ee58fb-1268-4835-86da-f008ce62f0d6")); 2044 extern (C++) interface ID3D12Pageable : ID3D12DeviceChild {} 2045 2046 mixin(uuid!(ID3D12Heap, "6b3b2502-6e51-45b3-90ee-9884265e8df3")); 2047 extern (C++) interface ID3D12Heap : ID3D12Pageable { 2048 D3D12_HEAP_DESC GetDesc(); 2049 } 2050 2051 mixin(uuid!(ID3D12Resource, "696442be-a72e-4059-bc79-5b5c98040fad")); 2052 extern (C++) interface ID3D12Resource : ID3D12Pageable { 2053 HRESULT Map(UINT Subresource, 2054 const(D3D12_RANGE)*pReadRange, 2055 void** ppData); 2056 2057 void Unmap(UINT Subresource, 2058 const(D3D12_RANGE)* pWrittenRange); 2059 2060 D3D12_RESOURCE_DESC GetDesc(); 2061 2062 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress(); 2063 2064 HRESULT WriteToSubresource(UINT DstSubresource, 2065 const(D3D12_BOX)* pDstBox, 2066 const(void)* pSrcData, 2067 UINT SrcRowPitch, 2068 UINT SrcDepthPitch); 2069 2070 HRESULT ReadFromSubresource(void* pDstData, 2071 UINT DstRowPitch, 2072 UINT DstDepthPitch, 2073 UINT SrcSubresource, 2074 const(D3D12_BOX)* pSrcBox); 2075 2076 HRESULT GetHeapProperties(D3D12_HEAP_PROPERTIES* pHeapProperties, 2077 D3D12_HEAP_FLAGS* pHeapFlags); 2078 } 2079 2080 mixin(uuid!(ID3D12CommandAllocator, "6102dee4-af59-4b09-b999-b44d73f09b24")); 2081 extern (C++) interface ID3D12CommandAllocator : ID3D12Pageable { 2082 HRESULT Reset(); 2083 } 2084 2085 mixin(uuid!(ID3D12Fence, "0a753dcf-c4d8-4b91-adf6-be5a60d95a76")); 2086 extern (C++) interface ID3D12Fence : ID3D12Pageable { 2087 UINT64 GetCompletedValue(); 2088 2089 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent); 2090 2091 HRESULT Signal(UINT64 Value); 2092 } 2093 2094 mixin(uuid!(ID3D12PipelineState, "765a30f3-f624-4c6f-a828-ace948622445")); 2095 extern (C++) interface ID3D12PipelineState : ID3D12Pageable { 2096 HRESULT GetCachedBlob(ID3DBlob*ppBlob); 2097 } 2098 2099 mixin(uuid!(ID3D12DescriptorHeap, "8efb471d-616c-4f49-90f7-127bb763fa51")); 2100 extern (C++) interface ID3D12DescriptorHeap : ID3D12Pageable { 2101 D3D12_DESCRIPTOR_HEAP_DESC GetDesc(); 2102 2103 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart(); 2104 2105 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart(); 2106 } 2107 2108 mixin(uuid!(ID3D12QueryHeap, "0d9658ae-ed45-469e-a61d-970ec583cab4")); 2109 extern (C++) interface ID3D12QueryHeap : ID3D12Pageable {} 2110 2111 mixin(uuid!(ID3D12CommandSignature, "c36a797c-ec80-4f0a-8985-a7b2475082d1")); 2112 extern (C++) interface ID3D12CommandSignature : ID3D12Pageable {} 2113 2114 mixin(uuid!(ID3D12CommandList, "7116d91c-e7e4-47ce-b8c6-ec8168f437e5")); 2115 extern (C++) interface ID3D12CommandList : ID3D12DeviceChild { 2116 2117 D3D12_COMMAND_LIST_TYPE GetType(); 2118 } 2119 2120 mixin(uuid!(ID3D12GraphicsCommandList, "5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")); 2121 extern (C++) interface ID3D12GraphicsCommandList : ID3D12CommandList { 2122 HRESULT Close(); 2123 2124 HRESULT Reset(ID3D12CommandAllocator pAllocator, 2125 ID3D12PipelineState pInitialState); 2126 2127 void ClearState(ID3D12PipelineState pPipelineState); 2128 2129 void DrawInstanced( 2130 UINT VertexCountPerInstance, 2131 UINT InstanceCount, 2132 UINT StartVertexLocation, 2133 UINT StartInstanceLocation); 2134 2135 void DrawIndexedInstanced( 2136 UINT IndexCountPerInstance, 2137 UINT InstanceCount, 2138 UINT StartIndexLocation, 2139 INT BaseVertexLocation, 2140 UINT StartInstanceLocation); 2141 2142 void Dispatch( 2143 UINT ThreadGroupCountX, 2144 UINT ThreadGroupCountY, 2145 UINT ThreadGroupCountZ); 2146 2147 void CopyBufferRegion( 2148 ID3D12Resource pDstBuffer, 2149 UINT64 DstOffset, 2150 ID3D12Resource pSrcBuffer, 2151 UINT64 SrcOffset, 2152 UINT64 NumBytes); 2153 2154 void CopyTextureRegion( 2155 const(D3D12_TEXTURE_COPY_LOCATION)* pDst, 2156 UINT DstX, 2157 UINT DstY, 2158 UINT DstZ, 2159 const(D3D12_TEXTURE_COPY_LOCATION)* pSrc, 2160 const(D3D12_BOX)* pSrcBox); 2161 2162 void CopyResource( 2163 ID3D12Resource pDstResource, 2164 ID3D12Resource pSrcResource); 2165 2166 void CopyTiles( 2167 ID3D12Resource pTiledResource, 2168 const(D3D12_TILED_RESOURCE_COORDINATE)* pTileRegionStartCoordinate, 2169 const(D3D12_TILE_REGION_SIZE)* pTileRegionSize, 2170 ID3D12Resource pBuffer, 2171 UINT64 BufferStartOffsetInBytes, 2172 D3D12_TILE_COPY_FLAGS Flags); 2173 2174 void ResolveSubresource( 2175 ID3D12Resource pDstResource, 2176 UINT DstSubresource, 2177 ID3D12Resource pSrcResource, 2178 UINT SrcSubresource, 2179 DXGI_FORMAT Format); 2180 2181 void IASetPrimitiveTopology( 2182 D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); 2183 2184 void RSSetViewports( 2185 UINT NumViewports, 2186 const(D3D12_VIEWPORT) *pViewports); 2187 2188 void RSSetScissorRects( 2189 UINT NumRects, 2190 const(D3D12_RECT)* pRects); 2191 2192 void OMSetBlendFactor( 2193 const(FLOAT)[4] BlendFactor); 2194 2195 void OMSetStencilRef( 2196 UINT StencilRef); 2197 2198 void SetPipelineState( 2199 ID3D12PipelineState pPipelineState); 2200 2201 void ResourceBarrier( 2202 UINT NumBarriers, 2203 const(D3D12_RESOURCE_BARRIER)* pBarriers); 2204 2205 void ExecuteBundle( 2206 ID3D12GraphicsCommandList pCommandList); 2207 2208 void SetDescriptorHeaps( 2209 UINT NumDescriptorHeaps, 2210 ID3D12DescriptorHeap *ppDescriptorHeaps); 2211 2212 void SetComputeRootSignature( 2213 ID3D12RootSignature pRootSignature); 2214 2215 void SetGraphicsRootSignature( 2216 ID3D12RootSignature pRootSignature); 2217 2218 void SetComputeRootDescriptorTable( 2219 UINT RootParameterIndex, 2220 D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); 2221 2222 void SetGraphicsRootDescriptorTable( 2223 UINT RootParameterIndex, 2224 D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); 2225 2226 void SetComputeRoot32BitConstant( 2227 UINT RootParameterIndex, 2228 UINT SrcData, 2229 UINT DestOffsetIn32BitValues); 2230 2231 void SetGraphicsRoot32BitConstant( 2232 UINT RootParameterIndex, 2233 UINT SrcData, 2234 UINT DestOffsetIn32BitValues); 2235 2236 void SetComputeRoot32BitConstants( 2237 UINT RootParameterIndex, 2238 UINT Num32BitValuesToSet, 2239 const(void)* pSrcData, 2240 UINT DestOffsetIn32BitValues); 2241 2242 void SetGraphicsRoot32BitConstants( 2243 UINT RootParameterIndex, 2244 UINT Num32BitValuesToSet, 2245 const(void) *pSrcData, 2246 UINT DestOffsetIn32BitValues); 2247 2248 void SetComputeRootConstantBufferView( 2249 UINT RootParameterIndex, 2250 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2251 2252 void SetGraphicsRootConstantBufferView( 2253 UINT RootParameterIndex, 2254 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2255 2256 void SetComputeRootShaderResourceView( 2257 UINT RootParameterIndex, 2258 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2259 2260 void SetGraphicsRootShaderResourceView( 2261 UINT RootParameterIndex, 2262 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2263 2264 void SetComputeRootUnorderedAccessView( 2265 UINT RootParameterIndex, 2266 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2267 2268 void SetGraphicsRootUnorderedAccessView( 2269 UINT RootParameterIndex, 2270 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2271 2272 void IASetIndexBuffer( 2273 const(D3D12_INDEX_BUFFER_VIEW)* pView); 2274 2275 void IASetVertexBuffers( 2276 UINT StartSlot, 2277 UINT NumViews, 2278 const(D3D12_VERTEX_BUFFER_VIEW)* pViews); 2279 2280 void SOSetTargets( 2281 UINT StartSlot, 2282 UINT NumViews, 2283 const(D3D12_STREAM_OUTPUT_BUFFER_VIEW)* pViews); 2284 2285 void OMSetRenderTargets( 2286 UINT NumRenderTargetDescriptors, 2287 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pRenderTargetDescriptors, 2288 BOOL RTsSingleHandleToDescriptorRange, 2289 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pDepthStencilDescriptor); 2290 2291 void ClearDepthStencilView( 2292 D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, 2293 D3D12_CLEAR_FLAGS ClearFlags, 2294 FLOAT Depth, 2295 UINT8 Stencil, 2296 UINT NumRects, 2297 const(D3D12_RECT)* pRects); 2298 2299 void ClearRenderTargetView( 2300 D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, 2301 const(FLOAT)[4] ColorRGBA, 2302 UINT NumRects, 2303 const(D3D12_RECT)* pRects); 2304 2305 void ClearUnorderedAccessViewUint( 2306 D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, 2307 D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, 2308 ID3D12Resource pResource, 2309 const(UINT)[4] Values, 2310 UINT NumRects, 2311 const(D3D12_RECT)* pRects); 2312 2313 void ClearUnorderedAccessViewFloat( 2314 D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, 2315 D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, 2316 ID3D12Resource pResource, 2317 const(FLOAT)[4] Values, 2318 UINT NumRects, 2319 const(D3D12_RECT)* pRects); 2320 2321 void DiscardResource( 2322 ID3D12Resource pResource, 2323 const(D3D12_DISCARD_REGION)* pRegion); 2324 2325 void BeginQuery( 2326 ID3D12QueryHeap pQueryHeap, 2327 D3D12_QUERY_TYPE Type, 2328 UINT Index); 2329 2330 void EndQuery( 2331 ID3D12QueryHeap pQueryHeap, 2332 D3D12_QUERY_TYPE Type, 2333 UINT Index); 2334 2335 void ResolveQueryData( 2336 ID3D12QueryHeap pQueryHeap, 2337 D3D12_QUERY_TYPE Type, 2338 UINT StartIndex, 2339 UINT NumQueries, 2340 ID3D12Resource pDestinationBuffer, 2341 UINT64 AlignedDestinationBufferOffset); 2342 2343 void SetPredication( 2344 ID3D12Resource pBuffer, 2345 UINT64 AlignedBufferOffset, 2346 D3D12_PREDICATION_OP Operation); 2347 2348 void SetMarker( 2349 UINT Metadata, 2350 const(void)* pData, 2351 UINT Size); 2352 2353 void BeginEvent( 2354 UINT Metadata, 2355 const(void)* pData, 2356 UINT Size); 2357 2358 void EndEvent(); 2359 2360 void ExecuteIndirect( 2361 ID3D12CommandSignature pCommandSignature, 2362 UINT MaxCommandCount, 2363 ID3D12Resource pArgumentBuffer, 2364 UINT64 ArgumentBufferOffset, 2365 ID3D12Resource pCountBuffer, 2366 UINT64 CountBufferOffset); 2367 } 2368 2369 mixin(uuid!(ID3D12CommandQueue, "0ec870a6-5d7e-4c22-8cfc-5baae07616ed")); 2370 extern (C++) interface ID3D12CommandQueue : ID3D12Pageable { 2371 void UpdateTileMappings( 2372 ID3D12Resource pResource, 2373 UINT NumResourceRegions, 2374 const(D3D12_TILED_RESOURCE_COORDINATE)* pResourceRegionStartCoordinates, 2375 const(D3D12_TILE_REGION_SIZE)* pResourceRegionSizes, 2376 ID3D12Heap pHeap, 2377 UINT NumRanges, 2378 const(D3D12_TILE_RANGE_FLAGS)* pRangeFlags, 2379 const(UINT)* pHeapRangeStartOffsets, 2380 const(UINT)* pRangeTileCounts, 2381 D3D12_TILE_MAPPING_FLAGS Flags); 2382 2383 void CopyTileMappings( 2384 ID3D12Resource pDstResource, 2385 const(D3D12_TILED_RESOURCE_COORDINATE)* pDstRegionStartCoordinate, 2386 ID3D12Resource pSrcResource, 2387 const(D3D12_TILED_RESOURCE_COORDINATE)* pSrcRegionStartCoordinate, 2388 const(D3D12_TILE_REGION_SIZE)* pRegionSize, 2389 D3D12_TILE_MAPPING_FLAGS Flags); 2390 2391 void ExecuteCommandLists( 2392 UINT NumCommandLists, 2393 const(ID3D12CommandList)* ppCommandLists); 2394 2395 void SetMarker( 2396 UINT Metadata, 2397 const(void)* pData, 2398 UINT Size); 2399 2400 void BeginEvent( 2401 UINT Metadata, 2402 const(void)* pData, 2403 UINT Size); 2404 2405 void EndEvent(); 2406 2407 HRESULT Signal( 2408 ID3D12Fence pFence, 2409 UINT64 Value); 2410 2411 HRESULT Wait( 2412 ID3D12Fence pFence, 2413 UINT64 Value); 2414 2415 HRESULT GetTimestampFrequency( 2416 UINT64* pFrequency); 2417 2418 HRESULT GetClockCalibration( 2419 UINT64* pGpuTimestamp, 2420 UINT64* pCpuTimestamp); 2421 2422 D3D12_COMMAND_QUEUE_DESC GetDesc(); 2423 } 2424 2425 mixin(uuid!(ID3D12Device, "189819f1-1db6-4b57-be54-1821339b85f7")); 2426 extern (C++) interface ID3D12Device : ID3D12Object { 2427 UINT GetNodeCount(); 2428 2429 HRESULT CreateCommandQueue( 2430 const(D3D12_COMMAND_QUEUE_DESC)* pDesc, 2431 REFIID riid, 2432 ID3D12CommandQueue* ppCommandQueue); 2433 2434 HRESULT CreateCommandAllocator( 2435 D3D12_COMMAND_LIST_TYPE type, 2436 REFIID riid, 2437 ID3D12CommandAllocator* ppCommandAllocator); 2438 2439 HRESULT CreateGraphicsPipelineState( 2440 const(D3D12_GRAPHICS_PIPELINE_STATE_DESC)* pDesc, 2441 REFIID riid, 2442 ID3D12PipelineState* ppPipelineState); 2443 2444 HRESULT CreateComputePipelineState( 2445 const(D3D12_COMPUTE_PIPELINE_STATE_DESC)* pDesc, 2446 REFIID riid, 2447 ID3D12PipelineState* ppPipelineState); 2448 2449 HRESULT CreateCommandList( 2450 UINT nodeMask, 2451 D3D12_COMMAND_LIST_TYPE type, 2452 ID3D12CommandAllocator pCommandAllocator, 2453 ID3D12PipelineState pInitialState, 2454 REFIID riid, 2455 ID3D12CommandList* ppCommandList); 2456 2457 HRESULT CheckFeatureSupport( 2458 D3D12_FEATURE Feature, 2459 void* pFeatureSupportData, 2460 UINT FeatureSupportDataSize); 2461 2462 HRESULT CreateDescriptorHeap( 2463 const(D3D12_DESCRIPTOR_HEAP_DESC)* pDescriptorHeapDesc, 2464 REFIID riid, 2465 ID3D12DescriptorHeap* ppvHeap); 2466 2467 UINT GetDescriptorHandleIncrementSize( 2468 D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); 2469 2470 HRESULT CreateRootSignature( 2471 UINT nodeMask, 2472 const(void)* pBlobWithRootSignature, 2473 SIZE_T blobLengthInBytes, 2474 REFIID riid, 2475 ID3D12RootSignature* ppvRootSignature); 2476 2477 void CreateConstantBufferView( 2478 const(D3D12_CONSTANT_BUFFER_VIEW_DESC)* pDesc, 2479 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2480 2481 void CreateShaderResourceView( 2482 ID3D12Resource pResource, 2483 const(D3D12_SHADER_RESOURCE_VIEW_DESC)* pDesc, 2484 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2485 2486 void CreateUnorderedAccessView( 2487 ID3D12Resource pResource, 2488 ID3D12Resource pCounterResource, 2489 const(D3D12_UNORDERED_ACCESS_VIEW_DESC)* pDesc, 2490 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2491 2492 void CreateRenderTargetView( 2493 ID3D12Resource pResource, 2494 const(D3D12_RENDER_TARGET_VIEW_DESC)* pDesc, 2495 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2496 2497 void CreateDepthStencilView( 2498 ID3D12Resource pResource, 2499 const(D3D12_DEPTH_STENCIL_VIEW_DESC)* pDesc, 2500 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2501 2502 void CreateSampler( 2503 const(D3D12_SAMPLER_DESC)* pDesc, 2504 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2505 2506 void CopyDescriptors( 2507 UINT NumDestDescriptorRanges, 2508 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pDestDescriptorRangeStarts, 2509 const(UINT)* pDestDescriptorRangeSizes, 2510 UINT NumSrcDescriptorRanges, 2511 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pSrcDescriptorRangeStarts, 2512 const(UINT)* pSrcDescriptorRangeSizes, 2513 D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); 2514 2515 void CopyDescriptorsSimple( 2516 UINT NumDescriptors, 2517 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, 2518 D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, 2519 D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); 2520 2521 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo( 2522 UINT visibleMask, 2523 UINT numResourceDescs, 2524 const(D3D12_RESOURCE_DESC)* pResourceDescs); 2525 2526 D3D12_HEAP_PROPERTIES GetCustomHeapProperties( 2527 UINT nodeMask, 2528 D3D12_HEAP_TYPE heapType); 2529 2530 HRESULT CreateCommittedResource( 2531 const(D3D12_HEAP_PROPERTIES)* pHeapProperties, 2532 D3D12_HEAP_FLAGS HeapFlags, 2533 const(D3D12_RESOURCE_DESC)* pResourceDesc, 2534 D3D12_RESOURCE_STATES InitialResourceState, 2535 const(D3D12_CLEAR_VALUE)* pOptimizedClearValue, 2536 REFIID riidResource, 2537 ID3D12Resource* ppvResource); 2538 2539 HRESULT CreateHeap( 2540 const(D3D12_HEAP_DESC)* pDesc, 2541 REFIID riid, 2542 ID3D12Heap* ppvHeap); 2543 2544 HRESULT CreatePlacedResource( 2545 ID3D12Heap pHeap, 2546 UINT64 HeapOffset, 2547 const(D3D12_RESOURCE_DESC)* pDesc, 2548 D3D12_RESOURCE_STATES InitialState, 2549 const(D3D12_CLEAR_VALUE)* pOptimizedClearValue, 2550 REFIID riid, 2551 ID3D12Resource* ppvResource); 2552 2553 HRESULT CreateReservedResource( 2554 const(D3D12_RESOURCE_DESC)* pDesc, 2555 D3D12_RESOURCE_STATES InitialState, 2556 const(D3D12_CLEAR_VALUE)* pOptimizedClearValue, 2557 REFIID riid, 2558 ID3D12Resource* ppvResource); 2559 2560 HRESULT CreateSharedHandle( 2561 ID3D12DeviceChild pObject, 2562 const(SECURITY_ATTRIBUTES)* pAttributes, 2563 DWORD Access, 2564 LPCWSTR Name, 2565 HANDLE* pHandle); 2566 2567 HRESULT OpenSharedHandle( 2568 HANDLE NTHandle, 2569 REFIID riid, 2570 void** ppvObj); 2571 2572 HRESULT OpenSharedHandleByName( 2573 LPCWSTR Name, 2574 DWORD Access, 2575 HANDLE* pNTHandle); 2576 2577 HRESULT MakeResident( 2578 UINT NumObjects, 2579 const(ID3D12Pageable)* ppObjects); 2580 2581 HRESULT Evict( 2582 UINT NumObjects, 2583 const(ID3D12Pageable)* ppObjects); 2584 2585 HRESULT CreateFence( 2586 UINT64 InitialValue, 2587 D3D12_FENCE_FLAGS Flags, 2588 REFIID riid, 2589 ID3D12Fence* ppFence); 2590 2591 HRESULT GetDeviceRemovedReason(); 2592 2593 void GetCopyableFootprints( 2594 const(D3D12_RESOURCE_DESC)* pResourceDesc, 2595 UINT FirstSubresource, 2596 UINT NumSubresources, 2597 UINT64 BaseOffset, 2598 D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts, 2599 UINT* pNumRows, 2600 UINT64* pRowSizeInBytes, 2601 UINT64* pTotalBytes); 2602 2603 HRESULT CreateQueryHeap( 2604 const(D3D12_QUERY_HEAP_DESC)* pDesc, 2605 REFIID riid, 2606 ID3D12QueryHeap* ppvHeap); 2607 2608 HRESULT SetStablePowerState( 2609 BOOL Enable); 2610 2611 HRESULT CreateCommandSignature( 2612 const(D3D12_COMMAND_SIGNATURE_DESC)* pDesc, 2613 ID3D12RootSignature pRootSignature, 2614 REFIID riid, 2615 ID3D12CommandSignature* ppvCommandSignature); 2616 2617 void GetResourceTiling( 2618 ID3D12Resource pTiledResource, 2619 UINT* pNumTilesForEntireResource, 2620 D3D12_PACKED_MIP_INFO* pPackedMipDesc, 2621 D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips, 2622 UINT* pNumSubresourceTilings, 2623 UINT FirstSubresourceTilingToGet, 2624 D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips); 2625 2626 LUID GetAdapterLuid(); 2627 } 2628 2629 struct D3D12_SUBRESOURCE_DATA { 2630 const(void)* pData; 2631 LONG_PTR RowPitch; 2632 LONG_PTR SlicePitch; 2633 } 2634 2635 struct D3D12_MEMCPY_DEST { 2636 void* pData; 2637 SIZE_T RowPitch; 2638 SIZE_T SlicePitch; 2639 } 2640 2641 /////////////////////////////////////////////////////////////////////////// 2642 // D3D12CreateDevice 2643 // ------------------ 2644 // 2645 // pAdapter 2646 // If NULL, D3D12CreateDevice will choose the primary adapter. 2647 // If non-NULL, D3D12CreateDevice will use the provided adapter. 2648 // MinimumFeatureLevel 2649 // The minimum feature level required for successful device creation. 2650 // riid 2651 // The interface IID of the device to be returned. Expected: ID3D12Device. 2652 // ppDevice 2653 // Pointer to returned interface. May be NULL. 2654 // 2655 // Return Values 2656 // Any of those documented for 2657 // CreateDXGIFactory1 2658 // IDXGIFactory::EnumAdapters 2659 // D3D12CreateDevice 2660 // 2661 /////////////////////////////////////////////////////////////////////////// 2662 2663 // TODO: if this crashes make plain function 2664 __gshared PFN_D3D12_CREATE_DEVICE D3D12CreateDevice; 2665 __gshared PFN_D3D12_GET_DEBUG_INTERFACE D3D12GetDebugInterface; 2666 2667 extern (Windows) { 2668 alias PFN_D3D12_CREATE_DEVICE = 2669 HRESULT function(IUnknown pAdapter, 2670 D3D_FEATURE_LEVEL MinimumFeatureLevel, 2671 REFIID riid, // Expected: ID3D12Device 2672 ID3D12Device *ppDevice); 2673 2674 alias PFN_D3D12_GET_DEBUG_INTERFACE = HRESULT function(REFIID riid, 2675 void** ppvDebug); 2676 }