ifndef __REQUIRED_RPCNDR_H_VERSION__
define __REQUIRED_RPCNDR_H_VERSION__ 500
endif
ifndef __REQUIRED_RPCSAL_H_VERSION__
define __REQUIRED_RPCSAL_H_VERSION__ 100
endif

include rpc.inc
include rpcndr.inc

ifndef __RPCNDR_H_VERSION__
.err <this stub requires an updated version of rpcndr.h>
endif

ifndef COM_NO_WINDOWS_H
include windows.inc
include ole2.inc
endif

ifndef __d3d12_h__
define __d3d12_h__

include oaidl.inc
include ocidl.inc
include dxgicommon.inc
include dxgiformat.inc
include d3dcommon.inc

ifndef _D3D12_CONSTANTS
define _D3D12_CONSTANTS
D3D12_16BIT_INDEX_STRIP_CUT_VALUE equ ( 0xffff )
D3D12_32BIT_INDEX_STRIP_CUT_VALUE equ ( 0xffffffff )
D3D12_8BIT_INDEX_STRIP_CUT_VALUE equ ( 0xff )
D3D12_APPEND_ALIGNED_ELEMENT equ ( 0xffffffff )
D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT equ ( 9 )
D3D12_CLIP_OR_CULL_DISTANCE_COUNT equ ( 8 )
D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT equ ( 2 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT equ ( 14 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS equ ( 4 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT equ ( 15 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT equ ( 16 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS equ ( 4 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT equ ( 15 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST equ ( 1 )
D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS equ ( 1 )
D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT equ ( 64 )
D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS equ ( 4 )
D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT equ ( 1 )
D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST equ ( 1 )
D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS equ ( 1 )
D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS equ ( 1 )
D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT equ ( 128 )
D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST equ ( 1 )
D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS equ ( 1 )
D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT equ ( 128 )
D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS equ ( 1 )
D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT equ ( 16 )
D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST equ ( 1 )
D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS equ ( 1 )
D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT equ ( 16 )
D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT equ ( 32 )
D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS equ ( 4 )
D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_COMMONSHADER_TEMP_REGISTER_COUNT equ ( 4096 )
D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST equ ( 3 )
D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS equ ( 3 )
D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX equ ( 10 )
D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN equ ( -10 )
D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE equ ( -8 )
D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE equ ( 7 )
D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT equ ( 256 )
D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 256 )
D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP equ ( 64 )
D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 240 )
D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP equ ( 68 )
D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 224 )
D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP equ ( 72 )
D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 208 )
D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP equ ( 76 )
D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 192 )
D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP equ ( 84 )
D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 176 )
D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP equ ( 92 )
D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 160 )
D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP equ ( 100 )
D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 144 )
D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP equ ( 112 )
D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 128 )
D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP equ ( 128 )
D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 112 )
D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP equ ( 144 )
D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 96 )
D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP equ ( 168 )
D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 80 )
D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP equ ( 204 )
D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 64 )
D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP equ ( 256 )
D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 48 )
D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP equ ( 340 )
D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 32 )
D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP equ ( 512 )
D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD equ ( 16 )
D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP equ ( 768 )
D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION equ ( 1 )
D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT equ ( 256 )
D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP equ ( 768 )
D3D12_CS_4_X_THREAD_GROUP_MAX_X equ ( 768 )
D3D12_CS_4_X_THREAD_GROUP_MAX_Y equ ( 768 )
D3D12_CS_4_X_UAV_REGISTER_COUNT equ ( 1 )
D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION equ ( 65535 )
D3D12_CS_TGSM_REGISTER_COUNT equ ( 8192 )
D3D12_CS_TGSM_REGISTER_READS_PER_INST equ ( 1 )
D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS equ ( 1 )
D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS equ ( 1 )
D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS equ ( 3 )
D3D12_CS_THREADGROUPID_REGISTER_COUNT equ ( 1 )
D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS equ ( 1 )
D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT equ ( 1 )
D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS equ ( 3 )
D3D12_CS_THREADIDINGROUP_REGISTER_COUNT equ ( 1 )
D3D12_CS_THREADID_REGISTER_COMPONENTS equ ( 3 )
D3D12_CS_THREADID_REGISTER_COUNT equ ( 1 )
D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP equ ( 1024 )
D3D12_CS_THREAD_GROUP_MAX_X equ ( 1024 )
D3D12_CS_THREAD_GROUP_MAX_Y equ ( 1024 )
D3D12_CS_THREAD_GROUP_MAX_Z equ ( 64 )
D3D12_CS_THREAD_GROUP_MIN_X equ ( 1 )
D3D12_CS_THREAD_GROUP_MIN_Y equ ( 1 )
D3D12_CS_THREAD_GROUP_MIN_Z equ ( 1 )
D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL equ ( 16384 )

D3D12_DEFAULT_BLEND_FACTOR_ALPHA equ ( 1.0 )
D3D12_DEFAULT_BLEND_FACTOR_BLUE equ ( 1.0 )
D3D12_DEFAULT_BLEND_FACTOR_GREEN equ ( 1.0 )
D3D12_DEFAULT_BLEND_FACTOR_RED equ ( 1.0 )
D3D12_DEFAULT_BORDER_COLOR_COMPONENT equ ( 0.0 )
D3D12_DEFAULT_DEPTH_BIAS equ ( 0 )

D3D12_DEFAULT_DEPTH_BIAS_CLAMP equ ( 0.0 )
D3D12_DEFAULT_MAX_ANISOTROPY equ ( 16 )

D3D12_DEFAULT_MIP_LOD_BIAS equ ( 0.0 )
D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT equ ( 4194304 )

D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX equ ( 0 )
D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT equ ( 65536 )
D3D12_DEFAULT_SAMPLE_MASK equ ( 0xffffffff )
D3D12_DEFAULT_SCISSOR_ENDX equ ( 0 )
D3D12_DEFAULT_SCISSOR_ENDY equ ( 0 )
D3D12_DEFAULT_SCISSOR_STARTX equ ( 0 )
D3D12_DEFAULT_SCISSOR_STARTY equ ( 0 )
D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS equ ( 0.0 )
D3D12_DEFAULT_STENCIL_READ_MASK equ ( 0xff )
D3D12_DEFAULT_STENCIL_REFERENCE equ ( 0 )
D3D12_DEFAULT_STENCIL_WRITE_MASK equ ( 0xff )
D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX equ ( 0 )
D3D12_DEFAULT_VIEWPORT_HEIGHT equ ( 0 )
D3D12_DEFAULT_VIEWPORT_MAX_DEPTH equ ( 0.0 )
D3D12_DEFAULT_VIEWPORT_MIN_DEPTH equ ( 0.0 )
D3D12_DEFAULT_VIEWPORT_TOPLEFTX equ ( 0 )
D3D12_DEFAULT_VIEWPORT_TOPLEFTY equ ( 0 )
D3D12_DEFAULT_VIEWPORT_WIDTH equ ( 0 )
D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND equ ( 0xffffffff )
D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END equ ( 0xfffffff7 )
D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START equ ( 0xfffffff0 )
D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS equ ( 3968 )
D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS equ ( 4 )
D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT equ ( 32 )
D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS equ ( 1 )
D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS equ ( 3 )
D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT equ ( 1 )
D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS equ ( 1 )
D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS equ ( 4 )
D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT equ ( 32 )
D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS equ ( 1 )
D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS equ ( 1 )
D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT equ ( 1 )
D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST equ ( 2 )
D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS equ ( 1 )
D3D12_DS_OUTPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_DS_OUTPUT_REGISTER_COUNT equ ( 32 )
D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP equ ( 0.6 )
D3D12_FLOAT32_MAX	equ ( 3.402823466e+38 )
D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP equ ( 0.6 )
D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR equ ( 2.4 )
D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR equ ( 1.0 )
D3D12_FLOAT_TO_SRGB_OFFSET equ ( 0.055 )
D3D12_FLOAT_TO_SRGB_SCALE_1 equ ( 12.92 )
D3D12_FLOAT_TO_SRGB_SCALE_2 equ ( 1.055 )
D3D12_FLOAT_TO_SRGB_THRESHOLD equ ( 0.0031308 )
D3D12_FTOI_INSTRUCTION_MAX_INPUT equ ( 2147483647.999 )
D3D12_FTOI_INSTRUCTION_MIN_INPUT equ ( -2147483648.999 )
D3D12_FTOU_INSTRUCTION_MAX_INPUT equ ( 4294967295.999 )
D3D12_FTOU_INSTRUCTION_MIN_INPUT equ ( 0.0 )
D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST equ ( 2 )

D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS equ ( 1 )
D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS equ ( 1 )
D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT equ ( 1 )
D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS equ ( 1 )
D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT equ ( 1 )
D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST equ ( 2 )
D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS equ ( 1 )
D3D12_GS_INPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_GS_INPUT_REGISTER_COUNT equ ( 32 )
D3D12_GS_INPUT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_GS_INPUT_REGISTER_READ_PORTS equ ( 1 )
D3D12_GS_INPUT_REGISTER_VERTICES equ ( 32 )
D3D12_GS_MAX_INSTANCE_COUNT equ ( 32 )
D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES equ ( 1024 )
D3D12_GS_OUTPUT_ELEMENTS equ ( 32 )
D3D12_GS_OUTPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_GS_OUTPUT_REGISTER_COUNT equ ( 32 )
D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT equ ( 32 )
D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT equ ( 32 )
D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS equ ( 4 )
D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS equ ( 1 )
D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND equ ( 0xffffffff )
D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS equ ( 1 )
D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT equ ( 1 )
D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST equ ( 2 )
D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS equ ( 1 )
D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS equ ( 1 )
D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT equ ( 1 )
D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST equ ( 2 )
D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS equ ( 1 )
D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS equ ( 1 )
D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT equ ( 1 )
D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST equ ( 2 )
D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS equ ( 1 )
D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND equ ( 0xffffffff )

D3D12_HS_MAXTESSFACTOR_LOWER_BOUND equ ( 1.0 )
D3D12_HS_MAXTESSFACTOR_UPPER_BOUND equ ( 64.0 )
D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS equ ( 3968 )
D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS equ ( 1 )
D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT equ ( 1 )
D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST equ ( 2 )
D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS equ ( 1 )
D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS equ ( 4 )
D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT equ ( 32 )
D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS equ ( 1 )
D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS equ ( 128 )
D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES equ ( 0 )
D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY equ ( 0 )
D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES equ ( 0 )
D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT equ ( 1 )
D3D12_IA_INSTANCE_ID_BIT_COUNT equ ( 32 )
D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT equ ( 32 )
D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT equ ( 32 )
D3D12_IA_PRIMITIVE_ID_BIT_COUNT equ ( 32 )
D3D12_IA_VERTEX_ID_BIT_COUNT equ ( 32 )
D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT equ ( 32 )
D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS equ ( 128 )
D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT equ ( 32 )
D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT equ ( 0xffffffff )
D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER equ ( 0xffffffff )
D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL equ ( 0xffffffff )
D3D12_KEEP_UNORDERED_ACCESS_VIEWS equ ( 0xffffffff )

D3D12_LINEAR_GAMMA	equ ( 1.0 )
D3D12_MAJOR_VERSION	equ ( 12 )

D3D12_MAX_BORDER_COLOR_COMPONENT equ ( 1.0 )
D3D12_MAX_DEPTH		equ ( 1.0 )
D3D12_MAX_LIVE_STATIC_SAMPLERS equ ( 2032 )
D3D12_MAX_MAXANISOTROPY equ ( 16 )
D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT equ ( 32 )
D3D12_MAX_POSITION_VALUE equ ( 3.402823466e+34 )
D3D12_MAX_ROOT_COST	equ ( 64 )

D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 equ ( 1000000 )
D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 equ ( 1000000 )
D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE equ ( 2048 )
D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP equ ( 17 )
D3D12_MAX_VIEW_INSTANCE_COUNT equ ( 4 )
D3D12_MINOR_VERSION	equ ( 0 )
D3D12_MIN_BORDER_COLOR_COMPONENT equ ( 0.0 )
D3D12_MIN_DEPTH		equ ( 0.0 )
D3D12_MIN_MAXANISOTROPY equ ( 0 )

D3D12_MIP_LOD_BIAS_MAX	equ ( 15.99 )
D3D12_MIP_LOD_BIAS_MIN	equ ( -16.0 )
D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT equ ( 8 )

D3D12_MIP_LOD_RANGE_BIT_COUNT equ ( 8 )
D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH equ ( 1.4 )
D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT equ ( 0 )
D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END equ ( 0xffffffff )
D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START equ ( 0xfffffff8 )
D3D12_PACKED_TILE	equ ( 0xffffffff )
D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT equ ( 15 )
D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT equ ( 16 )
D3D12_PS_CS_UAV_REGISTER_COMPONENTS equ ( 1 )
D3D12_PS_CS_UAV_REGISTER_COUNT equ ( 8 )
D3D12_PS_CS_UAV_REGISTER_READS_PER_INST equ ( 1 )
D3D12_PS_CS_UAV_REGISTER_READ_PORTS equ ( 1 )
D3D12_PS_FRONTFACING_DEFAULT_VALUE equ ( 0xffffffff )
D3D12_PS_FRONTFACING_FALSE_VALUE equ ( 0 )
D3D12_PS_FRONTFACING_TRUE_VALUE equ ( 0xffffffff )
D3D12_PS_INPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_PS_INPUT_REGISTER_COUNT equ ( 32 )
D3D12_PS_INPUT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_PS_INPUT_REGISTER_READ_PORTS equ ( 1 )
D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT equ ( 0.0 )
D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS equ ( 1 )
D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT equ ( 1 )
D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS equ ( 1 )
D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_PS_OUTPUT_MASK_REGISTER_COUNT equ ( 1 )
D3D12_PS_OUTPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_PS_OUTPUT_REGISTER_COUNT equ ( 8 )
D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT equ ( 0.5 )
D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT equ ( 16 )
D3D12_RAYTRACING_AABB_BYTE_ALIGNMENT equ ( 8 )
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT equ ( 256 )
D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT equ ( 16 )
D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES equ ( 32 )
D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH equ ( 31 )
D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE equ ( 16777216 )
D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE equ ( 16777216 )
D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE equ ( 536870912 )
D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS equ ( 1073741824 )
D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE equ ( 4096 )
D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT equ ( 32 )
D3D12_RAYTRACING_SHADER_TABLE_BYTE_ALIGNMENT equ ( 64 )
D3D12_RAYTRACING_TRANSFORM3X4_BYTE_ALIGNMENT equ ( 16 )
D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE equ ( 4096 )
D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP equ ( 27 )
D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT equ ( 4096 )
D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE equ ( 4096 )
D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP equ ( 32 )
D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP equ ( 32 )
D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION equ ( 16384 )
D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT equ ( 1024 )
D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT equ ( 4096 )
D3D12_REQ_MAXANISOTROPY equ ( 16 )
D3D12_REQ_MIP_LEVELS	equ ( 15 )
D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES equ ( 2048 )
D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE equ ( 4096 )
D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH equ ( 16384 )
D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM equ ( 128 )
D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM equ ( 0.25 )
D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM equ ( 2048 )
D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP equ ( 20 )
D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE equ ( 4096 )
D3D12_REQ_SUBRESOURCES	equ ( 30720 )
D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION equ ( 2048 )
D3D12_REQ_TEXTURE1D_U_DIMENSION equ ( 16384 )
D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION equ ( 2048 )
D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION equ ( 16384 )
D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION equ ( 2048 )
D3D12_REQ_TEXTURECUBE_DIMENSION equ ( 16384 )
D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL equ ( 0 )
D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES equ ( 0xffffffff )
D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT equ ( 2 )
D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES equ ( 32 )
D3D12_SHADER_MAJOR_VERSION equ ( 5 )
D3D12_SHADER_MAX_INSTANCES equ ( 65535 )
D3D12_SHADER_MAX_INTERFACES equ ( 253 )
D3D12_SHADER_MAX_INTERFACE_CALL_SITES equ ( 4096 )
D3D12_SHADER_MAX_TYPES	equ ( 65535 )
D3D12_SHADER_MINOR_VERSION equ ( 1 )
D3D12_SHIFT_INSTRUCTION_PAD_VALUE equ ( 0 )
D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT equ ( 5 )
D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT equ ( 8 )
D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT equ ( 65536 )
D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT equ ( 4096 )
D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES equ ( 2048 )
D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES equ ( 512 )
D3D12_SO_BUFFER_SLOT_COUNT equ ( 4 )
D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP equ ( 0xffffffff )
D3D12_SO_NO_RASTERIZED_STREAM equ ( 0xffffffff )
D3D12_SO_OUTPUT_COMPONENT_COUNT equ ( 128 )
D3D12_SO_STREAM_COUNT	equ ( 4 )
D3D12_SPEC_DATE_DAY	equ ( 14 )
D3D12_SPEC_DATE_MONTH	equ ( 11 )
D3D12_SPEC_DATE_YEAR	equ ( 2014 )

D3D12_SPEC_VERSION	equ ( 1.16 )
D3D12_SRGB_GAMMA	equ ( 2.2 )
D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 equ ( 12.92 )
D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 equ ( 1.055 )
D3D12_SRGB_TO_FLOAT_EXPONENT equ ( 2.4 )
D3D12_SRGB_TO_FLOAT_OFFSET equ ( 0.055 )
D3D12_SRGB_TO_FLOAT_THRESHOLD equ ( 0.04045 )
D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP equ ( 0.5 )
D3D12_STANDARD_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED equ ( 64 )
D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE equ ( 4 )
D3D12_STANDARD_PIXEL_COMPONENT_COUNT equ ( 128 )
D3D12_STANDARD_PIXEL_ELEMENT_COUNT equ ( 32 )
D3D12_STANDARD_VECTOR_SIZE equ ( 4 )
D3D12_STANDARD_VERTEX_ELEMENT_COUNT equ ( 32 )
D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT equ ( 64 )
D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT equ ( 8 )
D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT equ ( 8 )
D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END equ ( 0xffffffff )
D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START equ ( 0xfffffff0 )
D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR equ ( 64 )
D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR equ ( 64 )
D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR equ ( 63 )
D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR equ ( 64 )
D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR equ ( 2 )
D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR equ ( 1 )
D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR equ ( 1 )
D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT equ ( 16 )
D3D12_TEXTURE_DATA_PITCH_ALIGNMENT equ ( 256 )
D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT equ ( 512 )
D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES equ ( 65536 )
D3D12_TRACKED_WORKLOAD_MAX_INSTANCES equ ( 32 )
D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT equ ( 4096 )
D3D12_UAV_SLOT_COUNT	equ ( 64 )
D3D12_UNBOUND_MEMORY_ACCESS_RESULT equ ( 0 )
D3D12_VIDEO_DECODE_MAX_ARGUMENTS equ ( 10 )
D3D12_VIDEO_DECODE_MAX_HISTOGRAM_COMPONENTS equ ( 4 )
D3D12_VIDEO_DECODE_MIN_BITSTREAM_OFFSET_ALIGNMENT equ ( 256 )
D3D12_VIDEO_DECODE_MIN_HISTOGRAM_OFFSET_ALIGNMENT equ ( 256 )
D3D12_VIDEO_DECODE_STATUS_MACROBLOCKS_AFFECTED_UNKNOWN equ ( 0xffffffff )
D3D12_VIDEO_PROCESS_MAX_FILTERS equ ( 32 )
D3D12_VIDEO_PROCESS_STEREO_VIEWS equ ( 2 )
D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX equ ( 15 )
D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE equ ( 16 )
D3D12_VIEWPORT_BOUNDS_MAX equ ( 32767 )
D3D12_VIEWPORT_BOUNDS_MIN equ ( -32768 )
D3D12_VS_INPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_VS_INPUT_REGISTER_COUNT equ ( 32 )
D3D12_VS_INPUT_REGISTER_READS_PER_INST equ ( 2 )
D3D12_VS_INPUT_REGISTER_READ_PORTS equ ( 1 )
D3D12_VS_OUTPUT_REGISTER_COMPONENTS equ ( 4 )
D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT equ ( 32 )
D3D12_VS_OUTPUT_REGISTER_COUNT equ ( 32 )
D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT equ ( 10 )
D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP equ ( 25 )
D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP equ ( 25 )

endif

D3D12_GPU_VIRTUAL_ADDRESS typedef UINT64

.enum D3D12_COMMAND_LIST_TYPE {
    D3D12_COMMAND_LIST_TYPE_DIRECT	= 0,
    D3D12_COMMAND_LIST_TYPE_BUNDLE	= 1,
    D3D12_COMMAND_LIST_TYPE_COMPUTE	= 2,
    D3D12_COMMAND_LIST_TYPE_COPY	= 3,
    D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE	= 4,
    D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS	= 5,
    D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE	= 6
    }

.enum D3D12_COMMAND_QUEUE_FLAGS {
    D3D12_COMMAND_QUEUE_FLAG_NONE	= 0,
    D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT	= 0x1
    }

.enum D3D12_COMMAND_QUEUE_PRIORITY {
    D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
    D3D12_COMMAND_QUEUE_PRIORITY_HIGH	= 100,
    D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME	= 10000
    }

D3D12_COMMAND_QUEUE_DESC STRUC
Type			D3D12_COMMAND_LIST_TYPE ?
Priority		int_t ?
Flags			D3D12_COMMAND_QUEUE_FLAGS ?
NodeMask		UINT ?
D3D12_COMMAND_QUEUE_DESC ENDS

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

.enum D3D12_INPUT_CLASSIFICATION {
    D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA	= 0,
    D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA	= 1
    }

D3D12_INPUT_ELEMENT_DESC STRUC
SemanticName		LPCSTR ?
SemanticIndex		UINT ?
Format			DXGI_FORMAT ?
InputSlot		UINT ?
AlignedByteOffset	UINT ?
InputSlotClass		D3D12_INPUT_CLASSIFICATION ?
InstanceDataStepRate	UINT ?
D3D12_INPUT_ELEMENT_DESC ENDS

.enum D3D12_FILL_MODE {
    D3D12_FILL_MODE_WIREFRAME	= 2,
    D3D12_FILL_MODE_SOLID	= 3
    }

D3D12_PRIMITIVE_TOPOLOGY typedef D3D_PRIMITIVE_TOPOLOGY

D3D12_PRIMITIVE		typedef D3D_PRIMITIVE

.enum D3D12_CULL_MODE {
    D3D12_CULL_MODE_NONE	= 1,
    D3D12_CULL_MODE_FRONT	= 2,
    D3D12_CULL_MODE_BACK	= 3
    }

D3D12_SO_DECLARATION_ENTRY STRUC
Stream			UINT ?
SemanticName		LPCSTR ?
SemanticIndex		UINT ?
StartComponent		db ?
ComponentCount		db ?
OutputSlot		db ?
D3D12_SO_DECLARATION_ENTRY ENDS

D3D12_VIEWPORT		STRUC
TopLeftX		FLOAT ?
TopLeftY		FLOAT ?
Width			FLOAT ?
Height			FLOAT ?
MinDepth		FLOAT ?
MaxDepth		FLOAT ?
D3D12_VIEWPORT		ENDS

D3D12_RECT		typedef RECT

D3D12_BOX		STRUC
left			UINT ?
top			UINT ?
front			UINT ?
right			UINT ?
bottom			UINT ?
back			UINT ?
D3D12_BOX		ENDS

.enum D3D12_COMPARISON_FUNC {
    D3D12_COMPARISON_FUNC_NEVER = 1,
    D3D12_COMPARISON_FUNC_LESS	= 2,
    D3D12_COMPARISON_FUNC_EQUAL = 3,
    D3D12_COMPARISON_FUNC_LESS_EQUAL	= 4,
    D3D12_COMPARISON_FUNC_GREATER	= 5,
    D3D12_COMPARISON_FUNC_NOT_EQUAL	= 6,
    D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7,
    D3D12_COMPARISON_FUNC_ALWAYS	= 8
    }

.enum D3D12_DEPTH_WRITE_MASK {
    D3D12_DEPTH_WRITE_MASK_ZERO = 0,
    D3D12_DEPTH_WRITE_MASK_ALL	= 1
    }

.enum D3D12_STENCIL_OP {
    D3D12_STENCIL_OP_KEEP	= 1,
    D3D12_STENCIL_OP_ZERO	= 2,
    D3D12_STENCIL_OP_REPLACE	= 3,
    D3D12_STENCIL_OP_INCR_SAT	= 4,
    D3D12_STENCIL_OP_DECR_SAT	= 5,
    D3D12_STENCIL_OP_INVERT	= 6,
    D3D12_STENCIL_OP_INCR	= 7,
    D3D12_STENCIL_OP_DECR	= 8
    }

D3D12_DEPTH_STENCILOP_DESC STRUC
StencilFailOp		D3D12_STENCIL_OP ?
StencilDepthFailOp	D3D12_STENCIL_OP ?
StencilPassOp		D3D12_STENCIL_OP ?
StencilFunc		D3D12_COMPARISON_FUNC ?
D3D12_DEPTH_STENCILOP_DESC ENDS

D3D12_DEPTH_STENCIL_DESC STRUC
DepthEnable		BOOL ?
DepthWriteMask		D3D12_DEPTH_WRITE_MASK ?
DepthFunc		D3D12_COMPARISON_FUNC ?
StencilEnable		BOOL ?
StencilReadMask		UINT8 ?
StencilWriteMask	UINT8 ?
FrontFace		D3D12_DEPTH_STENCILOP_DESC <>
BackFace		D3D12_DEPTH_STENCILOP_DESC <>
D3D12_DEPTH_STENCIL_DESC ENDS

D3D12_DEPTH_STENCIL_DESC1 STRUC
DepthEnable		BOOL ?
DepthWriteMask		D3D12_DEPTH_WRITE_MASK ?
DepthFunc		D3D12_COMPARISON_FUNC ?
StencilEnable		BOOL ?
StencilReadMask		UINT8 ?
StencilWriteMask	UINT8 ?
FrontFace		D3D12_DEPTH_STENCILOP_DESC <>
BackFace		D3D12_DEPTH_STENCILOP_DESC <>
DepthBoundsTestEnable	BOOL ?
D3D12_DEPTH_STENCIL_DESC1 ENDS

.enum D3D12_BLEND {
    D3D12_BLEND_ZERO	= 1,
    D3D12_BLEND_ONE	= 2,
    D3D12_BLEND_SRC_COLOR	= 3,
    D3D12_BLEND_INV_SRC_COLOR	= 4,
    D3D12_BLEND_SRC_ALPHA	= 5,
    D3D12_BLEND_INV_SRC_ALPHA	= 6,
    D3D12_BLEND_DEST_ALPHA	= 7,
    D3D12_BLEND_INV_DEST_ALPHA	= 8,
    D3D12_BLEND_DEST_COLOR	= 9,
    D3D12_BLEND_INV_DEST_COLOR	= 10,
    D3D12_BLEND_SRC_ALPHA_SAT	= 11,
    D3D12_BLEND_BLEND_FACTOR	= 14,
    D3D12_BLEND_INV_BLEND_FACTOR	= 15,
    D3D12_BLEND_SRC1_COLOR	= 16,
    D3D12_BLEND_INV_SRC1_COLOR	= 17,
    D3D12_BLEND_SRC1_ALPHA	= 18,
    D3D12_BLEND_INV_SRC1_ALPHA	= 19
    }

.enum D3D12_BLEND_OP {
    D3D12_BLEND_OP_ADD	= 1,
    D3D12_BLEND_OP_SUBTRACT	= 2,
    D3D12_BLEND_OP_REV_SUBTRACT = 3,
    D3D12_BLEND_OP_MIN	= 4,
    D3D12_BLEND_OP_MAX	= 5
    }

.enum D3D12_COLOR_WRITE_ENABLE {
    D3D12_COLOR_WRITE_ENABLE_RED	= 1,
    D3D12_COLOR_WRITE_ENABLE_GREEN	= 2,
    D3D12_COLOR_WRITE_ENABLE_BLUE	= 4,
    D3D12_COLOR_WRITE_ENABLE_ALPHA	= 8,
    D3D12_COLOR_WRITE_ENABLE_ALL	= ( ( ( D3D12_COLOR_WRITE_ENABLE_RED or D3D12_COLOR_WRITE_ENABLE_GREEN ) or D3D12_COLOR_WRITE_ENABLE_BLUE ) or D3D12_COLOR_WRITE_ENABLE_ALPHA )
    }

.enum D3D12_LOGIC_OP {
    D3D12_LOGIC_OP_CLEAR	= 0,
    D3D12_LOGIC_OP_SET	= ( D3D12_LOGIC_OP_CLEAR + 1 ) ,
    D3D12_LOGIC_OP_COPY = ( D3D12_LOGIC_OP_SET + 1 ) ,
    D3D12_LOGIC_OP_COPY_INVERTED	= ( D3D12_LOGIC_OP_COPY + 1 ) ,
    D3D12_LOGIC_OP_NOOP = ( D3D12_LOGIC_OP_COPY_INVERTED + 1 ) ,
    D3D12_LOGIC_OP_INVERT	= ( D3D12_LOGIC_OP_NOOP + 1 ) ,
    D3D12_LOGIC_OP_AND	= ( D3D12_LOGIC_OP_INVERT + 1 ) ,
    D3D12_LOGIC_OP_NAND = ( D3D12_LOGIC_OP_AND + 1 ) ,
    D3D12_LOGIC_OP_OR	= ( D3D12_LOGIC_OP_NAND + 1 ) ,
    D3D12_LOGIC_OP_NOR	= ( D3D12_LOGIC_OP_OR + 1 ) ,
    D3D12_LOGIC_OP_XOR	= ( D3D12_LOGIC_OP_NOR + 1 ) ,
    D3D12_LOGIC_OP_EQUIV	= ( D3D12_LOGIC_OP_XOR + 1 ) ,
    D3D12_LOGIC_OP_AND_REVERSE	= ( D3D12_LOGIC_OP_EQUIV + 1 ) ,
    D3D12_LOGIC_OP_AND_INVERTED = ( D3D12_LOGIC_OP_AND_REVERSE + 1 ) ,
    D3D12_LOGIC_OP_OR_REVERSE	= ( D3D12_LOGIC_OP_AND_INVERTED + 1 ) ,
    D3D12_LOGIC_OP_OR_INVERTED	= ( D3D12_LOGIC_OP_OR_REVERSE + 1 )
    }

D3D12_RENDER_TARGET_BLEND_DESC STRUC
BlendEnable		BOOL ?
LogicOpEnable		BOOL ?
SrcBlend		D3D12_BLEND ?
DestBlend		D3D12_BLEND ?
BlendOp			D3D12_BLEND_OP ?
SrcBlendAlpha		D3D12_BLEND ?
DestBlendAlpha		D3D12_BLEND ?
BlendOpAlpha		D3D12_BLEND_OP ?
LogicOp			D3D12_LOGIC_OP ?
RenderTargetWriteMask	UINT8 ?
D3D12_RENDER_TARGET_BLEND_DESC ENDS

D3D12_BLEND_DESC	STRUC
AlphaToCoverageEnable	BOOL ?
IndependentBlendEnable	BOOL ?
RenderTarget		D3D12_RENDER_TARGET_BLEND_DESC 8 dup(<>)
D3D12_BLEND_DESC	ENDS

.enum D3D12_CONSERVATIVE_RASTERIZATION_MODE {
    D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF	= 0,
    D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON	= 1
    }

D3D12_RASTERIZER_DESC	STRUC
FillMode		D3D12_FILL_MODE ?
CullMode		D3D12_CULL_MODE ?
FrontCounterClockwise	BOOL ?
DepthBias		int_t ?
DepthBiasClamp		FLOAT ?
SlopeScaledDepthBias	FLOAT ?
DepthClipEnable		BOOL ?
MultisampleEnable	BOOL ?
AntialiasedLineEnable	BOOL ?
ForcedSampleCount	UINT ?
ConservativeRaster	D3D12_CONSERVATIVE_RASTERIZATION_MODE ?
D3D12_RASTERIZER_DESC	ENDS

ifndef __ID3D12Object_INTERFACE_DEFINED__
define __ID3D12Object_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Object, "c4fec28f-7966-4e95-9f94-f431cb56c3b8")

.comdef ID3D12Object : public IUnknown

    GetPrivateData	proc :REFGUID, :ptr, :ptr
    SetPrivateData	proc :REFGUID, :UINT, :ptr
    SetPrivateDataInterface proc :REFGUID, :ptr
    SetName		proc :LPCWSTR
   .ends

endif


ifndef __ID3D12DeviceChild_INTERFACE_DEFINED__
define __ID3D12DeviceChild_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12DeviceChild, "905db94b-a00c-4140-9df5-2b64ca9ea357")

.comdef ID3D12DeviceChild : public ID3D12Object

    GetDevice		proc :REFIID, :ptr
   .ends

endif

ifndef __ID3D12RootSignature_INTERFACE_DEFINED__
define __ID3D12RootSignature_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12RootSignature, "c54a6b66-72df-4ee8-8be5-a946a1429214")

.comdef ID3D12RootSignature : public ID3D12DeviceChild
   .ends

endif

D3D12_SHADER_BYTECODE	STRUC
pShaderBytecode		PVOID ?
BytecodeLength		SIZE_T ?
D3D12_SHADER_BYTECODE	ENDS

D3D12_STREAM_OUTPUT_DESC STRUC
pSODeclaration		PVOID ? ; D3D12_SO_DECLARATION_ENTRY *
NumEntries		UINT ?
pBufferStrides		LPUINT ?
NumStrides		UINT ?
RasterizedStream	UINT ?
D3D12_STREAM_OUTPUT_DESC ENDS

D3D12_INPUT_LAYOUT_DESC STRUC
pInputElementDescs	PVOID ? ; D3D12_INPUT_ELEMENT_DESC *
NumElements		UINT ?
D3D12_INPUT_LAYOUT_DESC ENDS

.enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE {
    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0,
    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF	= 1,
    D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF	= 2
    }

D3D12_CACHED_PIPELINE_STATE STRUC
pCachedBlob		PVOID ?
CachedBlobSizeInBytes	SIZE_T ?
D3D12_CACHED_PIPELINE_STATE ENDS

.enum D3D12_PIPELINE_STATE_FLAGS {
    D3D12_PIPELINE_STATE_FLAG_NONE	= 0,
    D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG	= 0x1
    }

LPID3D12RootSignature	typedef ptr ID3D12RootSignature
D3D12_GRAPHICS_PIPELINE_STATE_DESC STRUC
pRootSignature		LPID3D12RootSignature ?
VS			D3D12_SHADER_BYTECODE <>
PS			D3D12_SHADER_BYTECODE <>
_DS			D3D12_SHADER_BYTECODE <>
HS			D3D12_SHADER_BYTECODE <>
_GS			D3D12_SHADER_BYTECODE <>
StreamOutput		D3D12_STREAM_OUTPUT_DESC <>
BlendState		D3D12_BLEND_DESC <>
SampleMask		UINT ?
RasterizerState		D3D12_RASTERIZER_DESC <>
DepthStencilState	D3D12_DEPTH_STENCIL_DESC <>
InputLayout		D3D12_INPUT_LAYOUT_DESC <>
IBStripCutValue		D3D12_INDEX_BUFFER_STRIP_CUT_VALUE ?
PrimitiveTopologyType	D3D12_PRIMITIVE_TOPOLOGY_TYPE ?
NumRenderTargets	UINT ?
RTVFormats		DXGI_FORMAT  8	dup(?)
DSVFormat		DXGI_FORMAT ?
SampleDesc		DXGI_SAMPLE_DESC <>
NodeMask		UINT ?
CachedPSO		D3D12_CACHED_PIPELINE_STATE <>
Flags			D3D12_PIPELINE_STATE_FLAGS ?
D3D12_GRAPHICS_PIPELINE_STATE_DESC ENDS

D3D12_COMPUTE_PIPELINE_STATE_DESC STRUC
pRootSignature		LPID3D12RootSignature ?
_CS			D3D12_SHADER_BYTECODE <>
NodeMask		UINT ?
CachedPSO		D3D12_CACHED_PIPELINE_STATE <>
Flags			D3D12_PIPELINE_STATE_FLAGS ?
D3D12_COMPUTE_PIPELINE_STATE_DESC ENDS

D3D12_RT_FORMAT_ARRAY	STRUC
RTFormats		DXGI_FORMAT  8	dup(?)
NumRenderTargets	UINT ?
D3D12_RT_FORMAT_ARRAY	ENDS

D3D12_PIPELINE_STATE_STREAM_DESC STRUC
SizeInBytes		SIZE_T ?
pPipelineStateSubobjectStream PVOID ?
D3D12_PIPELINE_STATE_STREAM_DESC ENDS

.enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE {
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE	= 0,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_HS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_GS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_STREAM_OUTPUT + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_BLEND + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_MASK + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RASTERIZER + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_INPUT_LAYOUT + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_IB_STRIP_CUT_VALUE + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PRIMITIVE_TOPOLOGY + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_RENDER_TARGET_FORMATS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL_FORMAT + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_SAMPLE_DESC + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_NODE_MASK + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_CACHED_PSO + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_FLAGS + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING = ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 + 1 ) ,
    D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID	= ( D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VIEW_INSTANCING + 1 )
    }

.enum D3D12_FEATURE {
    D3D12_FEATURE_D3D12_OPTIONS = 0,
    D3D12_FEATURE_ARCHITECTURE	= 1,
    D3D12_FEATURE_FEATURE_LEVELS	= 2,
    D3D12_FEATURE_FORMAT_SUPPORT	= 3,
    D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS	= 4,
    D3D12_FEATURE_FORMAT_INFO	= 5,
    D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT	= 6,
    D3D12_FEATURE_SHADER_MODEL	= 7,
    D3D12_FEATURE_D3D12_OPTIONS1	= 8,
    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT	= 10,
    D3D12_FEATURE_ROOT_SIGNATURE	= 12,
    D3D12_FEATURE_ARCHITECTURE1 = 16,
    D3D12_FEATURE_D3D12_OPTIONS2	= 18,
    D3D12_FEATURE_SHADER_CACHE	= 19,
    D3D12_FEATURE_COMMAND_QUEUE_PRIORITY	= 20,
    D3D12_FEATURE_D3D12_OPTIONS3	= 21,
    D3D12_FEATURE_EXISTING_HEAPS	= 22,
    D3D12_FEATURE_D3D12_OPTIONS4	= 23,
    D3D12_FEATURE_SERIALIZATION = 24,
    D3D12_FEATURE_CROSS_NODE	= 25,
    D3D12_FEATURE_D3D12_OPTIONS5	= 27,
    D3D12_FEATURE_D3D12_OPTIONS6	= 30,
    D3D12_FEATURE_QUERY_META_COMMAND	= 31
    }

.enum D3D12_SHADER_MIN_PRECISION_SUPPORT {
    D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE	= 0,
    D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT	= 0x1,
    D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT	= 0x2
    }

.enum D3D12_TILED_RESOURCES_TIER {
    D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED	= 0,
    D3D12_TILED_RESOURCES_TIER_1	= 1,
    D3D12_TILED_RESOURCES_TIER_2	= 2,
    D3D12_TILED_RESOURCES_TIER_3	= 3,
    D3D12_TILED_RESOURCES_TIER_4	= 4
    }

.enum D3D12_RESOURCE_BINDING_TIER {
    D3D12_RESOURCE_BINDING_TIER_1	= 1,
    D3D12_RESOURCE_BINDING_TIER_2	= 2,
    D3D12_RESOURCE_BINDING_TIER_3	= 3
    }

.enum D3D12_CONSERVATIVE_RASTERIZATION_TIER {
    D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0,
    D3D12_CONSERVATIVE_RASTERIZATION_TIER_1	= 1,
    D3D12_CONSERVATIVE_RASTERIZATION_TIER_2	= 2,
    D3D12_CONSERVATIVE_RASTERIZATION_TIER_3	= 3
    }

.enum D3D12_FORMAT_SUPPORT1 {
    D3D12_FORMAT_SUPPORT1_NONE	= 0,
    D3D12_FORMAT_SUPPORT1_BUFFER	= 0x1,
    D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER	= 0x2,
    D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER	= 0x4,
    D3D12_FORMAT_SUPPORT1_SO_BUFFER	= 0x8,
    D3D12_FORMAT_SUPPORT1_TEXTURE1D	= 0x10,
    D3D12_FORMAT_SUPPORT1_TEXTURE2D	= 0x20,
    D3D12_FORMAT_SUPPORT1_TEXTURE3D	= 0x40,
    D3D12_FORMAT_SUPPORT1_TEXTURECUBE	= 0x80,
    D3D12_FORMAT_SUPPORT1_SHADER_LOAD	= 0x100,
    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200,
    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON	= 0x400,
    D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT	= 0x800,
    D3D12_FORMAT_SUPPORT1_MIP	= 0x1000,
    D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000,
    D3D12_FORMAT_SUPPORT1_BLENDABLE	= 0x8000,
    D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000,
    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE	= 0x40000,
    D3D12_FORMAT_SUPPORT1_DISPLAY	= 0x80000,
    D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT	= 0x100000,
    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET	= 0x200000,
    D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD	= 0x400000,
    D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000,
    D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST	= 0x1000000,
    D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW	= 0x2000000,
    D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON	= 0x4000000,
    D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT	= 0x8000000,
    D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT	= 0x10000000,
    D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000,
    D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000
    }

.enum D3D12_FORMAT_SUPPORT2 {
    D3D12_FORMAT_SUPPORT2_NONE	= 0,
    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD	= 0x1,
    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS	= 0x2,
    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE	= 0x4,
    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE	= 0x8,
    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX	= 0x10,
    D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX	= 0x20,
    D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD	= 0x40,
    D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE	= 0x80,
    D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP	= 0x100,
    D3D12_FORMAT_SUPPORT2_TILED = 0x200,
    D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY	= 0x4000
    }

.enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS {
    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE	= 0,
    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE	= 0x1
    }

.enum D3D12_CROSS_NODE_SHARING_TIER {
    D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0,
    D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED	= 1,
    D3D12_CROSS_NODE_SHARING_TIER_1	= 2,
    D3D12_CROSS_NODE_SHARING_TIER_2	= 3,
    D3D12_CROSS_NODE_SHARING_TIER_3	= 4
    }

.enum D3D12_RESOURCE_HEAP_TIER {
    D3D12_RESOURCE_HEAP_TIER_1	= 1,
    D3D12_RESOURCE_HEAP_TIER_2	= 2
    }

.enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER {
    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED	= 0,
    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1	= 1,
    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2	= 2
    }

.enum D3D12_VIEW_INSTANCING_TIER {
    D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED	= 0,
    D3D12_VIEW_INSTANCING_TIER_1	= 1,
    D3D12_VIEW_INSTANCING_TIER_2	= 2,
    D3D12_VIEW_INSTANCING_TIER_3	= 3
    }

D3D12_FEATURE_DATA_D3D12_OPTIONS STRUC
DoublePrecisionFloatShaderOps BOOL ?
OutputMergerLogicOp	BOOL ?
MinPrecisionSupport	D3D12_SHADER_MIN_PRECISION_SUPPORT ?
TiledResourcesTier	D3D12_TILED_RESOURCES_TIER ?
ResourceBindingTier	D3D12_RESOURCE_BINDING_TIER ?
PSSpecifiedStencilRefSupported BOOL ?
TypedUAVLoadAdditionalFormats BOOL ?
ROVsSupported		BOOL ?
ConservativeRasterizationTier D3D12_CONSERVATIVE_RASTERIZATION_TIER ?
MaxGPUVirtualAddressBitsPerResource UINT ?
StandardSwizzle64KBSupported BOOL ?
CrossNodeSharingTier D3D12_CROSS_NODE_SHARING_TIER ?
CrossAdapterRowMajorTextureSupported BOOL ?
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation BOOL ?
ResourceHeapTier D3D12_RESOURCE_HEAP_TIER ?
D3D12_FEATURE_DATA_D3D12_OPTIONS ENDS

D3D12_FEATURE_DATA_D3D12_OPTIONS1 STRUC
WaveOps			BOOL ?
WaveLaneCountMin	UINT ?
WaveLaneCountMax	UINT ?
TotalLaneCount		UINT ?
ExpandedComputeResourceStates BOOL ?
Int64ShaderOps		BOOL ?
D3D12_FEATURE_DATA_D3D12_OPTIONS1 ENDS

D3D12_FEATURE_DATA_D3D12_OPTIONS2 STRUC
DepthBoundsTestSupported BOOL ?
ProgrammableSamplePositionsTier D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ?
D3D12_FEATURE_DATA_D3D12_OPTIONS2 ENDS

.enum D3D_ROOT_SIGNATURE_VERSION {
    D3D_ROOT_SIGNATURE_VERSION_1	= 0x1,
    D3D_ROOT_SIGNATURE_VERSION_1_0	= 0x1,
    D3D_ROOT_SIGNATURE_VERSION_1_1	= 0x2
    }

D3D12_FEATURE_DATA_ROOT_SIGNATURE STRUC
HighestVersion D3D_ROOT_SIGNATURE_VERSION ?
D3D12_FEATURE_DATA_ROOT_SIGNATURE ENDS

D3D12_FEATURE_DATA_ARCHITECTURE STRUC
NodeIndex		UINT ?
TileBasedRenderer	BOOL ?
UMA			BOOL ?
CacheCoherentUMA	BOOL ?
D3D12_FEATURE_DATA_ARCHITECTURE ENDS

D3D12_FEATURE_DATA_ARCHITECTURE1 STRUC
NodeIndex		UINT ?
TileBasedRenderer	BOOL ?
UMA			BOOL ?
CacheCoherentUMA	BOOL ?
IsolatedMMU		BOOL ?
D3D12_FEATURE_DATA_ARCHITECTURE1 ENDS

D3D12_FEATURE_DATA_FEATURE_LEVELS STRUC
NumFeatureLevels	UINT ?
pFeatureLevelsRequested PVOID ? ; D3D_FEATURE_LEVEL
MaxSupportedFeatureLevel D3D_FEATURE_LEVEL ?
D3D12_FEATURE_DATA_FEATURE_LEVELS ENDS

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

D3D12_FEATURE_DATA_SHADER_MODEL STRUC
HighestShaderModel D3D_SHADER_MODEL ?
D3D12_FEATURE_DATA_SHADER_MODEL ENDS

D3D12_FEATURE_DATA_FORMAT_SUPPORT STRUC
Format			DXGI_FORMAT ?
Support1		D3D12_FORMAT_SUPPORT1 ?
Support2		D3D12_FORMAT_SUPPORT2 ?
D3D12_FEATURE_DATA_FORMAT_SUPPORT ENDS

D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS STRUC
Format			DXGI_FORMAT ?
SampleCount		UINT ?
Flags			D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS ?
NumQualityLevels	UINT ?
D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS ENDS

D3D12_FEATURE_DATA_FORMAT_INFO STRUC
Format			DXGI_FORMAT ?
PlaneCount		UINT8 ?
D3D12_FEATURE_DATA_FORMAT_INFO ENDS

D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT STRUC
MaxGPUVirtualAddressBitsPerResource UINT ?
MaxGPUVirtualAddressBitsPerProcess UINT ?
D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT ENDS

.enum D3D12_SHADER_CACHE_SUPPORT_FLAGS {
    D3D12_SHADER_CACHE_SUPPORT_NONE	= 0,
    D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO	= 0x1,
    D3D12_SHADER_CACHE_SUPPORT_LIBRARY	= 0x2,
    D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE	= 0x4,
    D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE	= 0x8
    }

D3D12_FEATURE_DATA_SHADER_CACHE STRUC
SupportFlags		D3D12_SHADER_CACHE_SUPPORT_FLAGS ?
D3D12_FEATURE_DATA_SHADER_CACHE ENDS

D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY STRUC
CommandListType		D3D12_COMMAND_LIST_TYPE ?
Priority		UINT ?
PriorityForTypeIsSupported BOOL ?
D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY ENDS

.enum D3D12_COMMAND_LIST_SUPPORT_FLAGS {
    D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE	= 0,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT	= ( 1 shl D3D12_COMMAND_LIST_TYPE_DIRECT ) ,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE	= ( 1 shl D3D12_COMMAND_LIST_TYPE_BUNDLE ) ,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE	= ( 1 shl D3D12_COMMAND_LIST_TYPE_COMPUTE ) ,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY	= ( 1 shl D3D12_COMMAND_LIST_TYPE_COPY ) ,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE	= ( 1 shl D3D12_COMMAND_LIST_TYPE_VIDEO_DECODE ) ,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS	= ( 1 shl D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS ) ,
    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE	= ( 1 shl D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE )
    }

D3D12_FEATURE_DATA_D3D12_OPTIONS3 STRUC
CopyQueueTimestampQueriesSupported BOOL ?
CastingFullyTypedFormatSupported BOOL ?
WriteBufferImmediateSupportFlags D3D12_COMMAND_LIST_SUPPORT_FLAGS ?
ViewInstancingTier	D3D12_VIEW_INSTANCING_TIER ?
BarycentricsSupported	BOOL ?
D3D12_FEATURE_DATA_D3D12_OPTIONS3 ENDS

D3D12_FEATURE_DATA_EXISTING_HEAPS STRUC
Supported		BOOL ?
D3D12_FEATURE_DATA_EXISTING_HEAPS ENDS

.enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER {
    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0	= 0,
    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1	= ( D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 + 1 )
    }

D3D12_FEATURE_DATA_D3D12_OPTIONS4 STRUC
MSAA64KBAlignedTextureSupported BOOL ?
SharedResourceCompatibilityTier D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER ?
Native16BitShaderOpsSupported	BOOL ?
D3D12_FEATURE_DATA_D3D12_OPTIONS4 ENDS

.enum D3D12_HEAP_SERIALIZATION_TIER {
    D3D12_HEAP_SERIALIZATION_TIER_0	= 0,
    D3D12_HEAP_SERIALIZATION_TIER_10	= 10
    }

D3D12_FEATURE_DATA_SERIALIZATION STRUC
NodeIndex		UINT ?
HeapSerializationTier	D3D12_HEAP_SERIALIZATION_TIER ?
D3D12_FEATURE_DATA_SERIALIZATION ENDS

D3D12_FEATURE_DATA_CROSS_NODE STRUC
SharingTier		D3D12_CROSS_NODE_SHARING_TIER ?
AtomicShaderInstructions BOOL ?
D3D12_FEATURE_DATA_CROSS_NODE ENDS

.enum D3D12_RENDER_PASS_TIER {
    D3D12_RENDER_PASS_TIER_0	= 0,
    D3D12_RENDER_PASS_TIER_1	= 1,
    D3D12_RENDER_PASS_TIER_2	= 2
    }

.enum D3D12_RAYTRACING_TIER {
    D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0,
    D3D12_RAYTRACING_TIER_1_0	= 10
    }

D3D12_FEATURE_DATA_D3D12_OPTIONS5 STRUC
SRVOnlyTiledResourceTier3 BOOL ?
RenderPassesTier	D3D12_RENDER_PASS_TIER ?
RaytracingTier		D3D12_RAYTRACING_TIER ?
D3D12_FEATURE_DATA_D3D12_OPTIONS5 ENDS

.enum D3D12_VARIABLE_SHADING_RATE_TIER {
    D3D12_VARIABLE_SHADING_RATE_TIER_NOT_SUPPORTED	= 0,
    D3D12_VARIABLE_SHADING_RATE_TIER_1	= 1,
    D3D12_VARIABLE_SHADING_RATE_TIER_2	= 2
    }

D3D12_FEATURE_DATA_D3D12_OPTIONS6 STRUC
AdditionalShadingRatesSupported BOOL ?
PerPrimitiveShadingRateSupportedWithViewportIndexing BOOL ?
VariableShadingRateTier D3D12_VARIABLE_SHADING_RATE_TIER ?
ShadingRateImageTileSize UINT ?
BackgroundProcessingSupported BOOL ?
D3D12_FEATURE_DATA_D3D12_OPTIONS6 ENDS

D3D12_FEATURE_DATA_QUERY_META_COMMAND STRUC
CommandId		GUID <>
NodeMask		UINT ?
pQueryInputData		PVOID ?
QueryInputDataSizeInBytes SIZE_T ?
pQueryOutputData	PVOID ?
QueryOutputDataSizeInBytes SIZE_T ?
D3D12_FEATURE_DATA_QUERY_META_COMMAND ENDS

D3D12_RESOURCE_ALLOCATION_INFO STRUC
SizeInBytes		UINT64 ?
Alignment		UINT64 ?
D3D12_RESOURCE_ALLOCATION_INFO ENDS

D3D12_RESOURCE_ALLOCATION_INFO1 STRUC
Offs			UINT64 ?
Alignment		UINT64 ?
SizeInBytes		UINT64 ?
D3D12_RESOURCE_ALLOCATION_INFO1 ENDS

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

.enum D3D12_CPU_PAGE_PROPERTY {
    D3D12_CPU_PAGE_PROPERTY_UNKNOWN	= 0,
    D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE	= 1,
    D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE	= 2,
    D3D12_CPU_PAGE_PROPERTY_WRITE_BACK	= 3
    }

.enum D3D12_MEMORY_POOL {
    D3D12_MEMORY_POOL_UNKNOWN	= 0,
    D3D12_MEMORY_POOL_L0	= 1,
    D3D12_MEMORY_POOL_L1	= 2
    }

D3D12_HEAP_PROPERTIES	STRUC
Type			D3D12_HEAP_TYPE ?
CPUPageProperty		D3D12_CPU_PAGE_PROPERTY ?
MemoryPoolPreference	D3D12_MEMORY_POOL ?
CreationNodeMask	UINT ?
VisibleNodeMask		UINT ?
D3D12_HEAP_PROPERTIES	ENDS

.enum D3D12_HEAP_FLAGS {
    D3D12_HEAP_FLAG_NONE	= 0,
    D3D12_HEAP_FLAG_SHARED	= 0x1,
    D3D12_HEAP_FLAG_DENY_BUFFERS	= 0x4,
    D3D12_HEAP_FLAG_ALLOW_DISPLAY	= 0x8,
    D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER	= 0x20,
    D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40,
    D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES	= 0x80,
    D3D12_HEAP_FLAG_HARDWARE_PROTECTED	= 0x100,
    D3D12_HEAP_FLAG_ALLOW_WRITE_WATCH	= 0x200,
    D3D12_HEAP_FLAG_ALLOW_SHADER_ATOMICS	= 0x400,
    D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES	= 0,
    D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS	= 0xc0,
    D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES	= 0x44,
    D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES	= 0x84
    }

D3D12_HEAP_DESC		STRUC
SizeInBytes		UINT64 ?
Properties		D3D12_HEAP_PROPERTIES <>
Alignment		UINT64 ?
Flags			D3D12_HEAP_FLAGS ?
D3D12_HEAP_DESC		ENDS

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

.enum D3D12_TEXTURE_LAYOUT {
    D3D12_TEXTURE_LAYOUT_UNKNOWN	= 0,
    D3D12_TEXTURE_LAYOUT_ROW_MAJOR	= 1,
    D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2,
    D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE	= 3
    }

.enum D3D12_RESOURCE_FLAGS {
    D3D12_RESOURCE_FLAG_NONE	= 0,
    D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET	= 0x1,
    D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL	= 0x2,
    D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS	= 0x4,
    D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE	= 0x8,
    D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER	= 0x10,
    D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS	= 0x20,
    D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY	= 0x40
    }

D3D12_RESOURCE_DESC	STRUC
Dimension		D3D12_RESOURCE_DIMENSION ?
Alignment		UINT64 ?
Width			UINT64 ?
Height			UINT ?
DepthOrArraySize	UINT16 ?
MipLevels		UINT16 ?
Format			DXGI_FORMAT ?
SampleDesc		DXGI_SAMPLE_DESC <>
Layout			D3D12_TEXTURE_LAYOUT ?
Flags			D3D12_RESOURCE_FLAGS ?
D3D12_RESOURCE_DESC	ENDS

D3D12_DEPTH_STENCIL_VALUE STRUC
Depth			FLOAT ?
Stencil			UINT8 ?
D3D12_DEPTH_STENCIL_VALUE ENDS

D3D12_CLEAR_VALUE	STRUC
Format			DXGI_FORMAT ?
UNION
Color			FLOAT 4 dup(?)
DepthStencil		D3D12_DEPTH_STENCIL_VALUE <>
ENDS
D3D12_CLEAR_VALUE	ENDS

D3D12_RANGE		STRUC
Begin			SIZE_T ?
_End			SIZE_T ?
D3D12_RANGE		ENDS

D3D12_RANGE_UINT64	STRUC
Begin			UINT64 ?
_End			UINT64 ?
D3D12_RANGE_UINT64	ENDS

D3D12_SUBRESOURCE_RANGE_UINT64 STRUC
Subresource		UINT ?
Range			D3D12_RANGE_UINT64 <>
D3D12_SUBRESOURCE_RANGE_UINT64 ENDS

D3D12_SUBRESOURCE_INFO	STRUC
Offs			UINT64 ?
RowPitch		UINT ?
DepthPitch		UINT ?
D3D12_SUBRESOURCE_INFO	ENDS

D3D12_TILED_RESOURCE_COORDINATE STRUC
X			UINT ?
Y			UINT ?
Z			UINT ?
Subresource		UINT ?
D3D12_TILED_RESOURCE_COORDINATE ENDS

D3D12_TILE_REGION_SIZE	STRUC
NumTiles		UINT ?
UseBox			BOOL ?
Width			UINT ?
Height			UINT16 ?
Depth			UINT16 ?
D3D12_TILE_REGION_SIZE	ENDS

.enum D3D12_TILE_RANGE_FLAGS {
    D3D12_TILE_RANGE_FLAG_NONE	= 0,
    D3D12_TILE_RANGE_FLAG_NULL	= 1,
    D3D12_TILE_RANGE_FLAG_SKIP	= 2,
    D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE	= 4
    }

D3D12_SUBRESOURCE_TILING STRUC
WidthInTiles		UINT ?
HeightInTiles		UINT16 ?
DepthInTiles		UINT16 ?
StartTileIndexInOverallResource UINT ?
D3D12_SUBRESOURCE_TILING ENDS

D3D12_TILE_SHAPE	STRUC
WidthInTexels		UINT ?
HeightInTexels		UINT ?
DepthInTexels		UINT ?
D3D12_TILE_SHAPE	ENDS

D3D12_PACKED_MIP_INFO	STRUC
NumStandardMips		UINT8 ?
NumPackedMips		UINT8 ?
NumTilesForPackedMips	UINT ?
StartTileIndexInOverallResource UINT ?
D3D12_PACKED_MIP_INFO	ENDS

.enum D3D12_TILE_MAPPING_FLAGS {
    D3D12_TILE_MAPPING_FLAG_NONE	= 0,
    D3D12_TILE_MAPPING_FLAG_NO_HAZARD	= 0x1
    }

.enum D3D12_TILE_COPY_FLAGS {
    D3D12_TILE_COPY_FLAG_NONE	= 0,
    D3D12_TILE_COPY_FLAG_NO_HAZARD	= 0x1,
    D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE	= 0x2,
    D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER	= 0x4
    }

.enum D3D12_RESOURCE_STATES {
    D3D12_RESOURCE_STATE_COMMON = 0,
    D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER	= 0x1,
    D3D12_RESOURCE_STATE_INDEX_BUFFER	= 0x2,
    D3D12_RESOURCE_STATE_RENDER_TARGET	= 0x4,
    D3D12_RESOURCE_STATE_UNORDERED_ACCESS	= 0x8,
    D3D12_RESOURCE_STATE_DEPTH_WRITE	= 0x10,
    D3D12_RESOURCE_STATE_DEPTH_READ	= 0x20,
    D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE	= 0x40,
    D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE	= 0x80,
    D3D12_RESOURCE_STATE_STREAM_OUT	= 0x100,
    D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT	= 0x200,
    D3D12_RESOURCE_STATE_COPY_DEST	= 0x400,
    D3D12_RESOURCE_STATE_COPY_SOURCE	= 0x800,
    D3D12_RESOURCE_STATE_RESOLVE_DEST	= 0x1000,
    D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
    D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE	= 0x400000,
    D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE	= 0x1000000,
    D3D12_RESOURCE_STATE_GENERIC_READ	= ( ( ( ( ( 0x1 or 0x2 ) or 0x40 ) or 0x80 ) or 0x200 ) or 0x800 ) ,
    D3D12_RESOURCE_STATE_PRESENT	= 0,
    D3D12_RESOURCE_STATE_PREDICATION	= 0x200,
    D3D12_RESOURCE_STATE_VIDEO_DECODE_READ	= 0x10000,
    D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE	= 0x20000,
    D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ	= 0x40000,
    D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE	= 0x80000,
    D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ	= 0x200000,
    D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE	= 0x800000
    }

.enum D3D12_RESOURCE_BARRIER_TYPE {
    D3D12_RESOURCE_BARRIER_TYPE_TRANSITION	= 0,
    D3D12_RESOURCE_BARRIER_TYPE_ALIASING	= ( D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1 ) ,
    D3D12_RESOURCE_BARRIER_TYPE_UAV	= ( D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 )
    }


LPID3D12Resource	typedef ptr ID3D12Resource
D3D12_RESOURCE_TRANSITION_BARRIER STRUC
pResource		LPID3D12Resource ?
Subresource		UINT ?
StateBefore		D3D12_RESOURCE_STATES ?
StateAfter		D3D12_RESOURCE_STATES ?
D3D12_RESOURCE_TRANSITION_BARRIER ENDS

D3D12_RESOURCE_ALIASING_BARRIER STRUC
pResourceBefore		LPID3D12Resource ?
pResourceAfter		LPID3D12Resource ?
D3D12_RESOURCE_ALIASING_BARRIER ENDS

D3D12_RESOURCE_UAV_BARRIER STRUC
pResource		LPID3D12Resource ?
D3D12_RESOURCE_UAV_BARRIER ENDS

.enum D3D12_RESOURCE_BARRIER_FLAGS {
    D3D12_RESOURCE_BARRIER_FLAG_NONE	= 0,
    D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY	= 0x1,
    D3D12_RESOURCE_BARRIER_FLAG_END_ONLY	= 0x2
    }

D3D12_RESOURCE_BARRIER	STRUC
Type			D3D12_RESOURCE_BARRIER_TYPE ?
Flags			D3D12_RESOURCE_BARRIER_FLAGS ?
UNION
Transition		D3D12_RESOURCE_TRANSITION_BARRIER <>
Aliasing		D3D12_RESOURCE_ALIASING_BARRIER <>
UAV			D3D12_RESOURCE_UAV_BARRIER <>
ENDS
D3D12_RESOURCE_BARRIER	ENDS

D3D12_SUBRESOURCE_FOOTPRINT STRUC
Format			DXGI_FORMAT ?
Width			UINT ?
Height			UINT ?
Depth			UINT ?
RowPitch		UINT ?
D3D12_SUBRESOURCE_FOOTPRINT ENDS

D3D12_PLACED_SUBRESOURCE_FOOTPRINT STRUC
Offs			UINT64 ?
Footprint		D3D12_SUBRESOURCE_FOOTPRINT <>
D3D12_PLACED_SUBRESOURCE_FOOTPRINT ENDS

.enum D3D12_TEXTURE_COPY_TYPE {
    D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX	= 0,
    D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT	= 1
    }

D3D12_TEXTURE_COPY_LOCATION STRUC
pResource		LPID3D12Resource ?
Type			D3D12_TEXTURE_COPY_TYPE ?
UNION
PlacedFootprint		D3D12_PLACED_SUBRESOURCE_FOOTPRINT <>
SubresourceIndex	UINT ?
ENDS
D3D12_TEXTURE_COPY_LOCATION ENDS

.enum D3D12_RESOLVE_MODE {
    D3D12_RESOLVE_MODE_DECOMPRESS	= 0,
    D3D12_RESOLVE_MODE_MIN	= 1,
    D3D12_RESOLVE_MODE_MAX	= 2,
    D3D12_RESOLVE_MODE_AVERAGE	= 3
    }

D3D12_SAMPLE_POSITION	STRUC
X			INT8 ?
Y			INT8 ?
D3D12_SAMPLE_POSITION	ENDS

D3D12_VIEW_INSTANCE_LOCATION STRUC
ViewportArrayIndex	UINT ?
RenderTargetArrayIndex	UINT ?
D3D12_VIEW_INSTANCE_LOCATION ENDS

.enum D3D12_VIEW_INSTANCING_FLAGS {
    D3D12_VIEW_INSTANCING_FLAG_NONE	= 0,
    D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING	= 0x1
    }

D3D12_VIEW_INSTANCING_DESC STRUC
ViewInstanceCount	UINT ?
pViewInstanceLocations	PVOID ? ; D3D12_VIEW_INSTANCE_LOCATION *
Flags			D3D12_VIEW_INSTANCING_FLAGS ?
D3D12_VIEW_INSTANCING_DESC ENDS

.enum D3D12_SHADER_COMPONENT_MAPPING {
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0	= 0,
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1	= 1,
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2	= 2,
    D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3	= 3,
    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0	= 4,
    D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1	= 5
    }

D3D12_SHADER_COMPONENT_MAPPING_MASK equ 0x7
D3D12_SHADER_COMPONENT_MAPPING_SHIFT equ 3
D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES equ (1 SHL (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*4))

D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING macro Src0,Src1,Src2,Src3
	exitm<((((Src0) and D3D12_SHADER_COMPONENT_MAPPING_MASK) or \
	       (((Src1) and D3D12_SHADER_COMPONENT_MAPPING_MASK) shl D3D12_SHADER_COMPONENT_MAPPING_SHIFT) or \
	       (((Src2) and D3D12_SHADER_COMPONENT_MAPPING_MASK) shl (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*2)) or \
	       (((Src3) and D3D12_SHADER_COMPONENT_MAPPING_MASK) shl (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*3)) or \
		D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES))>
	endm
D3D12_DECODE_SHADER_4_COMPONENT_MAPPING macro ComponentToExtract,Mapping
	exitm<((D3D12_SHADER_COMPONENT_MAPPING)(Mapping SHR (D3D12_SHADER_COMPONENT_MAPPING_SHIFT*ComponentToExtract) AND D3D12_SHADER_COMPONENT_MAPPING_MASK))>
	endm

D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING equ D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3)

.enum D3D12_BUFFER_SRV_FLAGS {
    D3D12_BUFFER_SRV_FLAG_NONE	= 0,
    D3D12_BUFFER_SRV_FLAG_RAW	= 0x1
    }

D3D12_BUFFER_SRV	STRUC
FirstElement		UINT64 ?
NumElements		UINT ?
StructureByteStride	UINT ?
Flags			D3D12_BUFFER_SRV_FLAGS ?
D3D12_BUFFER_SRV	ENDS

D3D12_TEX1D_SRV		STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEX1D_SRV		ENDS

D3D12_TEX1D_ARRAY_SRV	STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEX1D_ARRAY_SRV	ENDS

D3D12_TEX2D_SRV		STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
PlaneSlice		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEX2D_SRV		ENDS

D3D12_TEX2D_ARRAY_SRV	STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
PlaneSlice		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEX2D_ARRAY_SRV	ENDS

D3D12_TEX3D_SRV		STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEX3D_SRV		ENDS

D3D12_TEXCUBE_SRV	STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEXCUBE_SRV	ENDS

D3D12_TEXCUBE_ARRAY_SRV STRUC
MostDetailedMip		UINT ?
MipLevels		UINT ?
First2DArrayFace	UINT ?
NumCubes		UINT ?
ResourceMinLODClamp	FLOAT ?
D3D12_TEXCUBE_ARRAY_SRV ENDS

D3D12_TEX2DMS_SRV	STRUC
UnusedField_NothingToDefine UINT ?
D3D12_TEX2DMS_SRV	ENDS

D3D12_TEX2DMS_ARRAY_SRV STRUC
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX2DMS_ARRAY_SRV ENDS

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV STRUC
Location		D3D12_GPU_VIRTUAL_ADDRESS ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV ENDS

.enum D3D12_SRV_DIMENSION {
    D3D12_SRV_DIMENSION_UNKNOWN = 0,
    D3D12_SRV_DIMENSION_BUFFER	= 1,
    D3D12_SRV_DIMENSION_TEXTURE1D	= 2,
    D3D12_SRV_DIMENSION_TEXTURE1DARRAY	= 3,
    D3D12_SRV_DIMENSION_TEXTURE2D	= 4,
    D3D12_SRV_DIMENSION_TEXTURE2DARRAY	= 5,
    D3D12_SRV_DIMENSION_TEXTURE2DMS	= 6,
    D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY	= 7,
    D3D12_SRV_DIMENSION_TEXTURE3D	= 8,
    D3D12_SRV_DIMENSION_TEXTURECUBE	= 9,
    D3D12_SRV_DIMENSION_TEXTURECUBEARRAY	= 10,
    D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE	= 11
    }

D3D12_SHADER_RESOURCE_VIEW_DESC STRUC
Format			DXGI_FORMAT ?
ViewDimension		D3D12_SRV_DIMENSION ?
Shader4ComponentMapping UINT ?
UNION
Buffer			D3D12_BUFFER_SRV <>
Texture1D		D3D12_TEX1D_SRV <>
Texture1DArray		D3D12_TEX1D_ARRAY_SRV <>
Texture2D		D3D12_TEX2D_SRV <>
Texture2DArray		D3D12_TEX2D_ARRAY_SRV <>
Texture2DMS		D3D12_TEX2DMS_SRV <>
Texture2DMSArray	D3D12_TEX2DMS_ARRAY_SRV <>
Texture3D		D3D12_TEX3D_SRV <>
TextureCube		D3D12_TEXCUBE_SRV <>
TextureCubeArray	D3D12_TEXCUBE_ARRAY_SRV <>
RaytracingAccelerationStructure D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV <>
ENDS
D3D12_SHADER_RESOURCE_VIEW_DESC ENDS

D3D12_CONSTANT_BUFFER_VIEW_DESC STRUC
BufferLocation		D3D12_GPU_VIRTUAL_ADDRESS ?
SizeInBytes		UINT ?
D3D12_CONSTANT_BUFFER_VIEW_DESC ENDS

.enum D3D12_FILTER {
    D3D12_FILTER_MIN_MAG_MIP_POINT	= 0,
    D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR	= 0x1,
    D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4,
    D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR	= 0x5,
    D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT	= 0x10,
    D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x11,
    D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT	= 0x14,
    D3D12_FILTER_MIN_MAG_MIP_LINEAR	= 0x15,
    D3D12_FILTER_ANISOTROPIC	= 0x55,
    D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT	= 0x80,
    D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR	= 0x81,
    D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT	= 0x84,
    D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR	= 0x85,
    D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT	= 0x90,
    D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x91,
    D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT	= 0x94,
    D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR	= 0x95,
    D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5,
    D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT	= 0x100,
    D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR	= 0x101,
    D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104,
    D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR	= 0x105,
    D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT	= 0x110,
    D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x111,
    D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT	= 0x114,
    D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR	= 0x115,
    D3D12_FILTER_MINIMUM_ANISOTROPIC	= 0x155,
    D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT	= 0x180,
    D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR	= 0x181,
    D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184,
    D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR	= 0x185,
    D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT	= 0x190,
    D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR	= 0x191,
    D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT	= 0x194,
    D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR	= 0x195,
    D3D12_FILTER_MAXIMUM_ANISOTROPIC	= 0x1d5
    }

.enum D3D12_FILTER_TYPE {
    D3D12_FILTER_TYPE_POINT	= 0,
    D3D12_FILTER_TYPE_LINEAR	= 1
    }

.enum D3D12_FILTER_REDUCTION_TYPE {
    D3D12_FILTER_REDUCTION_TYPE_STANDARD	= 0,
    D3D12_FILTER_REDUCTION_TYPE_COMPARISON	= 1,
    D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2,
    D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3
    }

D3D12_FILTER_REDUCTION_TYPE_MASK equ ( 0x3 )

D3D12_FILTER_REDUCTION_TYPE_SHIFT equ ( 7 )

D3D12_FILTER_TYPE_MASK	equ ( 0x3 )

D3D12_MIN_FILTER_SHIFT	equ ( 4 )

D3D12_MAG_FILTER_SHIFT	equ ( 2 )

D3D12_MIP_FILTER_SHIFT	equ ( 0 )

D3D12_ANISOTROPIC_FILTERING_BIT equ ( 0x40 )

D3D12_ENCODE_BASIC_FILTER macro min, mag, mip, reduction
exitm<((
(( ( min ) and D3D12_FILTER_TYPE_MASK ) shl D3D12_MIN_FILTER_SHIFT ) or \
(( ( mag ) and D3D12_FILTER_TYPE_MASK ) shl D3D12_MAG_FILTER_SHIFT ) or \
(( ( mip ) and D3D12_FILTER_TYPE_MASK ) shl D3D12_MIP_FILTER_SHIFT ) or \
(( ( reduction ) and D3D12_FILTER_REDUCTION_TYPE_MASK ) shl D3D12_FILTER_REDUCTION_TYPE_SHIFT ) ) )>
	endm

D3D12_ENCODE_ANISOTROPIC_FILTER macro reduction
	exitm<>
	endm
D3D12_DECODE_MIN_FILTER macro D3D12Filter
	exitm<>
	endm
D3D12_DECODE_MAG_FILTER macro D3D12Filter
	exitm<>
	endm
D3D12_DECODE_MIP_FILTER macro D3D12Filter
	exitm<>
	endm
D3D12_DECODE_FILTER_REDUCTION macro D3D12Filter
	exitm<>
	endm
D3D12_DECODE_IS_COMPARISON_FILTER macro D3D12Filter
	exitm<>
	endm
D3D12_DECODE_IS_ANISOTROPIC_FILTER macro D3D12Filter
	exitm<>
	endm

.enum D3D12_TEXTURE_ADDRESS_MODE {
    D3D12_TEXTURE_ADDRESS_MODE_WRAP	= 1,
    D3D12_TEXTURE_ADDRESS_MODE_MIRROR	= 2,
    D3D12_TEXTURE_ADDRESS_MODE_CLAMP	= 3,
    D3D12_TEXTURE_ADDRESS_MODE_BORDER	= 4,
    D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE	= 5
    }

D3D12_SAMPLER_DESC	STRUC
Filter			D3D12_FILTER ?
AddressU		D3D12_TEXTURE_ADDRESS_MODE ?
AddressV		D3D12_TEXTURE_ADDRESS_MODE ?
AddressW		D3D12_TEXTURE_ADDRESS_MODE ?
MipLODBias		FLOAT ?
MaxAnisotropy		UINT ?
ComparisonFunc		D3D12_COMPARISON_FUNC ?
BorderColor		FLOAT  4  dup(?)
MinLOD			FLOAT ?
MaxLOD			FLOAT ?
D3D12_SAMPLER_DESC	ENDS

.enum D3D12_BUFFER_UAV_FLAGS {
    D3D12_BUFFER_UAV_FLAG_NONE	= 0,
    D3D12_BUFFER_UAV_FLAG_RAW	= 0x1
    }

D3D12_BUFFER_UAV	STRUC
FirstElement		UINT64 ?
NumElements		UINT ?
StructureByteStride	UINT ?
CounterOffsetInBytes	UINT64 ?
Flags			D3D12_BUFFER_UAV_FLAGS ?
D3D12_BUFFER_UAV	ENDS

D3D12_TEX1D_UAV		STRUC
MipSlice		UINT ?
D3D12_TEX1D_UAV		ENDS

D3D12_TEX1D_ARRAY_UAV	STRUC
MipSlice		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX1D_ARRAY_UAV	ENDS

D3D12_TEX2D_UAV		STRUC
MipSlice		UINT ?
PlaneSlice		UINT ?
D3D12_TEX2D_UAV		ENDS

D3D12_TEX2D_ARRAY_UAV	STRUC
MipSlice		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
PlaneSlice		UINT ?
D3D12_TEX2D_ARRAY_UAV	ENDS

D3D12_TEX3D_UAV		STRUC
MipSlice		UINT ?
FirstWSlice		UINT ?
WSize			UINT ?
D3D12_TEX3D_UAV		ENDS

.enum D3D12_UAV_DIMENSION {
    D3D12_UAV_DIMENSION_UNKNOWN = 0,
    D3D12_UAV_DIMENSION_BUFFER	= 1,
    D3D12_UAV_DIMENSION_TEXTURE1D	= 2,
    D3D12_UAV_DIMENSION_TEXTURE1DARRAY	= 3,
    D3D12_UAV_DIMENSION_TEXTURE2D	= 4,
    D3D12_UAV_DIMENSION_TEXTURE2DARRAY	= 5,
    D3D12_UAV_DIMENSION_TEXTURE3D	= 8
    }

D3D12_UNORDERED_ACCESS_VIEW_DESC STRUC
Format			DXGI_FORMAT ?
ViewDimension		D3D12_UAV_DIMENSION ?
UNION
Buffer			D3D12_BUFFER_UAV <>
Texture1D		D3D12_TEX1D_UAV <>
Texture1DArray		D3D12_TEX1D_ARRAY_UAV <>
Texture2D		D3D12_TEX2D_UAV <>
Texture2DArray		D3D12_TEX2D_ARRAY_UAV <>
Texture3D		D3D12_TEX3D_UAV <>
ENDS
D3D12_UNORDERED_ACCESS_VIEW_DESC ENDS

D3D12_BUFFER_RTV	STRUC
FirstElement		UINT64 ?
NumElements		UINT ?
D3D12_BUFFER_RTV	ENDS

D3D12_TEX1D_RTV		STRUC
MipSlice		UINT ?
D3D12_TEX1D_RTV		ENDS

D3D12_TEX1D_ARRAY_RTV	STRUC
MipSlice		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX1D_ARRAY_RTV	ENDS

D3D12_TEX2D_RTV		STRUC
MipSlice		UINT ?
PlaneSlice		UINT ?
D3D12_TEX2D_RTV		ENDS

D3D12_TEX2DMS_RTV	STRUC
UnusedField_NothingToDefine UINT ?
D3D12_TEX2DMS_RTV	ENDS

D3D12_TEX2D_ARRAY_RTV	STRUC
MipSlice		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
PlaneSlice		UINT ?
D3D12_TEX2D_ARRAY_RTV	ENDS

D3D12_TEX2DMS_ARRAY_RTV STRUC
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX2DMS_ARRAY_RTV ENDS

D3D12_TEX3D_RTV		STRUC
MipSlice		UINT ?
FirstWSlice		UINT ?
WSize			UINT ?
D3D12_TEX3D_RTV		ENDS

.enum D3D12_RTV_DIMENSION {
    D3D12_RTV_DIMENSION_UNKNOWN = 0,
    D3D12_RTV_DIMENSION_BUFFER	= 1,
    D3D12_RTV_DIMENSION_TEXTURE1D	= 2,
    D3D12_RTV_DIMENSION_TEXTURE1DARRAY	= 3,
    D3D12_RTV_DIMENSION_TEXTURE2D	= 4,
    D3D12_RTV_DIMENSION_TEXTURE2DARRAY	= 5,
    D3D12_RTV_DIMENSION_TEXTURE2DMS	= 6,
    D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY	= 7,
    D3D12_RTV_DIMENSION_TEXTURE3D	= 8
    }

D3D12_RENDER_TARGET_VIEW_DESC STRUC
Format			DXGI_FORMAT ?
ViewDimension		D3D12_RTV_DIMENSION ?
UNION
Buffer			D3D12_BUFFER_RTV <>
Texture1D		D3D12_TEX1D_RTV <>
Texture1DArray		D3D12_TEX1D_ARRAY_RTV <>
Texture2D		D3D12_TEX2D_RTV <>
Texture2DArray		D3D12_TEX2D_ARRAY_RTV <>
Texture2DMS		D3D12_TEX2DMS_RTV <>
Texture2DMSArray	D3D12_TEX2DMS_ARRAY_RTV <>
Texture3D		D3D12_TEX3D_RTV <>
ENDS
D3D12_RENDER_TARGET_VIEW_DESC ENDS

D3D12_TEX1D_DSV		STRUC
MipSlice		UINT ?
D3D12_TEX1D_DSV		ENDS

D3D12_TEX1D_ARRAY_DSV	STRUC
MipSlice		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX1D_ARRAY_DSV	ENDS

D3D12_TEX2D_DSV		STRUC
MipSlice		UINT ?
D3D12_TEX2D_DSV		ENDS

D3D12_TEX2D_ARRAY_DSV	STRUC
MipSlice		UINT ?
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX2D_ARRAY_DSV	ENDS

D3D12_TEX2DMS_DSV	STRUC
UnusedField_NothingToDefine UINT ?
D3D12_TEX2DMS_DSV	ENDS

D3D12_TEX2DMS_ARRAY_DSV STRUC
FirstArraySlice		UINT ?
ArraySize		UINT ?
D3D12_TEX2DMS_ARRAY_DSV ENDS

.enum D3D12_DSV_FLAGS {
    D3D12_DSV_FLAG_NONE = 0,
    D3D12_DSV_FLAG_READ_ONLY_DEPTH	= 0x1,
    D3D12_DSV_FLAG_READ_ONLY_STENCIL	= 0x2
    }

.enum D3D12_DSV_DIMENSION {
    D3D12_DSV_DIMENSION_UNKNOWN = 0,
    D3D12_DSV_DIMENSION_TEXTURE1D	= 1,
    D3D12_DSV_DIMENSION_TEXTURE1DARRAY	= 2,
    D3D12_DSV_DIMENSION_TEXTURE2D	= 3,
    D3D12_DSV_DIMENSION_TEXTURE2DARRAY	= 4,
    D3D12_DSV_DIMENSION_TEXTURE2DMS	= 5,
    D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY	= 6
    }

D3D12_DEPTH_STENCIL_VIEW_DESC STRUC
Format			DXGI_FORMAT ?
ViewDimension		D3D12_DSV_DIMENSION ?
UNION
Flags			D3D12_DSV_FLAGS ?
Texture1D		D3D12_TEX1D_DSV <>
Texture1DArray		D3D12_TEX1D_ARRAY_DSV <>
Texture2D		D3D12_TEX2D_DSV <>
Texture2DArray		D3D12_TEX2D_ARRAY_DSV <>
Texture2DMS		D3D12_TEX2DMS_DSV <>
Texture2DMSArray	D3D12_TEX2DMS_ARRAY_DSV <>
ENDS
D3D12_DEPTH_STENCIL_VIEW_DESC ENDS

.enum D3D12_CLEAR_FLAGS {
    D3D12_CLEAR_FLAG_DEPTH	= 0x1,
    D3D12_CLEAR_FLAG_STENCIL	= 0x2
    }

.enum D3D12_FENCE_FLAGS {
    D3D12_FENCE_FLAG_NONE	= 0,
    D3D12_FENCE_FLAG_SHARED	= 0x1,
    D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER	= 0x2,
    D3D12_FENCE_FLAG_NON_MONITORED	= 0x4
    }

.enum D3D12_DESCRIPTOR_HEAP_TYPE {
    D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV	= 0,
    D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER	= ( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1 ) ,
    D3D12_DESCRIPTOR_HEAP_TYPE_RTV	= ( D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1 ) ,
    D3D12_DESCRIPTOR_HEAP_TYPE_DSV	= ( D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1 ) ,
    D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES	= ( D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 )
    }

.enum D3D12_DESCRIPTOR_HEAP_FLAGS {
    D3D12_DESCRIPTOR_HEAP_FLAG_NONE	= 0,
    D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE	= 0x1
    }

D3D12_DESCRIPTOR_HEAP_DESC STRUC
Type			D3D12_DESCRIPTOR_HEAP_TYPE ?
NumDescriptors		UINT ?
Flags			D3D12_DESCRIPTOR_HEAP_FLAGS ?
NodeMask		UINT ?
D3D12_DESCRIPTOR_HEAP_DESC ENDS

.enum D3D12_DESCRIPTOR_RANGE_TYPE {
    D3D12_DESCRIPTOR_RANGE_TYPE_SRV	= 0,
    D3D12_DESCRIPTOR_RANGE_TYPE_UAV	= ( D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1 ) ,
    D3D12_DESCRIPTOR_RANGE_TYPE_CBV	= ( D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1 ) ,
    D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = ( D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 )
    }

D3D12_DESCRIPTOR_RANGE	STRUC
RangeType		D3D12_DESCRIPTOR_RANGE_TYPE ?
NumDescriptors		UINT ?
BaseShaderRegister	UINT ?
RegisterSpace		UINT ?
OffsetInDescriptorsFromTableStart UINT ?
D3D12_DESCRIPTOR_RANGE	ENDS

D3D12_ROOT_DESCRIPTOR_TABLE STRUC
NumDescriptorRanges	UINT ?
pDescriptorRanges	PVOID ? ; D3D12_DESCRIPTOR_RANGE *
D3D12_ROOT_DESCRIPTOR_TABLE ENDS

D3D12_ROOT_CONSTANTS	STRUC
ShaderRegister		UINT ?
RegisterSpace		UINT ?
Num32BitValues		UINT ?
D3D12_ROOT_CONSTANTS	ENDS

D3D12_ROOT_DESCRIPTOR	STRUC
ShaderRegister		UINT ?
RegisterSpace		UINT ?
D3D12_ROOT_DESCRIPTOR	ENDS

.enum D3D12_SHADER_VISIBILITY {
    D3D12_SHADER_VISIBILITY_ALL = 0,
    D3D12_SHADER_VISIBILITY_VERTEX	= 1,
    D3D12_SHADER_VISIBILITY_HULL	= 2,
    D3D12_SHADER_VISIBILITY_DOMAIN	= 3,
    D3D12_SHADER_VISIBILITY_GEOMETRY	= 4,
    D3D12_SHADER_VISIBILITY_PIXEL	= 5
    }

.enum D3D12_ROOT_PARAMETER_TYPE {
    D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE	= 0,
    D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS	= ( D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1 ) ,
    D3D12_ROOT_PARAMETER_TYPE_CBV	= ( D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1 ) ,
    D3D12_ROOT_PARAMETER_TYPE_SRV	= ( D3D12_ROOT_PARAMETER_TYPE_CBV + 1 ) ,
    D3D12_ROOT_PARAMETER_TYPE_UAV	= ( D3D12_ROOT_PARAMETER_TYPE_SRV + 1 )
    }

D3D12_ROOT_PARAMETER	STRUC
ParameterType		D3D12_ROOT_PARAMETER_TYPE ?
UNION
DescriptorTable		D3D12_ROOT_DESCRIPTOR_TABLE <>
Constants		D3D12_ROOT_CONSTANTS <>
Descriptor		D3D12_ROOT_DESCRIPTOR <>
ENDS
ShaderVisibility	D3D12_SHADER_VISIBILITY ?
D3D12_ROOT_PARAMETER	ENDS

.enum D3D12_ROOT_SIGNATURE_FLAGS {
    D3D12_ROOT_SIGNATURE_FLAG_NONE	= 0,
    D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT	= 0x1,
    D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS	= 0x2,
    D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS	= 0x4,
    D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS	= 0x8,
    D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS	= 0x10,
    D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS	= 0x20,
    D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT	= 0x40,
    D3D12_ROOT_SIGNATURE_FLAG_LOCAL_ROOT_SIGNATURE	= 0x80
    }

.enum D3D12_STATIC_BORDER_COLOR {
    D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0,
    D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK	= ( D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1 ) ,
    D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE	= ( D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 )
    }

D3D12_STATIC_SAMPLER_DESC STRUC
Filter			D3D12_FILTER ?
AddressU		D3D12_TEXTURE_ADDRESS_MODE ?
AddressV		D3D12_TEXTURE_ADDRESS_MODE ?
AddressW		D3D12_TEXTURE_ADDRESS_MODE ?
MipLODBias		FLOAT ?
MaxAnisotropy		UINT ?
ComparisonFunc		D3D12_COMPARISON_FUNC ?
BorderColor		D3D12_STATIC_BORDER_COLOR ?
MinLOD			FLOAT ?
MaxLOD			FLOAT ?
ShaderRegister		UINT ?
RegisterSpace		UINT ?
ShaderVisibility	D3D12_SHADER_VISIBILITY ?
D3D12_STATIC_SAMPLER_DESC ENDS

D3D12_ROOT_SIGNATURE_DESC STRUC
NumParameters		UINT ?
pParameters		PVOID ? ; D3D12_ROOT_PARAMETER *
NumStaticSamplers	UINT ?
pStaticSamplers		PVOID ? ; D3D12_STATIC_SAMPLER_DESC *
Flags			D3D12_ROOT_SIGNATURE_FLAGS ?
D3D12_ROOT_SIGNATURE_DESC ENDS

.enum D3D12_DESCRIPTOR_RANGE_FLAGS {
    D3D12_DESCRIPTOR_RANGE_FLAG_NONE	= 0,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE	= 0x1,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE	= 0x2,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE	= 0x4,
    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC	= 0x8,
    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
    }

D3D12_DESCRIPTOR_RANGE1 STRUC
RangeType		D3D12_DESCRIPTOR_RANGE_TYPE ?
NumDescriptors		UINT ?
BaseShaderRegister	UINT ?
RegisterSpace		UINT ?
Flags			D3D12_DESCRIPTOR_RANGE_FLAGS ?
OffsetInDescriptorsFromTableStart UINT ?
D3D12_DESCRIPTOR_RANGE1 ENDS

D3D12_ROOT_DESCRIPTOR_TABLE1 STRUC
NumDescriptorRanges	UINT ?
pDescriptorRanges	PVOID ? ; D3D12_DESCRIPTOR_RANGE1 *
D3D12_ROOT_DESCRIPTOR_TABLE1 ENDS

.enum D3D12_ROOT_DESCRIPTOR_FLAGS {
    D3D12_ROOT_DESCRIPTOR_FLAG_NONE	= 0,
    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE	= 0x2,
    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC	= 0x8
    }

D3D12_ROOT_DESCRIPTOR1	STRUC
ShaderRegister		UINT ?
RegisterSpace		UINT ?
Flags			D3D12_ROOT_DESCRIPTOR_FLAGS ?
D3D12_ROOT_DESCRIPTOR1	ENDS

D3D12_ROOT_PARAMETER1	STRUC
ParameterType		D3D12_ROOT_PARAMETER_TYPE ?
UNION
DescriptorTable		D3D12_ROOT_DESCRIPTOR_TABLE1 <>
Constants		D3D12_ROOT_CONSTANTS <>
Descriptor		D3D12_ROOT_DESCRIPTOR1 <>
ENDS
ShaderVisibility	D3D12_SHADER_VISIBILITY ?
D3D12_ROOT_PARAMETER1	ENDS

D3D12_ROOT_SIGNATURE_DESC1 STRUC
NumParameters		UINT ?
pParameters		PVOID ? ; D3D12_ROOT_PARAMETER1 *
NumStaticSamplers	UINT ?
pStaticSamplers		PVOID ? ; D3D12_STATIC_SAMPLER_DESC *
Flags			D3D12_ROOT_SIGNATURE_FLAGS ?
D3D12_ROOT_SIGNATURE_DESC1 ENDS

D3D12_VERSIONED_ROOT_SIGNATURE_DESC STRUC
Version			D3D_ROOT_SIGNATURE_VERSION ?
UNION
Desc_1_0		D3D12_ROOT_SIGNATURE_DESC <>
Desc_1_1		D3D12_ROOT_SIGNATURE_DESC1 <>
ENDS
D3D12_VERSIONED_ROOT_SIGNATURE_DESC ENDS


ifndef __ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__
__ID3D12RootSignatureDeserializer_INTERFACE_DEFINED__ equ 1

DEFINE_IIDX(ID3D12RootSignatureDeserializer, "34AB647B-3CC8-46AC-841B-C0965645C046")

.comdef ID3D12RootSignatureDeserializer : public IUnknown

    GetRootSignatureDesc proc
    .ends

endif

ifndef __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__
define __ID3D12VersionedRootSignatureDeserializer_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12VersionedRootSignatureDeserializer, "7F91CE67-090C-4BB7-B78E-ED8FF2E31DA0")

.comdef ID3D12VersionedRootSignatureDeserializer : public IUnknown

    GetRootSignatureDescAtVersion proc :D3D_ROOT_SIGNATURE_VERSION, :ptr
    GetUnconvertedRootSignatureDesc proc
   .ends

endif

CALLBACK(PFN_D3D12_SERIALIZE_ROOT_SIGNATURE, :ptr, :D3D_ROOT_SIGNATURE_VERSION, :ptr, :ptr)
CALLBACK(PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER, :LPCVOID, :SIZE_T, :REFIID, :ptr)
CALLBACK(PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE, :ptr, :ptr, :ptr)
CALLBACK(PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER, :LPCVOID, :SIZE_T, :REFIID, :ptr)

D3D12SerializeRootSignature proto WINAPI :ptr, :D3D_ROOT_SIGNATURE_VERSION, :ptr, :ptr
D3D12CreateRootSignatureDeserializer proto WINAPI :LPCVOID, :SIZE_T,  :REFIID, :ptr
D3D12SerializeVersionedRootSignature proto WINAPI :ptr, :ptr, :ptr
D3D12CreateVersionedRootSignatureDeserializer proto WINAPI :ptr, :SIZE_T, :REFIID, :ptr

D3D12_CPU_DESCRIPTOR_HANDLE STRUC
_ptr			SIZE_T ?
D3D12_CPU_DESCRIPTOR_HANDLE ENDS

D3D12_GPU_DESCRIPTOR_HANDLE STRUC
_ptr			UINT64 ?
D3D12_GPU_DESCRIPTOR_HANDLE ENDS

D3D12_DISCARD_REGION	STRUC
NumRects		UINT ?
pRects			PVOID ? ; D3D12_RECT*
FirstSubresource	UINT ?
NumSubresources		UINT ?
D3D12_DISCARD_REGION	ENDS

.enum D3D12_QUERY_HEAP_TYPE {
    D3D12_QUERY_HEAP_TYPE_OCCLUSION	= 0,
    D3D12_QUERY_HEAP_TYPE_TIMESTAMP	= 1,
    D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS	= 2,
    D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3,
    D3D12_QUERY_HEAP_TYPE_VIDEO_DECODE_STATISTICS	= 4,
    D3D12_QUERY_HEAP_TYPE_COPY_QUEUE_TIMESTAMP	= 5
    }

D3D12_QUERY_HEAP_DESC	STRUC
Type			D3D12_QUERY_HEAP_TYPE ?
Count			UINT ?
NodeMask		UINT ?
D3D12_QUERY_HEAP_DESC	ENDS

.enum D3D12_QUERY_TYPE {
    D3D12_QUERY_TYPE_OCCLUSION	= 0,
    D3D12_QUERY_TYPE_BINARY_OCCLUSION	= 1,
    D3D12_QUERY_TYPE_TIMESTAMP	= 2,
    D3D12_QUERY_TYPE_PIPELINE_STATISTICS	= 3,
    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0	= 4,
    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1	= 5,
    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2	= 6,
    D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3	= 7,
    D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS	= 8
    }

.enum D3D12_PREDICATION_OP {
    D3D12_PREDICATION_OP_EQUAL_ZERO	= 0,
    D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1
    }

D3D12_QUERY_DATA_PIPELINE_STATISTICS STRUC
IAVertices		UINT64 ?
IAPrimitives		UINT64 ?
VSInvocations		UINT64 ?
GSInvocations		UINT64 ?
GSPrimitives		UINT64 ?
CInvocations		UINT64 ?
CPrimitives		UINT64 ?
PSInvocations		UINT64 ?
HSInvocations		UINT64 ?
DSInvocations		UINT64 ?
CSInvocations		UINT64 ?
D3D12_QUERY_DATA_PIPELINE_STATISTICS ENDS

D3D12_QUERY_DATA_SO_STATISTICS STRUC
NumPrimitivesWritten	UINT64 ?
PrimitivesStorageNeeded UINT64 ?
D3D12_QUERY_DATA_SO_STATISTICS ENDS

D3D12_STREAM_OUTPUT_BUFFER_VIEW STRUC
BufferLocation		D3D12_GPU_VIRTUAL_ADDRESS ?
SizeInBytes		UINT64 ?
BufferFilledSizeLocation D3D12_GPU_VIRTUAL_ADDRESS ?
D3D12_STREAM_OUTPUT_BUFFER_VIEW ENDS

D3D12_DRAW_ARGUMENTS	STRUC
VertexCountPerInstance	UINT ?
InstanceCount		UINT ?
StartVertexLocation	UINT ?
StartInstanceLocation	UINT ?
D3D12_DRAW_ARGUMENTS	ENDS

D3D12_DRAW_INDEXED_ARGUMENTS STRUC
IndexCountPerInstance	UINT ?
InstanceCount		UINT ?
StartIndexLocation	UINT ?
BaseVertexLocation	int_t ?
StartInstanceLocation	UINT ?
D3D12_DRAW_INDEXED_ARGUMENTS ENDS

D3D12_DISPATCH_ARGUMENTS STRUC
ThreadGroupCountX	UINT ?
ThreadGroupCountY	UINT ?
ThreadGroupCountZ	UINT ?
D3D12_DISPATCH_ARGUMENTS ENDS

D3D12_VERTEX_BUFFER_VIEW STRUC
BufferLocation		D3D12_GPU_VIRTUAL_ADDRESS ?
SizeInBytes		UINT ?
StrideInBytes		UINT ?
D3D12_VERTEX_BUFFER_VIEW ENDS

D3D12_INDEX_BUFFER_VIEW STRUC
BufferLocation		D3D12_GPU_VIRTUAL_ADDRESS ?
SizeInBytes		UINT ?
Format			DXGI_FORMAT ?
D3D12_INDEX_BUFFER_VIEW ENDS

.enum D3D12_INDIRECT_ARGUMENT_TYPE {
    D3D12_INDIRECT_ARGUMENT_TYPE_DRAW	= 0,
    D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED	= ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH	= ( D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW	= ( D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW	= ( D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT	= ( D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW	= ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW	= ( D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1 ) ,
    D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW	= ( D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 )
    }

D3D12_INDIRECT_ARGUMENT_DESC STRUC
Type			D3D12_INDIRECT_ARGUMENT_TYPE ?
UNION
 STRUC VertexBuffer
  Slot			UINT ?
 ENDS
 STRUC Constant
  RootParameterIndex	 UINT ?
  DestOffsetIn32BitValues UINT ?
  Num32BitValuesToSet	 UINT ?
 ENDS
 STRUC ConstantBufferView
  RootParameterIndex	 UINT ?
 ENDS
 STRUC ShaderResourceView
  RootParameterIndex	 UINT ?
 ENDS
 STRUC UnorderedAccessView
  RootParameterIndex	 UINT ?
 ENDS
ENDS
D3D12_INDIRECT_ARGUMENT_DESC ENDS

D3D12_COMMAND_SIGNATURE_DESC STRUC
ByteStride		UINT ?
NumArgumentDescs	UINT ?
pArgumentDescs		PVOID ? ; D3D12_INDIRECT_ARGUMENT_DESC *
NodeMask		UINT ?
D3D12_COMMAND_SIGNATURE_DESC ENDS


ifndef __ID3D12Pageable_INTERFACE_DEFINED__
define __ID3D12Pageable_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Pageable, "63ee58fb-1268-4835-86da-f008ce62f0d6")

.comdef ID3D12Pageable : public ID3D12DeviceChild
    .ends

endif

ifndef __ID3D12Heap_INTERFACE_DEFINED__
define __ID3D12Heap_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Heap, "6b3b2502-6e51-45b3-90ee-9884265e8df3")

.comdef ID3D12Heap : public ID3D12Pageable

    GetDesc		proc
   .ends

endif

ifndef __ID3D12Resource_INTERFACE_DEFINED__
define __ID3D12Resource_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Resource, "696442be-a72e-4059-bc79-5b5c98040fad")

.comdef ID3D12Resource : public ID3D12Pageable

    Map			proc :UINT, :ptr, :ptr
    Unmap		proc :UINT, :ptr
    GetDesc		proc
    GetGPUVirtualAddress proc
    WriteToSubresource	proc :UINT, :ptr, :ptr, :UINT, :UINT
    ReadFromSubresource proc :ptr, :UINT, :UINT, :UINT, :ptr
    GetHeapProperties	proc :ptr, :ptr
   .ends

endif

ifndef __ID3D12CommandAllocator_INTERFACE_DEFINED__
define __ID3D12CommandAllocator_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12CommandAllocator, "6102dee4-af59-4b09-b999-b44d73f09b24")

.comdef ID3D12CommandAllocator : public ID3D12Pageable

    Reset		proc
   .ends

endif

ifndef __ID3D12Fence_INTERFACE_DEFINED__
__ID3D12Fence_INTERFACE_DEFINED__ equ 1

DEFINE_IIDX(ID3D12Fence, "0a753dcf-c4d8-4b91-adf6-be5a60d95a76")

.comdef ID3D12Fence : public ID3D12Pageable

    GetCompletedValue	proc
    SetEventOnCompletion proc :UINT64, :HANDLE
    Signal		proc :UINT64
   .ends

endif

ifndef __ID3D12Fence1_INTERFACE_DEFINED__
define __ID3D12Fence1_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Fence1, "433685fe-e22b-4ca0-a8db-b5b4f4dd0e4a")

.comdef ID3D12Fence1 : public ID3D12Fence

    GetCreationFlags	proc
   .ends

endif

ifndef __ID3D12PipelineState_INTERFACE_DEFINED__
__ID3D12PipelineState_INTERFACE_DEFINED__ equ 1

DEFINE_IIDX(ID3D12PipelineState, "765a30f3-f624-4c6f-a828-ace948622445")

.comdef ID3D12PipelineState : public ID3D12Pageable

    GetCachedBlob	proc :ptr
    .ends

endif

ifndef __ID3D12DescriptorHeap_INTERFACE_DEFINED__
define __ID3D12DescriptorHeap_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12DescriptorHeap, "8efb471d-616c-4f49-90f7-127bb763fa51")

.comdef ID3D12DescriptorHeap : public ID3D12Pageable

    GetDesc		proc
    GetCPUDescriptorHandleForHeapStart proc
    GetGPUDescriptorHandleForHeapStart proc
   .ends

endif

ifndef __ID3D12QueryHeap_INTERFACE_DEFINED__
define __ID3D12QueryHeap_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12QueryHeap, "0d9658ae-ed45-469e-a61d-970ec583cab4")

.comdef ID3D12QueryHeap : public ID3D12Pageable

    .ends

endif

ifndef __ID3D12CommandSignature_INTERFACE_DEFINED__
define __ID3D12CommandSignature_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12CommandSignature, "c36a797c-ec80-4f0a-8985-a7b2475082d1")

.comdef ID3D12CommandSignature : public ID3D12Pageable

    .ends

endif

ifndef __ID3D12CommandList_INTERFACE_DEFINED__
define __ID3D12CommandList_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12CommandList, "7116d91c-e7e4-47ce-b8c6-ec8168f437e5")

.comdef ID3D12CommandList : public ID3D12DeviceChild

    GetType		proc
   .ends

endif

ifndef __ID3D12GraphicsCommandList_INTERFACE_DEFINED__
define __ID3D12GraphicsCommandList_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12GraphicsCommandList, "5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")

.comdef ID3D12GraphicsCommandList : public ID3D12CommandList

    Close		proc
    Reset		proc :ptr, :ptr
    ClearState		proc :ptr
    DrawInstanced	proc :UINT, :UINT, :UINT, :UINT
    DrawIndexedInstanced proc :UINT, :UINT, :UINT, :int_t, :UINT
    Dispatch		proc :UINT, :UINT, :UINT
    CopyBufferRegion	proc :ptr, :UINT64, :ptr, :UINT64, :UINT64
    CopyTextureRegion	proc :ptr, :UINT, :UINT, :UINT, :ptr, :ptr
    CopyResource	proc :ptr, :ptr
    CopyTiles		proc :ptr, :ptr, :ptr, :ptr, :UINT64, :D3D12_TILE_COPY_FLAGS
    ResolveSubresource	proc :ptr, :UINT, :ptr, :UINT, :DXGI_FORMAT
    IASetPrimitiveTopology proc :D3D12_PRIMITIVE_TOPOLOGY
    RSSetViewports	proc :UINT
    RSSetScissorRects	proc :UINT
    OMSetBlendFactor	proc :ptr
    OMSetStencilRef	proc :UINT
    SetPipelineState	proc :ptr
    ResourceBarrier	proc :UINT, :ptr
    ExecuteBundle	proc :ptr
    SetDescriptorHeaps	proc :UINT, :ptr
    SetComputeRootSignature proc :ptr
    SetGraphicsRootSignature proc :ptr
    SetComputeRootDescriptorTable proc :UINT, :D3D12_GPU_DESCRIPTOR_HANDLE
    SetGraphicsRootDescriptorTable proc :UINT, :D3D12_GPU_DESCRIPTOR_HANDLE
    SetComputeRoot32BitConstant proc :UINT, :UINT, :UINT
    SetGraphicsRoot32BitConstant proc :UINT, :UINT, :UINT
    SetComputeRoot32BitConstants proc :UINT, :UINT
    SetGraphicsRoot32BitConstants proc :UINT, :UINT
    SetComputeRootConstantBufferView proc :UINT, :D3D12_GPU_VIRTUAL_ADDRESS
    SetGraphicsRootConstantBufferView proc :UINT, :D3D12_GPU_VIRTUAL_ADDRESS
    SetComputeRootShaderResourceView proc :UINT, :D3D12_GPU_VIRTUAL_ADDRESS
    SetGraphicsRootShaderResourceView proc :UINT, :D3D12_GPU_VIRTUAL_ADDRESS
    SetComputeRootUnorderedAccessView proc :UINT, :D3D12_GPU_VIRTUAL_ADDRESS
    SetGraphicsRootUnorderedAccessView proc :UINT, :D3D12_GPU_VIRTUAL_ADDRESS
    IASetIndexBuffer	proc :ptr
    IASetVertexBuffers	proc :UINT, :UINT, :ptr
    SOSetTargets	proc :UINT, :UINT, :ptr
    OMSetRenderTargets	proc :UINT, :ptr, :BOOL, :ptr
    ClearDepthStencilView proc :D3D12_CPU_DESCRIPTOR_HANDLE, :D3D12_CLEAR_FLAGS, :FLOAT, :UINT8, :UINT, :ptr
    ClearRenderTargetView proc :D3D12_CPU_DESCRIPTOR_HANDLE, :ptr, :UINT, :ptr
    ClearUnorderedAccessViewUint proc :D3D12_GPU_DESCRIPTOR_HANDLE, :D3D12_CPU_DESCRIPTOR_HANDLE, :ptr, :ptr, :UINT, :ptr
    ClearUnorderedAccessViewFloat proc :D3D12_GPU_DESCRIPTOR_HANDLE, :D3D12_CPU_DESCRIPTOR_HANDLE, :ptr, :ptr, :UINT, :ptr
    DiscardResource	proc :ptr, :ptr
    BeginQuery		proc :ptr, :D3D12_QUERY_TYPE, :UINT
    EndQuery		proc :ptr, :D3D12_QUERY_TYPE, :UINT
    ResolveQueryData	proc :ptr, :D3D12_QUERY_TYPE, :UINT, :UINT, :ptr, :UINT64
    SetPredication	proc :ptr, :UINT64, :D3D12_PREDICATION_OP
    SetMarker		proc :UINT
    BeginEvent		proc :UINT
    EndEvent		proc
    ExecuteIndirect	proc :ptr, :UINT, :ptr, :UINT64, :ptr, :UINT64
   .ends

endif

ifndef __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__
define __ID3D12GraphicsCommandList1_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12GraphicsCommandList1, "553103fb-1fe7-4557-bb38-946d7d0e7ca7")

.comdef ID3D12GraphicsCommandList1 : public ID3D12GraphicsCommandList

    AtomicCopyBufferUINT proc :ptr, :UINT64, :ptr, :UINT64, :UINT, :ptr
    AtomicCopyBufferUINT64 proc :ptr, :UINT64, :ptr, :UINT64, :UINT, :ptr
    OMSetDepthBounds	proc :FLOAT, :FLOAT
    SetSamplePositions	proc :UINT, :UINT, :ptr
    ResolveSubresourceRegion proc :ptr, :UINT, :UINT, :UINT, :ptr, :UINT, :ptr, :DXGI_FORMAT, :D3D12_RESOLVE_MODE
    SetViewInstanceMask proc :UINT
   .ends

endif

D3D12_WRITEBUFFERIMMEDIATE_PARAMETER STRUC
Dest			D3D12_GPU_VIRTUAL_ADDRESS ?
Value			UINT32 ?
D3D12_WRITEBUFFERIMMEDIATE_PARAMETER ENDS

.enum D3D12_WRITEBUFFERIMMEDIATE_MODE {
    D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT	= 0,
    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN	= 0x1,
    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT	= 0x2
    }

ifndef __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__
define __ID3D12GraphicsCommandList2_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12GraphicsCommandList2, "38C3E585-FF17-412C-9150-4FC6F9D72A28")

.comdef ID3D12GraphicsCommandList2 : public ID3D12GraphicsCommandList1

    WriteBufferImmediate proc :UINT, :ptr
   .ends

endif

ifndef __ID3D12CommandQueue_INTERFACE_DEFINED__
define __ID3D12CommandQueue_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12CommandQueue, "0ec870a6-5d7e-4c22-8cfc-5baae07616ed")

.comdef ID3D12CommandQueue : public ID3D12Pageable

    UpdateTileMappings	proc :ptr, :UINT, :ptr, :ptr, :UINT, :ptr
    CopyTileMappings	proc :ptr, :ptr, :ptr, :ptr, :ptr, :D3D12_TILE_MAPPING_FLAGS
    ExecuteCommandLists proc :UINT, :ptr
    SetMarker		proc :UINT
    BeginEvent		proc :UINT
    EndEvent		proc
    Signal		proc :ptr, :UINT64
    _Wait		proc :ptr, :UINT64
    GetTimestampFrequency proc :ptr
    GetClockCalibration proc :ptr, :ptr
    GetDesc		proc
   .ends

endif

ifdef __midl
ifndef LUID_DEFINED
LUID_DEFINED		equ 1
_LUID			STRUC
LowPart			dd ?
HighPart		LONG ?
LUID			ENDS
PLUID			typedef ptr _LUID
endif
endif

ifndef __ID3D12Device_INTERFACE_DEFINED__
define __ID3D12Device_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device, "189819f1-1db6-4b57-be54-1821339b85f7")

.comdef ID3D12Device : public ID3D12Object

    GetNodeCount	proc
    CreateCommandQueue	proc :ptr, :REFIID, :ptr
    CreateCommandAllocator proc :D3D12_COMMAND_LIST_TYPE, :REFIID, :ptr
    CreateGraphicsPipelineState proc :ptr, :REFIID, :ptr
    CreateComputePipelineState proc :ptr, :REFIID, :ptr
    CreateCommandList	proc :UINT, :D3D12_COMMAND_LIST_TYPE, :ptr, :ptr, :REFIID, :ptr
    CheckFeatureSupport proc :D3D12_FEATURE
    CreateDescriptorHeap proc :ptr, :REFIID, :ptr
    GetDescriptorHandleIncrementSize proc :D3D12_DESCRIPTOR_HEAP_TYPE
    CreateRootSignature proc :UINT
    CreateConstantBufferView proc :ptr, :D3D12_CPU_DESCRIPTOR_HANDLE
    CreateShaderResourceView proc :ptr, :ptr, :D3D12_CPU_DESCRIPTOR_HANDLE
    CreateUnorderedAccessView proc :ptr, :ptr, :ptr, :D3D12_CPU_DESCRIPTOR_HANDLE
    CreateRenderTargetView proc :ptr, :ptr, :D3D12_CPU_DESCRIPTOR_HANDLE
    CreateDepthStencilView proc :ptr, :ptr, :D3D12_CPU_DESCRIPTOR_HANDLE
    CreateSampler	proc :ptr, :D3D12_CPU_DESCRIPTOR_HANDLE
    CopyDescriptors	proc :UINT, :ptr, :UINT, :ptr, :D3D12_DESCRIPTOR_HEAP_TYPE
    CopyDescriptorsSimple proc :UINT, :D3D12_CPU_DESCRIPTOR_HANDLE, :D3D12_CPU_DESCRIPTOR_HANDLE, :D3D12_DESCRIPTOR_HEAP_TYPE
    GetResourceAllocationInfo proc :UINT, :UINT, :ptr
    GetCustomHeapProperties proc :UINT, :D3D12_HEAP_TYPE
    CreateCommittedResource proc :ptr, :D3D12_HEAP_FLAGS, :ptr, :D3D12_RESOURCE_STATES, :ptr, :REFIID, :ptr
    CreateHeap		proc :ptr, :REFIID, :ptr
    CreatePlacedResource proc :ptr, :UINT64, :ptr, :D3D12_RESOURCE_STATES, :ptr, :REFIID, :ptr
    CreateReservedResource proc :ptr, :D3D12_RESOURCE_STATES, :ptr, :REFIID, :ptr
    CreateSharedHandle	proc :ptr, :ptr, :DWORD, :LPCWSTR, :ptr
    OpenSharedHandle	proc :HANDLE, :REFIID, :ptr
    OpenSharedHandleByName proc :LPCWSTR, :DWORD, :ptr
    MakeResident	proc :UINT, :ptr
    Evict		proc :UINT, :ptr
    CreateFence		proc :UINT64, :D3D12_FENCE_FLAGS, :REFIID, :ptr
    GetDeviceRemovedReason proc
    GetCopyableFootprints proc :ptr, :UINT, :UINT, :UINT64, :ptr
    CreateQueryHeap	proc :ptr, :REFIID, :ptr
    SetStablePowerState proc :BOOL
    CreateCommandSignature proc :ptr, :ptr, :REFIID, :ptr
    GetResourceTiling	proc :ptr, :ptr, :ptr, :ptr, :ptr, :UINT, :ptr
    GetAdapterLuid	proc
   .ends

endif

ifndef __ID3D12PipelineLibrary_INTERFACE_DEFINED__
define __ID3D12PipelineLibrary_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12PipelineLibrary, "c64226a8-9201-46af-b4cc-53fb9ff7414f")

.comdef ID3D12PipelineLibrary : public ID3D12DeviceChild

    StorePipeline	proc :LPCWSTR, :ptr
    LoadGraphicsPipeline proc :LPCWSTR, :ptr, :REFIID, :ptr
    LoadComputePipeline proc :LPCWSTR, :ptr, :REFIID, :ptr
    GetSerializedSize	proc
    Serialize		proc
   .ends

endif

ifndef __ID3D12PipelineLibrary1_INTERFACE_DEFINED__
define __ID3D12PipelineLibrary1_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12PipelineLibrary1, "80eabf42-2568-4e5e-bd82-c37f86961dc3")

.comdef ID3D12PipelineLibrary1 : public ID3D12PipelineLibrary

    LoadPipeline	proc :LPCWSTR, :ptr, :REFIID, :ptr
   .ends

endif

.enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS {
    D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0,
    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY	= 0x1,
    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL	= 0
    }

.enum D3D12_RESIDENCY_PRIORITY {
    D3D12_RESIDENCY_PRIORITY_MINIMUM	= 0x28000000,
    D3D12_RESIDENCY_PRIORITY_LOW	= 0x50000000,
    D3D12_RESIDENCY_PRIORITY_NORMAL	= 0x78000000,
    D3D12_RESIDENCY_PRIORITY_HIGH	= 0xa0010000,
    D3D12_RESIDENCY_PRIORITY_MAXIMUM	= 0xc8000000
    }

ifndef __ID3D12Device1_INTERFACE_DEFINED__
define __ID3D12Device1_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device1, "77acce80-638e-4e65-8895-c1f23386863e")

.comdef ID3D12Device1 : public ID3D12Device

    CreatePipelineLibrary proc
    SetEventOnMultipleFenceCompletion proc :ptr, :UINT, :D3D12_MULTIPLE_FENCE_WAIT_FLAGS, :HANDLE
    SetResidencyPriority proc :UINT, :ptr
   .ends

endif

ifndef __ID3D12Device2_INTERFACE_DEFINED__
define __ID3D12Device2_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device2, "30baa41e-b15b-475c-a0bb-1af5c5b64328")

.comdef ID3D12Device2 : public ID3D12Device1

    CreatePipelineState proc :ptr, :REFIID, :ptr
    .ends

endif

.enum D3D12_RESIDENCY_FLAGS {
    D3D12_RESIDENCY_FLAG_NONE	= 0,
    D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET	= 0x1
    }

ifndef __ID3D12Device3_INTERFACE_DEFINED__
define __ID3D12Device3_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device3, "81dadc15-2bad-4392-93c5-101345c4aa98")

.comdef ID3D12Device3 : public ID3D12Device2

    OpenExistingHeapFromAddress proc :ptr, :REFIID, :ptr
    OpenExistingHeapFromFileMapping proc :HANDLE, :REFIID, :ptr
    EnqueueMakeResident proc :D3D12_RESIDENCY_FLAGS, :UINT
   .ends

endif



.enum D3D12_COMMAND_LIST_FLAGS {
    D3D12_COMMAND_LIST_FLAG_NONE	= 0
    }

.enum D3D12_COMMAND_POOL_FLAGS {
    D3D12_COMMAND_POOL_FLAG_NONE	= 0
    }

.enum D3D12_COMMAND_RECORDER_FLAGS {
    D3D12_COMMAND_RECORDER_FLAG_NONE	= 0
    }

.enum D3D12_PROTECTED_SESSION_STATUS {
    D3D12_PROTECTED_SESSION_STATUS_OK	= 0,
    D3D12_PROTECTED_SESSION_STATUS_INVALID	= 1
    }

ifndef __ID3D12ProtectedSession_INTERFACE_DEFINED__
define __ID3D12ProtectedSession_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12ProtectedSession, "A1533D18-0AC1-4084-85B9-89A96116806B")

.comdef ID3D12ProtectedSession : public ID3D12DeviceChild

    GetStatusFence	proc :REFIID, :ptr
    GetSessionStatus	proc
   .ends

endif

.enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS {
    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE	= 0,
    D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED	= 0x1
    }

D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT STRUC
NodeIndex		UINT ?
Support			D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS ?
D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT ENDS

.enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS {
    D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE	= 0
    }

D3D12_PROTECTED_RESOURCE_SESSION_DESC STRUC
NodeMask		UINT ?
Flags			D3D12_PROTECTED_RESOURCE_SESSION_FLAGS ?
D3D12_PROTECTED_RESOURCE_SESSION_DESC ENDS

ifndef __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__
define __ID3D12ProtectedResourceSession_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12ProtectedResourceSession, "6CD696F4-F289-40CC-8091-5A6C0A099C3D")

.comdef ID3D12ProtectedResourceSession : public ID3D12ProtectedSession

    GetDesc		proc
   .ends

endif

ifndef __ID3D12Device4_INTERFACE_DEFINED__
define __ID3D12Device4_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device4, "e865df17-a9ee-46f9-a463-3098315aa2e5")

.comdef ID3D12Device4 : public ID3D12Device3

    CreateCommandList1	proc :UINT, :D3D12_COMMAND_LIST_TYPE, :D3D12_COMMAND_LIST_FLAGS, :REFIID, :ptr
    CreateProtectedResourceSession proc :ptr, :REFIID, :ptr
    CreateCommittedResource1 proc :ptr, :D3D12_HEAP_FLAGS, :ptr, :D3D12_RESOURCE_STATES, :ptr, :ptr, :REFIID, :ptr
    CreateHeap1		proc :ptr, :ptr, :REFIID, :ptr
    CreateReservedResource1 proc :ptr, :D3D12_RESOURCE_STATES, :ptr, :ptr, :REFIID, :ptr
    GetResourceAllocationInfo1 proc :UINT, :UINT, :ptr
   .ends

endif

.enum D3D12_LIFETIME_STATE {
    D3D12_LIFETIME_STATE_IN_USE = 0,
    D3D12_LIFETIME_STATE_NOT_IN_USE	= ( D3D12_LIFETIME_STATE_IN_USE + 1 )
    }

ifndef __ID3D12LifetimeOwner_INTERFACE_DEFINED__
define __ID3D12LifetimeOwner_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12LifetimeOwner, "e667af9f-cd56-4f46-83ce-032e595d70a8")

.comdef ID3D12LifetimeOwner : public IUnknown

    LifetimeStateUpdated proc :D3D12_LIFETIME_STATE
   .ends

endif

ifndef __ID3D12SwapChainAssistant_INTERFACE_DEFINED__
define __ID3D12SwapChainAssistant_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12SwapChainAssistant, "f1df64b6-57fd-49cd-8807-c0eb88b45c8f")

.comdef ID3D12SwapChainAssistant : public IUnknown

    GetLUID		proc
    GetSwapChainObject	proc :REFIID, :ptr
    GetCurrentResourceAndCommandQueue proc :REFIID, :ptr, :REFIID, :ptr
    InsertImplicitSync	proc
   .ends

endif

ifndef __ID3D12LifetimeTracker_INTERFACE_DEFINED__
define __ID3D12LifetimeTracker_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12LifetimeTracker, "3fd03d36-4eb1-424a-a582-494ecb8ba813")

.comdef ID3D12LifetimeTracker : public ID3D12DeviceChild

    DestroyOwnedObject	proc :ptr
   .ends

endif

.enum D3D12_META_COMMAND_PARAMETER_TYPE {
    D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT	= 0,
    D3D12_META_COMMAND_PARAMETER_TYPE_UINT64	= 1,
    D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS	= 2,
    D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV	= 3,
    D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV	= 4
    }

.enum D3D12_META_COMMAND_PARAMETER_FLAGS {
    D3D12_META_COMMAND_PARAMETER_FLAG_INPUT	= 0x1,
    D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT	= 0x2
    }

.enum D3D12_META_COMMAND_PARAMETER_STAGE {
    D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0,
    D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION	= 1,
    D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION	= 2
    }

D3D12_META_COMMAND_PARAMETER_DESC STRUC
Name			LPCWSTR ?
Type			D3D12_META_COMMAND_PARAMETER_TYPE ?
Flags			D3D12_META_COMMAND_PARAMETER_FLAGS ?
RequiredResourceState	D3D12_RESOURCE_STATES ?
StructureOffset		UINT ?
D3D12_META_COMMAND_PARAMETER_DESC ENDS

.enum D3D12_GRAPHICS_STATES {
    D3D12_GRAPHICS_STATE_NONE	= 0,
    D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS	= ( 1 shl 0 ) ,
    D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER	= ( 1 shl 1 ) ,
    D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY	= ( 1 shl 2 ) ,
    D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP	= ( 1 shl 3 ) ,
    D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE= ( 1 shl 4 ) ,
    D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = ( 1 shl 5 ) ,
    D3D12_GRAPHICS_STATE_RS_VIEWPORTS		= ( 1 shl 6 ) ,
    D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS	= ( 1 shl 7 ) ,
    D3D12_GRAPHICS_STATE_PREDICATION		= ( 1 shl 8 ) ,
    D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS	= ( 1 shl 9 ) ,
    D3D12_GRAPHICS_STATE_OM_STENCIL_REF		= ( 1 shl 10 ) ,
    D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR	= ( 1 shl 11 ) ,
    D3D12_GRAPHICS_STATE_PIPELINE_STATE		= ( 1 shl 12 ) ,
    D3D12_GRAPHICS_STATE_SO_TARGETS		= ( 1 shl 13 ) ,
    D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS	= ( 1 shl 14 ) ,
    D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS	= ( 1 shl 15 ) ,
    D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK	= ( 1 shl 16 )
    }

D3D12_META_COMMAND_DESC STRUC
Id			GUID <>
Name			LPCWSTR ?
InitializationDirtyState D3D12_GRAPHICS_STATES ?
ExecutionDirtyState	D3D12_GRAPHICS_STATES ?
D3D12_META_COMMAND_DESC ENDS

ifndef __ID3D12StateObject_INTERFACE_DEFINED__
define __ID3D12StateObject_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12StateObject, "47016943-fca8-4594-93ea-af258b55346d")

.comdef ID3D12StateObject : public ID3D12Pageable

    .ends

endif

ifndef __ID3D12StateObjectProperties_INTERFACE_DEFINED__
define __ID3D12StateObjectProperties_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12StateObjectProperties, "de5fa827-9bf9-4f26-89ff-d7f56fde3860")

.comdef ID3D12StateObjectProperties : public IUnknown

    GetShaderIdentifier proc :LPCWSTR
    GetShaderStackSize	proc :LPCWSTR
    GetPipelineStackSize proc
    SetPipelineStackSize proc :UINT64
   .ends

endif

.enum D3D12_STATE_SUBOBJECT_TYPE {
    D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG	= 0,
    D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE	= 1,
    D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE	= 2,
    D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK	= 3,
    D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY	= 5,
    D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION	= 6,
    D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 7,
    D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION	= 8,
    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 9,
    D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG	= 10,
    D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP	= 11,
    D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID	= ( D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP + 1 )
    }

D3D12_STATE_SUBOBJECT	STRUC
Type			D3D12_STATE_SUBOBJECT_TYPE ?
pDesc			LPVOID ?
D3D12_STATE_SUBOBJECT	ENDS

.enum D3D12_STATE_OBJECT_FLAGS {
    D3D12_STATE_OBJECT_FLAG_NONE	= 0,
    D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS	= 0x1,
    D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS	= 0x2
    }

D3D12_STATE_OBJECT_CONFIG STRUC
Flags			D3D12_STATE_OBJECT_FLAGS ?
D3D12_STATE_OBJECT_CONFIG ENDS

D3D12_GLOBAL_ROOT_SIGNATURE STRUC
pGlobalRootSignature	LPID3D12RootSignature ?
D3D12_GLOBAL_ROOT_SIGNATURE ENDS

D3D12_LOCAL_ROOT_SIGNATURE STRUC
pLocalRootSignature	LPID3D12RootSignature ?
D3D12_LOCAL_ROOT_SIGNATURE ENDS

D3D12_NODE_MASK		STRUC
NodeMask		UINT ?
D3D12_NODE_MASK		ENDS

.enum D3D12_EXPORT_FLAGS {
    D3D12_EXPORT_FLAG_NONE	= 0
    }

D3D12_EXPORT_DESC	STRUC
Name			LPCWSTR ?
ExportToRename		LPCWSTR ?
Flags			D3D12_EXPORT_FLAGS ?
D3D12_EXPORT_DESC	ENDS

D3D12_DXIL_LIBRARY_DESC STRUC
DXILLibrary		D3D12_SHADER_BYTECODE <>
NumExports		UINT ?
pExports		PVOID ? ; D3D12_EXPORT_DESC *
D3D12_DXIL_LIBRARY_DESC ENDS

D3D12_EXISTING_COLLECTION_DESC STRUC
pExistingCollection	PVOID ? ; LPID3D12StateObject
NumExports		UINT ?
pExports		PVOID ? ; D3D12_EXPORT_DESC *
D3D12_EXISTING_COLLECTION_DESC ENDS

D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION STRUC
pSubobjectToAssociate	PVOID ? ; LPD3D12_STATE_SUBOBJECT
NumExports		UINT ?
pExports		LPCWSTR ?
D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION ENDS

D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION STRUC
SubobjectToAssociate	LPCWSTR ?
NumExports		UINT ?
pExports		LPCWSTR ?
D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION ENDS

.enum D3D12_HIT_GROUP_TYPE {
    D3D12_HIT_GROUP_TYPE_TRIANGLES	= 0,
    D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE	= 0x1
    }

D3D12_HIT_GROUP_DESC	STRUC
HitGroupExport		LPCWSTR ?
Type			D3D12_HIT_GROUP_TYPE ?
AnyHitShaderImport	LPCWSTR ?
ClosestHitShaderImport	LPCWSTR ?
IntersectionShaderImport LPCWSTR ?
D3D12_HIT_GROUP_DESC	ENDS

D3D12_RAYTRACING_SHADER_CONFIG STRUC
MaxPayloadSizeInBytes	UINT ?
MaxAttributeSizeInBytes UINT ?
D3D12_RAYTRACING_SHADER_CONFIG ENDS

D3D12_RAYTRACING_PIPELINE_CONFIG STRUC
MaxTraceRecursionDepth	UINT ?
D3D12_RAYTRACING_PIPELINE_CONFIG ENDS

.enum D3D12_STATE_OBJECT_TYPE {
    D3D12_STATE_OBJECT_TYPE_COLLECTION	= 0,
    D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3
    }

D3D12_STATE_OBJECT_DESC STRUC
Type			D3D12_STATE_OBJECT_TYPE ?
NumSubobjects		UINT ?
pSubobjects		PVOID ? ; D3D12_STATE_SUBOBJECT *
D3D12_STATE_OBJECT_DESC ENDS

.enum D3D12_RAYTRACING_GEOMETRY_FLAGS {
    D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0,
    D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE	= 0x1,
    D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION	= 0x2
    }

.enum D3D12_RAYTRACING_GEOMETRY_TYPE {
    D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES	= 0,
    D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS	= ( D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES + 1 )
    }

.enum D3D12_RAYTRACING_INSTANCE_FLAGS {
    D3D12_RAYTRACING_INSTANCE_FLAG_NONE = 0,
    D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_CULL_DISABLE	= 0x1,
    D3D12_RAYTRACING_INSTANCE_FLAG_TRIANGLE_FRONT_COUNTERCLOCKWISE	= 0x2,
    D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_OPAQUE = 0x4,
    D3D12_RAYTRACING_INSTANCE_FLAG_FORCE_NON_OPAQUE	= 0x8
    }

D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE STRUC
StartAddress		D3D12_GPU_VIRTUAL_ADDRESS ?
StrideInBytes		UINT64 ?
D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE ENDS

D3D12_GPU_VIRTUAL_ADDRESS_RANGE STRUC
StartAddress		D3D12_GPU_VIRTUAL_ADDRESS ?
SizeInBytes		UINT64 ?
D3D12_GPU_VIRTUAL_ADDRESS_RANGE ENDS

D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE STRUC
StartAddress		D3D12_GPU_VIRTUAL_ADDRESS ?
SizeInBytes		UINT64 ?
StrideInBytes		UINT64 ?
D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE ENDS

D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC STRUC
Transform3x4		D3D12_GPU_VIRTUAL_ADDRESS ?
IndexFormat		DXGI_FORMAT ?
VertexFormat		DXGI_FORMAT ?
IndexCount		UINT ?
VertexCount		UINT ?
IndexBuffer		D3D12_GPU_VIRTUAL_ADDRESS ?
VertexBuffer		D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE <>
D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC ENDS

D3D12_RAYTRACING_AABB	STRUC
MinX			FLOAT ?
MinY			FLOAT ?
MinZ			FLOAT ?
MaxX			FLOAT ?
MaxY			FLOAT ?
MaxZ			FLOAT ?
D3D12_RAYTRACING_AABB	ENDS

D3D12_RAYTRACING_GEOMETRY_AABBS_DESC STRUC
AABBCount		UINT64 ?
AABBs			D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE <>
D3D12_RAYTRACING_GEOMETRY_AABBS_DESC ENDS

.enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE	= 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE	= 0x1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE	= 0x4,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD	= 0x8,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY	= 0x10,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE	= 0x20
    }

.enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE	= 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_COMPACT	= 0x1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_VISUALIZATION_DECODE_FOR_TOOLS	= 0x2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_SERIALIZE = 0x3,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_DESERIALIZE	= 0x4
    }

.enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL	= 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL	= 0x1
    }

.enum D3D12_ELEMENTS_LAYOUT {
    D3D12_ELEMENTS_LAYOUT_ARRAY = 0,
    D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS	= 0x1
    }

.enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE {
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE	= 0,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION	= 0x1,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION	= 0x2,
    D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3
    }

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC STRUC
DestBuffer		D3D12_GPU_VIRTUAL_ADDRESS ?
InfoType		D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC ENDS

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC STRUC
CompactedSizeInBytes	UINT64 ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC ENDS

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC STRUC
DecodedSizeInBytes	UINT64 ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC ENDS

D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER STRUC
Type			D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE ?
NumDescs		UINT ?
D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER ENDS


D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC STRUC
SerializedSizeInBytes	UINT64 ?
NumBottomLevelAccelerationStructurePointers UINT64 ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC ENDS

D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER STRUC
DriverOpaqueGUID	GUID <>
DriverOpaqueVersioningData db  16  dup(?)
D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER ENDS

.enum D3D12_SERIALIZED_DATA_TYPE {
    D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE	= 0
    }

.enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS {
    D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE	= 0,
    D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE	= 0x1,
    D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED	= 0x2,
    D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION	= 0x3,
    D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE	= 0x4
    }

D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER STRUC
DriverMatchingIdentifier D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER <>
SerializedSizeInBytesIncludingHeader UINT64 ?
DeserializedSizeInBytes UINT64 ?
NumBottomLevelAccelerationStructurePointersAfterHeader UINT64 ?
D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER ENDS

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC STRUC
CurrentSizeInBytes	UINT64 ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC ENDS

D3D12_RAYTRACING_INSTANCE_DESC STRUC
Transform		FLOAT 3 dup(?)
flags1			UINT ?
flags2			UINT ?
;InstanceID	: 24	     UINT ?
;InstanceMask	: 8	   UINT ?
;InstanceContributionToHitGroupIndex	: 24 UINT ?
;Flags		: 8	UINT ?
AccelerationStructure	D3D12_GPU_VIRTUAL_ADDRESS ?
D3D12_RAYTRACING_INSTANCE_DESC ENDS

D3D12_RAYTRACING_GEOMETRY_DESC STRUC
Type			D3D12_RAYTRACING_GEOMETRY_TYPE ?
Flags			D3D12_RAYTRACING_GEOMETRY_FLAGS ?
UNION
Triangles		D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC <>
AABBs			D3D12_RAYTRACING_GEOMETRY_AABBS_DESC <>
ENDS
D3D12_RAYTRACING_GEOMETRY_DESC ENDS

LPD3D12_RAYTRACING_GEOMETRY_DESC typedef ptr D3D12_RAYTRACING_GEOMETRY_DESC
D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS STRUC
Type			D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE ?
Flags			D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS ?
NumDescs		UINT ?
DescsLayout		D3D12_ELEMENTS_LAYOUT ?
UNION
InstanceDescs		D3D12_GPU_VIRTUAL_ADDRESS ?
pGeometryDescs		LPD3D12_RAYTRACING_GEOMETRY_DESC ?
ppGeometryDescs		LPD3D12_RAYTRACING_GEOMETRY_DESC ?
ENDS
D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS ENDS

D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC STRUC
DestAccelerationStructureData D3D12_GPU_VIRTUAL_ADDRESS ?
Inputs			D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS <>
SourceAccelerationStructureData D3D12_GPU_VIRTUAL_ADDRESS ?
ScratchAccelerationStructureData D3D12_GPU_VIRTUAL_ADDRESS ?
D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC ENDS

D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO STRUC
ResultDataMaxSizeInBytes UINT64 ?
ScratchDataSizeInBytes	UINT64 ?
UpdateScratchDataSizeInBytes UINT64 ?
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO ENDS

.enum D3D12_RAY_FLAGS {
    D3D12_RAY_FLAG_NONE = 0,
    D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1,
    D3D12_RAY_FLAG_FORCE_NON_OPAQUE	= 0x2,
    D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH	= 0x4,
    D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER	= 0x8,
    D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES	= 0x10,
    D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES	= 0x20,
    D3D12_RAY_FLAG_CULL_OPAQUE	= 0x40,
    D3D12_RAY_FLAG_CULL_NON_OPAQUE	= 0x80
    }

.enum D3D12_HIT_KIND {
    D3D12_HIT_KIND_TRIANGLE_FRONT_FACE	= 0xfe,
    D3D12_HIT_KIND_TRIANGLE_BACK_FACE	= 0xff
    }

ifndef __ID3D12Device5_INTERFACE_DEFINED__
define __ID3D12Device5_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device5, "8b4f173b-2fea-4b80-8f58-4307191ab95d")

.comdef ID3D12Device5 : public ID3D12Device4

    CreateLifetimeTracker proc :ptr, :REFIID, :ptr
    RemoveDevice	proc
    EnumerateMetaCommands proc :ptr, :ptr
    EnumerateMetaCommandParameters proc :REFGUID, :D3D12_META_COMMAND_PARAMETER_STAGE, :ptr, :ptr, :ptr
    CreateMetaCommand	proc :REFGUID, :UINT
    CreateStateObject	proc :ptr, :REFIID, :ptr
    GetRaytracingAccelerationStructurePrebuildInfo proc :ptr, :ptr
    CheckDriverMatchingIdentifier proc :D3D12_SERIALIZED_DATA_TYPE, :ptr
   .ends

endif



.enum D3D12_AUTO_BREADCRUMB_OP {
    D3D12_AUTO_BREADCRUMB_OP_SETMARKER	= 0,
    D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1,
    D3D12_AUTO_BREADCRUMB_OP_ENDEVENT	= 2,
    D3D12_AUTO_BREADCRUMB_OP_DRAWINSTANCED	= 3,
    D3D12_AUTO_BREADCRUMB_OP_DRAWINDEXEDINSTANCED	= 4,
    D3D12_AUTO_BREADCRUMB_OP_EXECUTEINDIRECT	= 5,
    D3D12_AUTO_BREADCRUMB_OP_DISPATCH	= 6,
    D3D12_AUTO_BREADCRUMB_OP_COPYBUFFERREGION	= 7,
    D3D12_AUTO_BREADCRUMB_OP_COPYTEXTUREREGION	= 8,
    D3D12_AUTO_BREADCRUMB_OP_COPYRESOURCE	= 9,
    D3D12_AUTO_BREADCRUMB_OP_COPYTILES	= 10,
    D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCE = 11,
    D3D12_AUTO_BREADCRUMB_OP_CLEARRENDERTARGETVIEW	= 12,
    D3D12_AUTO_BREADCRUMB_OP_CLEARUNORDEREDACCESSVIEW	= 13,
    D3D12_AUTO_BREADCRUMB_OP_CLEARDEPTHSTENCILVIEW	= 14,
    D3D12_AUTO_BREADCRUMB_OP_RESOURCEBARRIER	= 15,
    D3D12_AUTO_BREADCRUMB_OP_EXECUTEBUNDLE	= 16,
    D3D12_AUTO_BREADCRUMB_OP_PRESENT	= 17,
    D3D12_AUTO_BREADCRUMB_OP_RESOLVEQUERYDATA	= 18,
    D3D12_AUTO_BREADCRUMB_OP_BEGINSUBMISSION	= 19,
    D3D12_AUTO_BREADCRUMB_OP_ENDSUBMISSION	= 20,
    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME	= 21,
    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES	= 22,
    D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT	= 23,
    D3D12_AUTO_BREADCRUMB_OP_ATOMICCOPYBUFFERUINT64	= 24,
    D3D12_AUTO_BREADCRUMB_OP_RESOLVESUBRESOURCEREGION	= 25,
    D3D12_AUTO_BREADCRUMB_OP_WRITEBUFFERIMMEDIATE	= 26,
    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME1	= 27,
    D3D12_AUTO_BREADCRUMB_OP_SETPROTECTEDRESOURCESESSION	= 28,
    D3D12_AUTO_BREADCRUMB_OP_DECODEFRAME2	= 29,
    D3D12_AUTO_BREADCRUMB_OP_PROCESSFRAMES1	= 30,
    D3D12_AUTO_BREADCRUMB_OP_BUILDRAYTRACINGACCELERATIONSTRUCTURE	= 31,
    D3D12_AUTO_BREADCRUMB_OP_EMITRAYTRACINGACCELERATIONSTRUCTUREPOSTBUILDINFO	= 32,
    D3D12_AUTO_BREADCRUMB_OP_COPYRAYTRACINGACCELERATIONSTRUCTURE	= 33,
    D3D12_AUTO_BREADCRUMB_OP_DISPATCHRAYS	= 34,
    D3D12_AUTO_BREADCRUMB_OP_INITIALIZEMETACOMMAND	= 35,
    D3D12_AUTO_BREADCRUMB_OP_EXECUTEMETACOMMAND = 36,
    D3D12_AUTO_BREADCRUMB_OP_ESTIMATEMOTION	= 37,
    D3D12_AUTO_BREADCRUMB_OP_RESOLVEMOTIONVECTORHEAP	= 38,
    D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1	= 39,
    D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40,
    D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND	= 41
    }

D3D12_AUTO_BREADCRUMB_NODE STRUC
pCommandListDebugNameA	LPSTR ?
pCommandListDebugNameW	LPWSTR ?
pCommandQueueDebugNameA LPSTR ?
pCommandQueueDebugNameW LPWSTR ?
pCommandList		PVOID ? ; LPID3D12GraphicsCommandList
pCommandQueue		PVOID ? ; LPID3D12CommandQueue
BreadcrumbCount		UINT32 ?
pLastBreadcrumbValue	LPUINT ?
pCommandHistory		PVOID ? ; LPD3D12_AUTO_BREADCRUMB_OP
pNext			PVOID ?
D3D12_AUTO_BREADCRUMB_NODE ENDS

.enum D3D12_DRED_VERSION {
    D3D12_DRED_VERSION_1_0	= 0x1,
    D3D12_DRED_VERSION_1_1	= 0x2
    }

.enum D3D12_DRED_FLAGS {
    D3D12_DRED_FLAG_NONE	= 0,
    D3D12_DRED_FLAG_FORCE_ENABLE	= 1,
    D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS	= 2
    }

.enum D3D12_DRED_ENABLEMENT {
    D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED	= 0,
    D3D12_DRED_ENABLEMENT_FORCED_OFF	= 1,
    D3D12_DRED_ENABLEMENT_FORCED_ON	= 2
    }

D3D12_DEVICE_REMOVED_EXTENDED_DATA STRUC
Flags			D3D12_DRED_FLAGS ?
pHeadAutoBreadcrumbNode PVOID ? ; D3D12_AUTO_BREADCRUMB_NODE *
D3D12_DEVICE_REMOVED_EXTENDED_DATA ENDS

.enum D3D12_DRED_ALLOCATION_TYPE {
    D3D12_DRED_ALLOCATION_TYPE_COMMAND_QUEUE	= 19,
    D3D12_DRED_ALLOCATION_TYPE_COMMAND_ALLOCATOR	= 20,
    D3D12_DRED_ALLOCATION_TYPE_PIPELINE_STATE	= 21,
    D3D12_DRED_ALLOCATION_TYPE_COMMAND_LIST	= 22,
    D3D12_DRED_ALLOCATION_TYPE_FENCE	= 23,
    D3D12_DRED_ALLOCATION_TYPE_DESCRIPTOR_HEAP	= 24,
    D3D12_DRED_ALLOCATION_TYPE_HEAP	= 25,
    D3D12_DRED_ALLOCATION_TYPE_QUERY_HEAP	= 27,
    D3D12_DRED_ALLOCATION_TYPE_COMMAND_SIGNATURE	= 28,
    D3D12_DRED_ALLOCATION_TYPE_PIPELINE_LIBRARY = 29,
    D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER	= 30,
    D3D12_DRED_ALLOCATION_TYPE_VIDEO_PROCESSOR	= 32,
    D3D12_DRED_ALLOCATION_TYPE_RESOURCE = 34,
    D3D12_DRED_ALLOCATION_TYPE_PASS	= 35,
    D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSION	= 36,
    D3D12_DRED_ALLOCATION_TYPE_CRYPTOSESSIONPOLICY	= 37,
    D3D12_DRED_ALLOCATION_TYPE_PROTECTEDRESOURCESESSION = 38,
    D3D12_DRED_ALLOCATION_TYPE_VIDEO_DECODER_HEAP	= 39,
    D3D12_DRED_ALLOCATION_TYPE_COMMAND_POOL	= 40,
    D3D12_DRED_ALLOCATION_TYPE_COMMAND_RECORDER = 41,
    D3D12_DRED_ALLOCATION_TYPE_STATE_OBJECT	= 42,
    D3D12_DRED_ALLOCATION_TYPE_METACOMMAND	= 43,
    D3D12_DRED_ALLOCATION_TYPE_SCHEDULINGGROUP	= 44,
    D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_ESTIMATOR	= 45,
    D3D12_DRED_ALLOCATION_TYPE_VIDEO_MOTION_VECTOR_HEAP = 46,
    D3D12_DRED_ALLOCATION_TYPE_VIDEO_EXTENSION_COMMAND	= 47,
    D3D12_DRED_ALLOCATION_TYPE_INVALID	= 0xffffffff
    }

D3D12_DRED_ALLOCATION_NODE STRUC
ObjectNameA		LPSTR ?
ObjectNameW		LPWSTR ?
AllocationType		D3D12_DRED_ALLOCATION_TYPE ?
pNext			PVOID ?
D3D12_DRED_ALLOCATION_NODE ENDS

D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT STRUC
pHeadAutoBreadcrumbNode PVOID ? ; D3D12_AUTO_BREADCRUMB_NODE *
D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT ENDS

D3D12_DRED_PAGE_FAULT_OUTPUT STRUC
PageFaultVA		D3D12_GPU_VIRTUAL_ADDRESS ?
pHeadExistingAllocationNode PVOID ? ; D3D12_DRED_ALLOCATION_NODE *
pHeadRecentFreedAllocationNode PVOID ? ; D3D12_DRED_ALLOCATION_NODE *
D3D12_DRED_PAGE_FAULT_OUTPUT ENDS

D3D12_DEVICE_REMOVED_EXTENDED_DATA1 STRUC
DeviceRemovedReason	HRESULT ?
AutoBreadcrumbsOutput	D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT <>
PageFaultOutput		D3D12_DRED_PAGE_FAULT_OUTPUT <>
D3D12_DEVICE_REMOVED_EXTENDED_DATA1 ENDS

D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA STRUC
Version			D3D12_DRED_VERSION ?
UNION
Dred_1_0		D3D12_DEVICE_REMOVED_EXTENDED_DATA <>
Dred_1_1		D3D12_DEVICE_REMOVED_EXTENDED_DATA1 <>
ENDS
D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA ENDS


ifndef __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__
define __ID3D12DeviceRemovedExtendedDataSettings_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12DeviceRemovedExtendedDataSettings, "82BC481C-6B9B-4030-AEDB-7EE3D1DF1E63")

.comdef ID3D12DeviceRemovedExtendedDataSettings : public IUnknown

    SetAutoBreadcrumbsEnablement proc :D3D12_DRED_ENABLEMENT
    SetPageFaultEnablement proc :D3D12_DRED_ENABLEMENT
    SetWatsonDumpEnablement proc :D3D12_DRED_ENABLEMENT
   .ends

endif

ifndef __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__
define __ID3D12DeviceRemovedExtendedData_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12DeviceRemovedExtendedData, "98931D33-5AE8-4791-AA3C-1A73A2934E71")

.comdef ID3D12DeviceRemovedExtendedData : public IUnknown

    GetAutoBreadcrumbsOutput proc :ptr
    GetPageFaultAllocationOutput proc :ptr
   .ends

endif

.enum D3D12_BACKGROUND_PROCESSING_MODE {
    D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED	= 0,
    D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS	= ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED + 1 ) ,
    D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK	= ( D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS + 1 ) ,
    D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM	= ( D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK + 1 )
    }

.enum D3D12_MEASUREMENTS_ACTION {
    D3D12_MEASUREMENTS_ACTION_KEEP_ALL	= 0,
    D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS	= ( D3D12_MEASUREMENTS_ACTION_KEEP_ALL + 1 ) ,
    D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY	= ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS + 1 ) ,
    D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS	= ( D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY + 1 )
    }

ifndef __ID3D12Device6_INTERFACE_DEFINED__
define __ID3D12Device6_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Device6, "c70b221b-40e4-4a17-89af-025a0727a6dc")

.comdef ID3D12Device6 : public ID3D12Device5

    SetBackgroundProcessingMode proc :D3D12_BACKGROUND_PROCESSING_MODE, :D3D12_MEASUREMENTS_ACTION, :HANDLE, :ptr
   .ends

endif

ifndef __ID3D12Resource1_INTERFACE_DEFINED__
define __ID3D12Resource1_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Resource1, "9D5E227A-4430-4161-88B3-3ECA6BB16E19")

.comdef ID3D12Resource1 : public ID3D12Resource

    GetProtectedResourceSession proc :REFIID, :ptr
   .ends

endif

ifndef __ID3D12Heap1_INTERFACE_DEFINED__
define __ID3D12Heap1_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Heap1, "572F7389-2168-49E3-9693-D6DF5871BF6D")

.comdef ID3D12Heap1 : public ID3D12Heap

    GetProtectedResourceSession proc :REFIID, :ptr
   .ends

endif

ifndef __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__
define __ID3D12GraphicsCommandList3_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12GraphicsCommandList3, "6FDA83A7-B84C-4E38-9AC8-C7BD22016B3D")

.comdef ID3D12GraphicsCommandList3 : public ID3D12GraphicsCommandList2

    SetProtectedResourceSession proc :ptr
   .ends

endif

.enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE {
    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD	= 0,
    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE	= ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD + 1 ) ,
    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR	= ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE + 1 ) ,
    D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS	= ( D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR + 1 )
    }

D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS STRUC
ClearValue		D3D12_CLEAR_VALUE <>
D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS ENDS

.enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE {
    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD	= 0,
    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE	= ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD + 1 ) ,
    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE	= ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE + 1 ) ,
    D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS	= ( D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE + 1 )
    }

D3D12_RENDER_PASS_BEGINNING_ACCESS STRUC
Type			D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE ?
UNION
Clear			D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS <>
ENDS
D3D12_RENDER_PASS_BEGINNING_ACCESS ENDS

D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS STRUC
SrcSubresource		UINT ?
DstSubresource		UINT ?
DstX			UINT ?
DstY			UINT ?
SrcRect			D3D12_RECT <>
D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS ENDS

D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS STRUC
pSrcResource		LPID3D12Resource ?
pDstResource		LPID3D12Resource ?
SubresourceCount	UINT ?
pSubresourceParameters	PVOID ? ; D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *
Format			DXGI_FORMAT ?
ResolveMode		D3D12_RESOLVE_MODE ?
PreserveResolveSource	BOOL ?
D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS ENDS

D3D12_RENDER_PASS_ENDING_ACCESS STRUC
Type			D3D12_RENDER_PASS_ENDING_ACCESS_TYPE ?
UNION
Resolve			D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS <>
ENDS
D3D12_RENDER_PASS_ENDING_ACCESS ENDS

D3D12_RENDER_PASS_RENDER_TARGET_DESC STRUC
cpuDescriptor		D3D12_CPU_DESCRIPTOR_HANDLE <>
BeginningAccess		D3D12_RENDER_PASS_BEGINNING_ACCESS <>
EndingAccess		D3D12_RENDER_PASS_ENDING_ACCESS <>
D3D12_RENDER_PASS_RENDER_TARGET_DESC ENDS

D3D12_RENDER_PASS_DEPTH_STENCIL_DESC STRUC
cpuDescriptor		D3D12_CPU_DESCRIPTOR_HANDLE <>
DepthBeginningAccess	D3D12_RENDER_PASS_BEGINNING_ACCESS <>
StencilBeginningAccess	D3D12_RENDER_PASS_BEGINNING_ACCESS <>
DepthEndingAccess	D3D12_RENDER_PASS_ENDING_ACCESS <>
StencilEndingAccess	D3D12_RENDER_PASS_ENDING_ACCESS <>
D3D12_RENDER_PASS_DEPTH_STENCIL_DESC ENDS

.enum D3D12_RENDER_PASS_FLAGS {
    D3D12_RENDER_PASS_FLAG_NONE = 0,
    D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES	= 0x1,
    D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS	= 0x2,
    D3D12_RENDER_PASS_FLAG_RESUMING_PASS	= 0x4
    }

ifndef __ID3D12MetaCommand_INTERFACE_DEFINED__
define __ID3D12MetaCommand_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12MetaCommand, "DBB84C27-36CE-4FC9-B801-F048C46AC570")

.comdef ID3D12MetaCommand : public ID3D12Pageable

    GetRequiredParameterResourceSize proc :D3D12_META_COMMAND_PARAMETER_STAGE, :UINT
   .ends

endif

D3D12_DISPATCH_RAYS_DESC STRUC
RayGenerationShaderRecord D3D12_GPU_VIRTUAL_ADDRESS_RANGE <>
MissShaderTable		D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE <>
HitGroupTable		D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE <>
CallableShaderTable	D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE <>
Width			UINT ?
Height			UINT ?
Depth			UINT ?
D3D12_DISPATCH_RAYS_DESC ENDS

ifndef __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__
define __ID3D12GraphicsCommandList4_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12GraphicsCommandList4, "8754318e-d3a9-4541-98cf-645b50dc4874")

.comdef ID3D12GraphicsCommandList4 : public ID3D12GraphicsCommandList3

    BeginRenderPass	proc :UINT
    EndRenderPass	proc
    InitializeMetaCommand proc :ptr
    ExecuteMetaCommand	proc :ptr
    BuildRaytracingAccelerationStructure proc :ptr, :UINT, :ptr
    EmitRaytracingAccelerationStructurePostbuildInfo proc :ptr, :UINT, :ptr D3D12_GPU_VIRTUAL_ADDRESS
    CopyRaytracingAccelerationStructure proc :D3D12_GPU_VIRTUAL_ADDRESS, :D3D12_GPU_VIRTUAL_ADDRESS, :D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
    SetPipelineState1	proc :ptr
    DispatchRays	proc :ptr
   .ends

endif

ifndef __ID3D12Tools_INTERFACE_DEFINED__
define __ID3D12Tools_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12Tools, "7071e1f0-e84b-4b33-974f-12fa49de65c5")

.comdef ID3D12Tools : public IUnknown

    EnableShaderInstrumentation proc :BOOL
    ShaderInstrumentationEnabled proc
   .ends

endif

D3D12_SUBRESOURCE_DATA	STRUC
pData			LPVOID ?
RowPitch		LONG_PTR ?
SlicePitch		LONG_PTR ?
D3D12_SUBRESOURCE_DATA	ENDS

D3D12_MEMCPY_DEST	STRUC
pData			LPVOID ?
RowPitch		SIZE_T ?
SlicePitch		SIZE_T ?
D3D12_MEMCPY_DEST	ENDS

if NOT defined( D3D12_IGNORE_SDK_LAYERS )
include d3d12sdklayers.inc
endif

CALLBACK(PFN_D3D12_CREATE_DEVICE, :ptr, :D3D_FEATURE_LEVEL, :REFIID, :ptr)
CALLBACK(PFN_D3D12_GET_DEBUG_INTERFACE, :REFIID, :ptr)

D3D12CreateDevice proto WINAPI :ptr, :D3D_FEATURE_LEVEL, :REFIID, :ptr
D3D12GetDebugInterface proto WINAPI :REFIID, :ptr
D3D12EnableExperimentalFeatures proto WINAPI :UINT, :ptr, :ptr, :ptr

D3D12ExperimentalShaderModels	equ <{0x76f5573e, 0xf13a, 0x40f5, { 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f}}>
D3D12TiledResourceTier4		equ <{0xc9c4725f, 0xa81a, 0x4f56, { 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb}}>
D3D12MetaCommand		equ <{0xc734c97e, 0x8077, 0x48c8, { 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77}}>
D3D12ComputeOnlyDevices		equ <{0x50f7ab08, 0x4b6d, 0x4e14, { 0x89, 0xa5, 0x5d, 0x16, 0xcd, 0x27, 0x25, 0x94}}>

.enum D3D12_AXIS_SHADING_RATE {
    D3D12_AXIS_SHADING_RATE_1X	= 0,
    D3D12_AXIS_SHADING_RATE_2X	= 0x1,
    D3D12_AXIS_SHADING_RATE_4X	= 0x2
    }

D3D12_SHADING_RATE_X_AXIS_SHIFT equ 2
D3D12_SHADING_RATE_VALID_MASK equ 3
D3D12_MAKE_COARSE_SHADING_RATE macro x,y
	exitm<((x) SHL D3D12_SHADING_RATE_X_AXIS_SHIFT OR (y))>
	endm
D3D12_GET_COARSE_SHADING_RATE_X_AXIS macro x
	exitm<(((x) SHR D3D12_SHADING_RATE_X_AXIS_SHIFT) AND D3D12_SHADING_RATE_VALID_MASK)>
	endm
D3D12_GET_COARSE_SHADING_RATE_Y_AXIS macro y
	exitm<((y) AND D3D12_SHADING_RATE_VALID_MASK)>
	endm
.enum D3D12_SHADING_RATE {
    D3D12_SHADING_RATE_1X1	= 0,
    D3D12_SHADING_RATE_1X2	= 0x1,
    D3D12_SHADING_RATE_2X1	= 0x4,
    D3D12_SHADING_RATE_2X2	= 0x5,
    D3D12_SHADING_RATE_2X4	= 0x6,
    D3D12_SHADING_RATE_4X2	= 0x9,
    D3D12_SHADING_RATE_4X4	= 0xa
    }

.enum D3D12_SHADING_RATE_COMBINER {
    D3D12_SHADING_RATE_COMBINER_PASSTHROUGH	= 0,
    D3D12_SHADING_RATE_COMBINER_OVERRIDE	= 1,
    D3D12_SHADING_RATE_COMBINER_MIN	= 2,
    D3D12_SHADING_RATE_COMBINER_MAX	= 3,
    D3D12_SHADING_RATE_COMBINER_SUM	= 4
    }

ifndef __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__
define __ID3D12GraphicsCommandList5_INTERFACE_DEFINED__

DEFINE_IIDX(ID3D12GraphicsCommandList5, "55050859-4024-474c-87f5-6472eaee44ea")

.comdef ID3D12GraphicsCommandList5 : public ID3D12GraphicsCommandList4

    RSSetShadingRate	proc :D3D12_SHADING_RATE, :ptr
    RSSetShadingRateImage proc :ptr
   .ends

endif

endif
