diff --git a/src/um/d3d12.rs b/src/um/d3d12.rs index 66cd8aeb7..ff22ffdff 100644 --- a/src/um/d3d12.rs +++ b/src/um/d3d12.rs @@ -10,7 +10,7 @@ use shared::dxgitype::DXGI_SAMPLE_DESC; use shared::guiddef::{GUID, IID, REFGUID, REFIID}; use shared::minwindef::{BOOL, BYTE, DWORD, FLOAT, INT, LPCVOID, UINT}; use shared::windef::RECT; -use um::d3dcommon::{D3D_FEATURE_LEVEL, D3D_PRIMITIVE, D3D_PRIMITIVE_TOPOLOGY, ID3DBlob}; +use um::d3dcommon::{ID3DBlob, D3D_FEATURE_LEVEL, D3D_PRIMITIVE, D3D_PRIMITIVE_TOPOLOGY}; use um::minwinbase::SECURITY_ATTRIBUTES; use um::unknwnbase::{IUnknown, IUnknownVtbl}; use um::winnt::{HANDLE, HRESULT, LPCSTR, LPCWSTR, LUID}; @@ -316,12 +316,9 @@ pub const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BYTE_ALIGNMENT: UINT = 256; pub const D3D12_RAYTRACING_INSTANCE_DESCS_BYTE_ALIGNMENT: UINT = 16; pub const D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES: UINT = 32; pub const D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH: UINT = 31; -pub const D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE - : UINT = 16777216; -pub const D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE - : UINT = 16777216; -pub const D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE - : UINT = 536870912; +pub const D3D12_RAYTRACING_MAX_GEOMETRIES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE: UINT = 16777216; +pub const D3D12_RAYTRACING_MAX_INSTANCES_PER_TOP_LEVEL_ACCELERATION_STRUCTURE: UINT = 16777216; +pub const D3D12_RAYTRACING_MAX_PRIMITIVES_PER_BOTTOM_LEVEL_ACCELERATION_STRUCTURE: UINT = 536870912; pub const D3D12_RAYTRACING_MAX_RAY_GENERATION_SHADER_THREADS: UINT = 1073741824; pub const D3D12_RAYTRACING_MAX_SHADER_RECORD_STRIDE: UINT = 4096; pub const D3D12_RAYTRACING_SHADER_RECORD_BYTE_ALIGNMENT: UINT = 32; @@ -356,6 +353,7 @@ pub const D3D12_REQ_TEXTURECUBE_DIMENSION: UINT = 16384; pub const D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL: UINT = 0; pub const D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES: UINT = 0xffffffff; pub const D3D12_RS_SET_SHADING_RATE_COMBINER_COUNT: UINT = 2; +pub const D3D12_SDK_VERSION: UINT = 3; pub const D3D12_SHADER_IDENTIFIER_SIZE_IN_BYTES: UINT = 32; pub const D3D12_SHADER_MAJOR_VERSION: UINT = 5; pub const D3D12_SHADER_MAX_INSTANCES: UINT = 65535; @@ -428,7 +426,7 @@ pub const D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT: UINT = 10; pub const D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP: UINT = 25; pub const D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP: UINT = 25; pub type D3D12_GPU_VIRTUAL_ADDRESS = UINT64; -ENUM!{enum D3D12_COMMAND_LIST_TYPE { +ENUM! {enum D3D12_COMMAND_LIST_TYPE { D3D12_COMMAND_LIST_TYPE_DIRECT = 0, D3D12_COMMAND_LIST_TYPE_BUNDLE = 1, D3D12_COMMAND_LIST_TYPE_COMPUTE = 2, @@ -437,33 +435,33 @@ ENUM!{enum D3D12_COMMAND_LIST_TYPE { D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS = 5, D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE = 6, }} -ENUM!{enum D3D12_COMMAND_QUEUE_FLAGS { +ENUM! {enum D3D12_COMMAND_QUEUE_FLAGS { D3D12_COMMAND_QUEUE_FLAG_NONE = 0x0, D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1, }} -ENUM!{enum D3D12_COMMAND_QUEUE_PRIORITY { +ENUM! {enum D3D12_COMMAND_QUEUE_PRIORITY { D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0, D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100, D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000, }} -STRUCT!{struct D3D12_COMMAND_QUEUE_DESC { +STRUCT! {struct D3D12_COMMAND_QUEUE_DESC { Type: D3D12_COMMAND_LIST_TYPE, Priority: INT, Flags: D3D12_COMMAND_QUEUE_FLAGS, NodeMask: UINT, }} -ENUM!{enum D3D12_PRIMITIVE_TOPOLOGY_TYPE { +ENUM! {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!{enum D3D12_INPUT_CLASSIFICATION { +ENUM! {enum D3D12_INPUT_CLASSIFICATION { D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0, D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1, }} -STRUCT!{struct D3D12_INPUT_ELEMENT_DESC { +STRUCT! {struct D3D12_INPUT_ELEMENT_DESC { SemanticName: LPCSTR, SemanticIndex: UINT, Format: DXGI_FORMAT, @@ -472,18 +470,18 @@ STRUCT!{struct D3D12_INPUT_ELEMENT_DESC { InputSlotClass: D3D12_INPUT_CLASSIFICATION, InstanceDataStepRate: UINT, }} -ENUM!{enum D3D12_FILL_MODE { +ENUM! {enum D3D12_FILL_MODE { D3D12_FILL_MODE_WIREFRAME = 2, D3D12_FILL_MODE_SOLID = 3, }} pub type D3D12_PRIMITIVE_TOPOLOGY = D3D_PRIMITIVE_TOPOLOGY; pub type D3D12_PRIMITIVE = D3D_PRIMITIVE; -ENUM!{enum D3D12_CULL_MODE { +ENUM! {enum D3D12_CULL_MODE { D3D12_CULL_MODE_NONE = 1, D3D12_CULL_MODE_FRONT = 2, D3D12_CULL_MODE_BACK = 3, }} -STRUCT!{struct D3D12_SO_DECLARATION_ENTRY { +STRUCT! {struct D3D12_SO_DECLARATION_ENTRY { Stream: UINT, SemanticName: LPCSTR, SemanticIndex: UINT, @@ -491,7 +489,7 @@ STRUCT!{struct D3D12_SO_DECLARATION_ENTRY { ComponentCount: BYTE, OutputSlot: BYTE, }} -STRUCT!{struct D3D12_VIEWPORT { +STRUCT! {struct D3D12_VIEWPORT { TopLeftX: FLOAT, TopLeftY: FLOAT, Width: FLOAT, @@ -500,7 +498,7 @@ STRUCT!{struct D3D12_VIEWPORT { MaxDepth: FLOAT, }} pub type D3D12_RECT = RECT; -STRUCT!{struct D3D12_BOX { +STRUCT! {struct D3D12_BOX { left: UINT, top: UINT, front: UINT, @@ -508,7 +506,7 @@ STRUCT!{struct D3D12_BOX { bottom: UINT, back: UINT, }} -ENUM!{enum D3D12_COMPARISON_FUNC { +ENUM! {enum D3D12_COMPARISON_FUNC { D3D12_COMPARISON_FUNC_NEVER = 1, D3D12_COMPARISON_FUNC_LESS = 2, D3D12_COMPARISON_FUNC_EQUAL = 3, @@ -518,11 +516,11 @@ ENUM!{enum D3D12_COMPARISON_FUNC { D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7, D3D12_COMPARISON_FUNC_ALWAYS = 8, }} -ENUM!{enum D3D12_DEPTH_WRITE_MASK { +ENUM! {enum D3D12_DEPTH_WRITE_MASK { D3D12_DEPTH_WRITE_MASK_ZERO = 0, D3D12_DEPTH_WRITE_MASK_ALL = 1, }} -ENUM!{enum D3D12_STENCIL_OP { +ENUM! {enum D3D12_STENCIL_OP { D3D12_STENCIL_OP_KEEP = 1, D3D12_STENCIL_OP_ZERO = 2, D3D12_STENCIL_OP_REPLACE = 3, @@ -532,13 +530,13 @@ ENUM!{enum D3D12_STENCIL_OP { D3D12_STENCIL_OP_INCR = 7, D3D12_STENCIL_OP_DECR = 8, }} -STRUCT!{struct D3D12_DEPTH_STENCILOP_DESC { +STRUCT! {struct D3D12_DEPTH_STENCILOP_DESC { StencilFailOp: D3D12_STENCIL_OP, StencilDepthFailOp: D3D12_STENCIL_OP, StencilPassOp: D3D12_STENCIL_OP, StencilFunc: D3D12_COMPARISON_FUNC, }} -STRUCT!{struct D3D12_DEPTH_STENCIL_DESC { +STRUCT! {struct D3D12_DEPTH_STENCIL_DESC { DepthEnable: BOOL, DepthWriteMask: D3D12_DEPTH_WRITE_MASK, DepthFunc: D3D12_COMPARISON_FUNC, @@ -548,7 +546,7 @@ STRUCT!{struct D3D12_DEPTH_STENCIL_DESC { FrontFace: D3D12_DEPTH_STENCILOP_DESC, BackFace: D3D12_DEPTH_STENCILOP_DESC, }} -STRUCT!{struct D3D12_DEPTH_STENCIL_DESC1 { +STRUCT! {struct D3D12_DEPTH_STENCIL_DESC1 { DepthEnable: BOOL, DepthWriteMask: D3D12_DEPTH_WRITE_MASK, DepthFunc: D3D12_COMPARISON_FUNC, @@ -559,7 +557,7 @@ STRUCT!{struct D3D12_DEPTH_STENCIL_DESC1 { BackFace: D3D12_DEPTH_STENCILOP_DESC, DepthBoundsTestEnable: BOOL, }} -ENUM!{enum D3D12_BLEND { +ENUM! {enum D3D12_BLEND { D3D12_BLEND_ZERO = 1, D3D12_BLEND_ONE = 2, D3D12_BLEND_SRC_COLOR = 3, @@ -578,14 +576,14 @@ ENUM!{enum D3D12_BLEND { D3D12_BLEND_SRC1_ALPHA = 18, D3D12_BLEND_INV_SRC1_ALPHA = 19, }} -ENUM!{enum D3D12_BLEND_OP { +ENUM! {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!{enum D3D12_COLOR_WRITE_ENABLE { +ENUM! {enum D3D12_COLOR_WRITE_ENABLE { D3D12_COLOR_WRITE_ENABLE_RED = 1, D3D12_COLOR_WRITE_ENABLE_GREEN = 2, D3D12_COLOR_WRITE_ENABLE_BLUE = 4, @@ -593,7 +591,7 @@ ENUM!{enum D3D12_COLOR_WRITE_ENABLE { D3D12_COLOR_WRITE_ENABLE_ALL = D3D12_COLOR_WRITE_ENABLE_RED | D3D12_COLOR_WRITE_ENABLE_GREEN | D3D12_COLOR_WRITE_ENABLE_BLUE | D3D12_COLOR_WRITE_ENABLE_ALPHA, }} -ENUM!{enum D3D12_LOGIC_OP { +ENUM! {enum D3D12_LOGIC_OP { D3D12_LOGIC_OP_CLEAR = 0, D3D12_LOGIC_OP_SET = 1, D3D12_LOGIC_OP_COPY = 2, @@ -611,7 +609,7 @@ ENUM!{enum D3D12_LOGIC_OP { D3D12_LOGIC_OP_OR_REVERSE = 14, D3D12_LOGIC_OP_OR_INVERTED = 15, }} -STRUCT!{struct D3D12_RENDER_TARGET_BLEND_DESC { +STRUCT! {struct D3D12_RENDER_TARGET_BLEND_DESC { BlendEnable: BOOL, LogicOpEnable: BOOL, SrcBlend: D3D12_BLEND, @@ -623,16 +621,16 @@ STRUCT!{struct D3D12_RENDER_TARGET_BLEND_DESC { LogicOp: D3D12_LOGIC_OP, RenderTargetWriteMask: UINT8, }} -STRUCT!{struct D3D12_BLEND_DESC { +STRUCT! {struct D3D12_BLEND_DESC { AlphaToCoverageEnable: BOOL, IndependentBlendEnable: BOOL, RenderTarget: [D3D12_RENDER_TARGET_BLEND_DESC; 8], }} -ENUM!{enum D3D12_CONSERVATIVE_RASTERIZATION_MODE { +ENUM! {enum D3D12_CONSERVATIVE_RASTERIZATION_MODE { D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1, }} -STRUCT!{struct D3D12_RASTERIZER_DESC { +STRUCT! {struct D3D12_RASTERIZER_DESC { FillMode: D3D12_FILL_MODE, CullMode: D3D12_CULL_MODE, FrontCounterClockwise: BOOL, @@ -645,38 +643,38 @@ STRUCT!{struct D3D12_RASTERIZER_DESC { ForcedSampleCount: UINT, ConservativeRaster: D3D12_CONSERVATIVE_RASTERIZATION_MODE, }} -RIDL!{#[uuid(0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14)] +RIDL! {#[uuid(0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14)] interface ID3D12RootSignature(ID3D12RootSignatureVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) {}} -STRUCT!{struct D3D12_SHADER_BYTECODE { +STRUCT! {struct D3D12_SHADER_BYTECODE { pShaderBytecode: *const c_void, BytecodeLength: SIZE_T, }} -STRUCT!{struct D3D12_STREAM_OUTPUT_DESC { +STRUCT! {struct D3D12_STREAM_OUTPUT_DESC { pSODeclaration: *const D3D12_SO_DECLARATION_ENTRY, NumEntries: UINT, pBufferStrides: *const UINT, NumStrides: UINT, RasterizedStream: UINT, }} -STRUCT!{struct D3D12_INPUT_LAYOUT_DESC { +STRUCT! {struct D3D12_INPUT_LAYOUT_DESC { pInputElementDescs: *const D3D12_INPUT_ELEMENT_DESC, NumElements: UINT, }} -ENUM!{enum D3D12_INDEX_BUFFER_STRIP_CUT_VALUE { +ENUM! {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, }} -STRUCT!{struct D3D12_CACHED_PIPELINE_STATE { +STRUCT! {struct D3D12_CACHED_PIPELINE_STATE { pCachedBlob: *const c_void, CachedBlobSizeInBytes: SIZE_T, }} -ENUM!{enum D3D12_PIPELINE_STATE_FLAGS { +ENUM! {enum D3D12_PIPELINE_STATE_FLAGS { D3D12_PIPELINE_STATE_FLAG_NONE = 0, D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1, }} -STRUCT!{struct D3D12_GRAPHICS_PIPELINE_STATE_DESC { +STRUCT! {struct D3D12_GRAPHICS_PIPELINE_STATE_DESC { pRootSignature: *mut ID3D12RootSignature, VS: D3D12_SHADER_BYTECODE, PS: D3D12_SHADER_BYTECODE, @@ -699,22 +697,22 @@ STRUCT!{struct D3D12_GRAPHICS_PIPELINE_STATE_DESC { CachedPSO: D3D12_CACHED_PIPELINE_STATE, Flags: D3D12_PIPELINE_STATE_FLAGS, }} -STRUCT!{struct D3D12_COMPUTE_PIPELINE_STATE_DESC { +STRUCT! {struct D3D12_COMPUTE_PIPELINE_STATE_DESC { pRootSignature: *mut ID3D12RootSignature, CS: D3D12_SHADER_BYTECODE, NodeMask: UINT, CachedPSO: D3D12_CACHED_PIPELINE_STATE, Flags: D3D12_PIPELINE_STATE_FLAGS, }} -STRUCT!{struct D3D12_RT_FORMAT_ARRAY { +STRUCT! {struct D3D12_RT_FORMAT_ARRAY { RTFormats: [DXGI_FORMAT; 8], NumRenderTargets: UINT, }} -STRUCT!{struct D3D12_PIPELINE_STATE_STREAM_DESC { +STRUCT! {struct D3D12_PIPELINE_STATE_STREAM_DESC { SizeInBytes: SIZE_T, pPipelineStateSubobjectStream: *mut c_void, }} -ENUM!{enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE { +ENUM! {enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE { D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_ROOT_SIGNATURE = 0, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_VS = 1, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_PS = 2, @@ -739,7 +737,7 @@ ENUM!{enum D3D12_PIPELINE_STATE_SUBOBJECT_TYPE { D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_DEPTH_STENCIL1 = 21, D3D12_PIPELINE_STATE_SUBOBJECT_TYPE_MAX_VALID = 22, }} -ENUM!{enum D3D12_FEATURE { +ENUM! {enum D3D12_FEATURE { D3D12_FEATURE_D3D12_OPTIONS = 0, D3D12_FEATURE_ARCHITECTURE = 1, D3D12_FEATURE_FEATURE_LEVELS = 2, @@ -762,31 +760,37 @@ ENUM!{enum D3D12_FEATURE { D3D12_FEATURE_D3D12_OPTIONS5 = 27, D3D12_FEATURE_D3D12_OPTIONS6 = 30, D3D12_FEATURE_QUERY_META_COMMAND = 31, -}} -ENUM!{enum D3D12_SHADER_MIN_PRECISION_SUPPORT { + D3D12_FEATURE_D3D12_OPTIONS7 = 32, + D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33, + D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34, + D3D12_FEATURE_D3D12_OPTIONS8 = 36, + D3D12_FEATURE_D3D12_OPTIONS9 = 37, + D3D12_FEATURE_WAVE_MMA = 38, +}} +ENUM! {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!{enum D3D12_TILED_RESOURCES_TIER { +ENUM! {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!{enum D3D12_RESOURCE_BINDING_TIER { +ENUM! {enum D3D12_RESOURCE_BINDING_TIER { D3D12_RESOURCE_BINDING_TIER_1 = 1, D3D12_RESOURCE_BINDING_TIER_2 = 2, D3D12_RESOURCE_BINDING_TIER_3 = 3, }} -ENUM!{enum D3D12_CONSERVATIVE_RASTERIZATION_TIER { +ENUM! {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!{enum D3D12_FORMAT_SUPPORT1 { +ENUM! {enum D3D12_FORMAT_SUPPORT1 { D3D12_FORMAT_SUPPORT1_NONE = 0, D3D12_FORMAT_SUPPORT1_BUFFER = 0x1, D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2, @@ -818,7 +822,7 @@ ENUM!{enum D3D12_FORMAT_SUPPORT1 { D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000, D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000, }} -ENUM!{enum D3D12_FORMAT_SUPPORT2 { +ENUM! {enum D3D12_FORMAT_SUPPORT2 { D3D12_FORMAT_SUPPORT2_NONE = 0, D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1, D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2, @@ -832,33 +836,33 @@ ENUM!{enum D3D12_FORMAT_SUPPORT2 { D3D12_FORMAT_SUPPORT2_TILED = 0x200, D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000, }} -ENUM!{enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS { +ENUM! {enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS { D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0, D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1, }} -ENUM!{enum D3D12_CROSS_NODE_SHARING_TIER { +ENUM! {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!{enum D3D12_RESOURCE_HEAP_TIER { +ENUM! {enum D3D12_RESOURCE_HEAP_TIER { D3D12_RESOURCE_HEAP_TIER_1 = 1, D3D12_RESOURCE_HEAP_TIER_2 = 2, }} -ENUM!{enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER { +ENUM! {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!{enum D3D12_VIEW_INSTANCING_TIER { +ENUM! {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, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS { DoublePrecisionFloatShaderOps: BOOL, OutputMergerLogicOp: BOOL, MinPrecisionSupport: D3D12_SHADER_MIN_PRECISION_SUPPORT, @@ -875,7 +879,7 @@ STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS { VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation: BOOL, ResourceHeapTier: D3D12_RESOURCE_HEAP_TIER, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS1 { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS1 { WaveOps: BOOL, WaveLaneCountMin: UINT, WaveLaneCountMax: UINT, @@ -883,37 +887,37 @@ STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS1 { ExpandedComputeResourceStates: BOOL, Int64ShaderOps: BOOL, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS2 { DepthBoundsTestSupported: BOOL, ProgrammableSamplePositionsTier: D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER, }} -ENUM!{enum D3D_ROOT_SIGNATURE_VERSION { +ENUM! {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, }} -STRUCT!{struct D3D12_FEATURE_DATA_ROOT_SIGNATURE { +STRUCT! {struct D3D12_FEATURE_DATA_ROOT_SIGNATURE { HighestVersion: D3D_ROOT_SIGNATURE_VERSION, }} -STRUCT!{struct D3D12_FEATURE_DATA_ARCHITECTURE { +STRUCT! {struct D3D12_FEATURE_DATA_ARCHITECTURE { NodeIndex: UINT, TileBasedRenderer: BOOL, UMA: BOOL, CacheCoherentUMA: BOOL, }} -STRUCT!{struct D3D12_FEATURE_DATA_ARCHITECTURE1 { +STRUCT! {struct D3D12_FEATURE_DATA_ARCHITECTURE1 { NodeIndex: UINT, TileBasedRenderer: BOOL, UMA: BOOL, CacheCoherentUMA: BOOL, IsolatedMMU: BOOL, }} -STRUCT!{struct D3D12_FEATURE_DATA_FEATURE_LEVELS { +STRUCT! {struct D3D12_FEATURE_DATA_FEATURE_LEVELS { NumFeatureLevels: UINT, pFeatureLevelsRequested: *const D3D_FEATURE_LEVEL, MaxSupportedFeatureLevel: D3D_FEATURE_LEVEL, }} -ENUM!{enum D3D_SHADER_MODEL { +ENUM! {enum D3D_SHADER_MODEL { D3D_SHADER_MODEL_5_1 = 0x51, D3D_SHADER_MODEL_6_0 = 0x60, D3D_SHADER_MODEL_6_1 = 0x61, @@ -921,45 +925,48 @@ ENUM!{enum D3D_SHADER_MODEL { D3D_SHADER_MODEL_6_3 = 0x63, D3D_SHADER_MODEL_6_4 = 0x64, D3D_SHADER_MODEL_6_5 = 0x65, + D3D_SHADER_MODEL_6_6 = 0x66, + D3D_SHADER_MODEL_6_7 = 0x67, }} -STRUCT!{struct D3D12_FEATURE_DATA_SHADER_MODEL { +STRUCT! {struct D3D12_FEATURE_DATA_SHADER_MODEL { HighestShaderModel: D3D_SHADER_MODEL, }} -STRUCT!{struct D3D12_FEATURE_DATA_FORMAT_SUPPORT { +STRUCT! {struct D3D12_FEATURE_DATA_FORMAT_SUPPORT { Format: DXGI_FORMAT, Support1: D3D12_FORMAT_SUPPORT1, Support2: D3D12_FORMAT_SUPPORT2, }} -STRUCT!{struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS { +STRUCT! {struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS { Format: DXGI_FORMAT, SampleCount: UINT, Flags: D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS, NumQualityLevels: UINT, }} -STRUCT!{struct D3D12_FEATURE_DATA_FORMAT_INFO { +STRUCT! {struct D3D12_FEATURE_DATA_FORMAT_INFO { Format: DXGI_FORMAT, PlaneCount: UINT8, }} -STRUCT!{struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT { +STRUCT! {struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT { MaxGPUVirtualAddressBitsPerResource: UINT, MaxGPUVirtualAddressBitsPerProcess: UINT, }} -ENUM!{enum D3D12_SHADER_CACHE_SUPPORT_FLAGS { +ENUM! {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_SHADER_CACHE_SUPPORT_DRIVER_MANAGED_CACHE = 0x10, }} -STRUCT!{struct D3D12_FEATURE_DATA_SHADER_CACHE { +STRUCT! {struct D3D12_FEATURE_DATA_SHADER_CACHE { SupportFlags: D3D12_SHADER_CACHE_SUPPORT_FLAGS, }} -STRUCT!{struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY { +STRUCT! {struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY { CommandListType: D3D12_COMMAND_LIST_TYPE, Priority: UINT, PriorityForTypeIsSupported: BOOL, }} -ENUM!{enum D3D12_COMMAND_LIST_SUPPORT_FLAGS { +ENUM! {enum D3D12_COMMAND_LIST_SUPPORT_FLAGS { D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0, D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 1 << D3D12_COMMAND_LIST_TYPE_DIRECT, D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 1 << D3D12_COMMAND_LIST_TYPE_BUNDLE, @@ -969,64 +976,77 @@ ENUM!{enum D3D12_COMMAND_LIST_SUPPORT_FLAGS { D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_PROCESS, D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 1 << D3D12_COMMAND_LIST_TYPE_VIDEO_ENCODE, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS3 { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS3 { CopyQueueTimestampQueriesSupported: BOOL, CastingFullyTypedFormatSupported: BOOL, WriteBufferImmediateSupportFlags: D3D12_COMMAND_LIST_SUPPORT_FLAGS, ViewInstancingTier: D3D12_VIEW_INSTANCING_TIER, BarycentricsSupported: BOOL, }} -STRUCT!{struct D3D12_FEATURE_DATA_EXISTING_HEAPS { +STRUCT! {struct D3D12_FEATURE_DATA_EXISTING_HEAPS { Supported: BOOL, }} -ENUM!{enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER { +ENUM! {enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER { D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0, D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = 1, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS4 { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS4 { MSAA64KBAlignedTextureSupported: BOOL, SharedResourceCompatibilityTier: D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER, Native16BitShaderOpsSupported: BOOL, }} -ENUM!{enum D3D12_HEAP_SERIALIZATION_TIER { +ENUM! {enum D3D12_HEAP_SERIALIZATION_TIER { D3D12_HEAP_SERIALIZATION_TIER_0 = 0, D3D12_HEAP_SERIALIZATION_TIER_10 = 10, }} -STRUCT!{struct D3D12_FEATURE_DATA_SERIALIZATION { +STRUCT! {struct D3D12_FEATURE_DATA_SERIALIZATION { NodeIndex: UINT, HeapSerializationTier: D3D12_HEAP_SERIALIZATION_TIER, }} -STRUCT!{struct D3D12_FEATURE_DATA_CROSS_NODE { +STRUCT! {struct D3D12_FEATURE_DATA_CROSS_NODE { SharingTier: D3D12_CROSS_NODE_SHARING_TIER, AtomicShaderInstructions: BOOL, }} -ENUM!{enum D3D12_RENDER_PASS_TIER { +ENUM! {enum D3D12_RENDER_PASS_TIER { D3D12_RENDER_PASS_TIER_0 = 0, D3D12_RENDER_PASS_TIER_1 = 1, D3D12_RENDER_PASS_TIER_2 = 2, }} -ENUM!{enum D3D12_RAYTRACING_TIER { +ENUM! {enum D3D12_RAYTRACING_TIER { D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0, D3D12_RAYTRACING_TIER_1_0 = 10, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS5 { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS5 { SRVOnlyTiledResourceTier3: BOOL, RenderPassesTier: D3D12_RENDER_PASS_TIER, RaytracingTier: D3D12_RAYTRACING_TIER, }} -ENUM!{enum D3D12_VARIABLE_SHADING_RATE_TIER { +ENUM! {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, }} -STRUCT!{struct D3D12_FEATURE_DATA_D3D12_OPTIONS6 { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS6 { AdditionalShadingRatesSupported: BOOL, PerPrimitiveShadingRateSupportedWithViewportIndexing: BOOL, VariableShadingRateTier: D3D12_VARIABLE_SHADING_RATE_TIER, ShadingRateImageTileSize: UINT, BackgroundProcessingSupported: BOOL, }} -STRUCT!{struct D3D12_FEATURE_DATA_QUERY_META_COMMAND { +ENUM! {enum D3D12_MESH_SHADER_TIER { + D3D12_MESH_SHADER_TIER_NOT_SUPPORTED = 0, + D3D12_MESH_SHADER_TIER_1 = 10, +}} +ENUM! {enum D3D12_SAMPLER_FEEDBACK_TIER { + D3D12_SAMPLER_FEEDBACK_TIER_NOT_SUPPORTED = 0, + D3D12_SAMPLER_FEEDBACK_TIER_0_9 = 90, + D3D12_SAMPLER_FEEDBACK_TIER_1_0 = 100, +}} +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS7 { + MeshShaderTier: D3D12_MESH_SHADER_TIER, + SamplerFeedbackTier: D3D12_SAMPLER_FEEDBACK_TIER, +}} +STRUCT! {struct D3D12_FEATURE_DATA_QUERY_META_COMMAND { CommandId: GUID, NodeMask: UINT, pQueryInputData: *const c_void, @@ -1034,40 +1054,83 @@ STRUCT!{struct D3D12_FEATURE_DATA_QUERY_META_COMMAND { pQueryOutputData: *mut c_void, QueryOutputDataSizeInBytes: SIZE_T, }} -STRUCT!{struct D3D12_RESOURCE_ALLOCATION_INFO { +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS8{ + UnalignedBlockTexturesSupported: BOOL, +}} +ENUM! {enum D3D12_WAVE_MMA_TIER { + D3D12_WAVE_MMA_TIER_NOT_SUPPORTED = 0, + D3D12_WAVE_MMA_TIER_1_0 = 10, +}} +STRUCT! {struct D3D12_FEATURE_DATA_D3D12_OPTIONS9 { + MeshShaderPipelineStatsSupported: BOOL, + MeshShaderSupportsFullRangeRenderTargetArrayIndex: BOOL, + AtomicInt64OnTypedResourceSupported: BOOL, + AtomicInt64OnGroupSharedSupported: BOOL, + DerivativesInMeshAndAmplificationShadersSupported: BOOL, + WaveMMATier: D3D12_WAVE_MMA_TIER, +}} +ENUM! {enum D3D12_WAVE_MMA_INPUT_DATATYPE { + D3D12_WAVE_MMA_INPUT_DATATYPE_INVALID = 0, + D3D12_WAVE_MMA_INPUT_DATATYPE_BYTE, + D3D12_WAVE_MMA_INPUT_DATATYPE_FLOAT16, + D3D12_WAVE_MMA_INPUT_DATATYPE_FLOAT, +}} +ENUM! {enum D3D12_WAVE_MMA_DIMENSION { + D3D12_WAVE_MMA_DIMENSION_INVALID = 0, + D3D12_WAVE_MMA_DIMENSION_16, + D3D12_WAVE_MMA_DIMENSION_64, + // Expandable to other M sizes if needed +}} +ENUM! {enum D3D12_WAVE_MMA_ACCUM_DATATYPE { + D3D12_WAVE_MMA_ACCUM_DATATYPE_NONE = 0, + D3D12_WAVE_MMA_ACCUM_DATATYPE_INT32 = 0x1, + D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT16 = 0x2, + D3D12_WAVE_MMA_ACCUM_DATATYPE_FLOAT = 0x4, +}} +STRUCT! {struct D3D12_FEATURE_DATA_WAVE_MMA { + InputDataType: D3D12_WAVE_MMA_INPUT_DATATYPE, + M: D3D12_WAVE_MMA_DIMENSION, + N: D3D12_WAVE_MMA_DIMENSION, + Supported: BOOL, + K: UINT, + AccumDataTypes: D3D12_WAVE_MMA_ACCUM_DATATYPE, + RequiredWaveLaneCountMin: UINT, + RequiredWaveLaneCountMax: UINT, +}} +STRUCT! {struct D3D12_RESOURCE_ALLOCATION_INFO { SizeInBytes: UINT64, Alignment: UINT64, }} -STRUCT!{struct D3D12_RESOURCE_ALLOCATION_INFO1 { +STRUCT! {struct D3D12_RESOURCE_ALLOCATION_INFO1 { Offset: UINT64, Alignment: UINT64, SizeInBytes: UINT64, }} -ENUM!{enum D3D12_HEAP_TYPE { +ENUM! {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!{enum D3D12_CPU_PAGE_PROPERTY { +ENUM! {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!{enum D3D12_MEMORY_POOL { +ENUM! {enum D3D12_MEMORY_POOL { D3D12_MEMORY_POOL_UNKNOWN = 0, D3D12_MEMORY_POOL_L0 = 1, D3D12_MEMORY_POOL_L1 = 2, }} -STRUCT!{struct D3D12_HEAP_PROPERTIES { +STRUCT! {struct D3D12_HEAP_PROPERTIES { Type: D3D12_HEAP_TYPE, CPUPageProperty: D3D12_CPU_PAGE_PROPERTY, MemoryPoolPreference: D3D12_MEMORY_POOL, CreationNodeMask: UINT, VisibleNodeMask: UINT, }} -ENUM!{enum D3D12_HEAP_FLAGS { +ENUM! {enum D3D12_HEAP_FLAGS { D3D12_HEAP_FLAG_NONE = 0, D3D12_HEAP_FLAG_SHARED = 0x1, D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4, @@ -1082,26 +1145,26 @@ ENUM!{enum D3D12_HEAP_FLAGS { D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44, D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84, }} -STRUCT!{struct D3D12_HEAP_DESC { +STRUCT! {struct D3D12_HEAP_DESC { SizeInBytes: UINT64, Properties: D3D12_HEAP_PROPERTIES, Alignment: UINT64, Flags: D3D12_HEAP_FLAGS, }} -ENUM!{enum D3D12_RESOURCE_DIMENSION { +ENUM! {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!{enum D3D12_TEXTURE_LAYOUT { +ENUM! {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!{enum D3D12_RESOURCE_FLAGS { +ENUM! {enum D3D12_RESOURCE_FLAGS { D3D12_RESOURCE_FLAG_NONE = 0, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1, D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2, @@ -1110,8 +1173,26 @@ ENUM!{enum D3D12_RESOURCE_FLAGS { D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10, D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20, D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40, + D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80, +}} +STRUCT! {struct D3D12_MIP_REGION{ + Width: UINT, + Height: UINT, + Depth: UINT, +}} +STRUCT! {struct D3D12_RESOURCE_DESC { + 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, }} -STRUCT!{struct D3D12_RESOURCE_DESC { +STRUCT! {struct D3D12_RESOURCE_DESC1 { Dimension: D3D12_RESOURCE_DIMENSION, Alignment: UINT64, Width: UINT64, @@ -1122,84 +1203,85 @@ STRUCT!{struct D3D12_RESOURCE_DESC { SampleDesc: DXGI_SAMPLE_DESC, Layout: D3D12_TEXTURE_LAYOUT, Flags: D3D12_RESOURCE_FLAGS, + SamplerFeedbackMipRegion: D3D12_MIP_REGION, }} -STRUCT!{struct D3D12_DEPTH_STENCIL_VALUE { +STRUCT! {struct D3D12_DEPTH_STENCIL_VALUE { Depth: FLOAT, Stencil: UINT8, }} -UNION!{union D3D12_CLEAR_VALUE_u { +UNION! {union D3D12_CLEAR_VALUE_u { [u32; 4], Color Color_mut: [FLOAT; 4], DepthStencil DepthStencil_mut: D3D12_DEPTH_STENCIL_VALUE, }} -STRUCT!{struct D3D12_CLEAR_VALUE { +STRUCT! {struct D3D12_CLEAR_VALUE { Format: DXGI_FORMAT, u: D3D12_CLEAR_VALUE_u, }} -STRUCT!{struct D3D12_RANGE { +STRUCT! {struct D3D12_RANGE { Begin: SIZE_T, End: SIZE_T, }} -STRUCT!{struct D3D12_RANGE_UINT64 { +STRUCT! {struct D3D12_RANGE_UINT64 { Begin: UINT64, End: UINT64, }} -STRUCT!{struct D3D12_SUBRESOURCE_RANGE_UINT64 { +STRUCT! {struct D3D12_SUBRESOURCE_RANGE_UINT64 { Subresource: UINT, Range: D3D12_RANGE_UINT64, }} -STRUCT!{struct D3D12_SUBRESOURCE_INFO { +STRUCT! {struct D3D12_SUBRESOURCE_INFO { Offset: UINT64, RowPitch: UINT, DepthPitch: UINT, }} -STRUCT!{struct D3D12_TILED_RESOURCE_COORDINATE { +STRUCT! {struct D3D12_TILED_RESOURCE_COORDINATE { X: UINT, Y: UINT, Z: UINT, Subresource: UINT, }} -STRUCT!{struct D3D12_TILE_REGION_SIZE { +STRUCT! {struct D3D12_TILE_REGION_SIZE { NumTiles: UINT, UseBox: BOOL, Width: UINT, Height: UINT16, Depth: UINT16, }} -ENUM!{enum D3D12_TILE_RANGE_FLAGS { +ENUM! {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, }} -STRUCT!{struct D3D12_SUBRESOURCE_TILING { +STRUCT! {struct D3D12_SUBRESOURCE_TILING { WidthInTiles: UINT, HeightInTiles: UINT16, DepthInTiles: UINT16, StartTileIndexInOverallResource: UINT, }} -STRUCT!{struct D3D12_TILE_SHAPE { +STRUCT! {struct D3D12_TILE_SHAPE { WidthInTexels: UINT, HeightInTexels: UINT, DepthInTexels: UINT, }} -STRUCT!{struct D3D12_PACKED_MIP_INFO { +STRUCT! {struct D3D12_PACKED_MIP_INFO { NumStandardMips: UINT8, NumPackedMips: UINT8, NumTilesForPackedMips: UINT, StartTileIndexInOverallResource: UINT, }} -ENUM!{enum D3D12_TILE_MAPPING_FLAGS { +ENUM! {enum D3D12_TILE_MAPPING_FLAGS { D3D12_TILE_MAPPING_FLAG_NONE = 0, D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1, }} -ENUM!{enum D3D12_TILE_COPY_FLAGS { +ENUM! {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!{enum D3D12_RESOURCE_STATES { +ENUM! {enum D3D12_RESOURCE_STATES { D3D12_RESOURCE_STATE_COMMON = 0, D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1, D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2, @@ -1218,6 +1300,7 @@ ENUM!{enum D3D12_RESOURCE_STATES { D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000, D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000, D3D12_RESOURCE_STATE_GENERIC_READ = 0x1 | 0x2 | 0x40 | 0x80 | 0x200 | 0x800, + D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE = 0x40 | 0x80, D3D12_RESOURCE_STATE_PRESENT = 0, D3D12_RESOURCE_STATE_PREDICATION = 0x200, D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000, @@ -1227,76 +1310,76 @@ ENUM!{enum D3D12_RESOURCE_STATES { D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000, D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000, }} -ENUM!{enum D3D12_RESOURCE_BARRIER_TYPE { +ENUM! {enum D3D12_RESOURCE_BARRIER_TYPE { D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0, D3D12_RESOURCE_BARRIER_TYPE_ALIASING = 1, D3D12_RESOURCE_BARRIER_TYPE_UAV = 2, }} -STRUCT!{struct D3D12_RESOURCE_TRANSITION_BARRIER { +STRUCT! {struct D3D12_RESOURCE_TRANSITION_BARRIER { pResource: *mut ID3D12Resource, Subresource: UINT, StateBefore: D3D12_RESOURCE_STATES, StateAfter: D3D12_RESOURCE_STATES, }} -STRUCT!{struct D3D12_RESOURCE_ALIASING_BARRIER { +STRUCT! {struct D3D12_RESOURCE_ALIASING_BARRIER { pResourceBefore: *mut ID3D12Resource, pResourceAfter: *mut ID3D12Resource, }} -STRUCT!{struct D3D12_RESOURCE_UAV_BARRIER { +STRUCT! {struct D3D12_RESOURCE_UAV_BARRIER { pResource: *mut ID3D12Resource, }} -ENUM!{enum D3D12_RESOURCE_BARRIER_FLAGS { +ENUM! {enum D3D12_RESOURCE_BARRIER_FLAGS { D3D12_RESOURCE_BARRIER_FLAG_NONE = 0x0, D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1, D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2, }} -UNION!{union D3D12_RESOURCE_BARRIER_u { +UNION! {union D3D12_RESOURCE_BARRIER_u { [u32; 4] [u64; 3], Transition Transition_mut: D3D12_RESOURCE_TRANSITION_BARRIER, Aliasing Aliasing_mut: D3D12_RESOURCE_ALIASING_BARRIER, UAV UAV_mut: D3D12_RESOURCE_UAV_BARRIER, }} -STRUCT!{struct D3D12_RESOURCE_BARRIER { +STRUCT! {struct D3D12_RESOURCE_BARRIER { Type: D3D12_RESOURCE_BARRIER_TYPE, Flags: D3D12_RESOURCE_BARRIER_FLAGS, u: D3D12_RESOURCE_BARRIER_u, }} -STRUCT!{struct D3D12_SUBRESOURCE_FOOTPRINT { +STRUCT! {struct D3D12_SUBRESOURCE_FOOTPRINT { Format: DXGI_FORMAT, Width: UINT, Height: UINT, Depth: UINT, RowPitch: UINT, }} -STRUCT!{struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT { +STRUCT! {struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT { Offset: UINT64, Footprint: D3D12_SUBRESOURCE_FOOTPRINT, }} -ENUM!{enum D3D12_TEXTURE_COPY_TYPE { +ENUM! {enum D3D12_TEXTURE_COPY_TYPE { D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0, D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1, }} -UNION!{union D3D12_TEXTURE_COPY_LOCATION_u { +UNION! {union D3D12_TEXTURE_COPY_LOCATION_u { [u64; 4], PlacedFootprint PlacedFootprint_mut: D3D12_PLACED_SUBRESOURCE_FOOTPRINT, SubresourceIndex SubresourceIndex_mut: UINT, }} -STRUCT!{struct D3D12_TEXTURE_COPY_LOCATION { +STRUCT! {struct D3D12_TEXTURE_COPY_LOCATION { pResource: *mut ID3D12Resource, Type: D3D12_TEXTURE_COPY_TYPE, u: D3D12_TEXTURE_COPY_LOCATION_u, }} -ENUM!{enum D3D12_RESOLVE_MODE { +ENUM! {enum D3D12_RESOLVE_MODE { D3D12_RESOLVE_MODE_DECOMPRESS = 0, D3D12_RESOLVE_MODE_MIN = 1, D3D12_RESOLVE_MODE_MAX = 2, D3D12_RESOLVE_MODE_AVERAGE = 3, }} -STRUCT!{struct D3D12_SAMPLE_POSITION { +STRUCT! {struct D3D12_SAMPLE_POSITION { X: INT8, Y: INT8, }} -ENUM!{enum D3D12_SHADER_COMPONENT_MAPPING { +ENUM! {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, @@ -1306,19 +1389,21 @@ ENUM!{enum D3D12_SHADER_COMPONENT_MAPPING { }} pub const D3D12_SHADER_COMPONENT_MAPPING_MASK: UINT = 0x7; pub const D3D12_SHADER_COMPONENT_MAPPING_SHIFT: UINT = 3; -pub const D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES: UINT = 1 - << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4); +pub const D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES: UINT = + 1 << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4); pub fn D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING( Src0: UINT, Src1: UINT, Src2: UINT, Src3: UINT, ) -> UINT { - (Src0 & D3D12_SHADER_COMPONENT_MAPPING_MASK) | - ((Src1 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT)) | - ((Src2 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) | - ((Src3 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) | - D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES + (Src0 & D3D12_SHADER_COMPONENT_MAPPING_MASK) + | ((Src1 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT)) + | ((Src2 & D3D12_SHADER_COMPONENT_MAPPING_MASK) + << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) + | ((Src3 & D3D12_SHADER_COMPONENT_MAPPING_MASK) + << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) + | D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES } pub fn D3D12_DECODE_SHADER_4_COMPONENT_MAPPING( ComponentToExtract: UINT, @@ -1328,37 +1413,37 @@ pub fn D3D12_DECODE_SHADER_4_COMPONENT_MAPPING( & D3D12_SHADER_COMPONENT_MAPPING_MASK) as u32 } pub fn D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING() -> UINT { - D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0,1,2,3) + D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3) } -ENUM!{enum D3D12_BUFFER_SRV_FLAGS { +ENUM! {enum D3D12_BUFFER_SRV_FLAGS { D3D12_BUFFER_SRV_FLAG_NONE = 0x0, D3D12_BUFFER_SRV_FLAG_RAW = 0x1, }} -STRUCT!{struct D3D12_BUFFER_SRV { +STRUCT! {struct D3D12_BUFFER_SRV { FirstElement: UINT64, NumElements: UINT, StructureByteStride: UINT, Flags: D3D12_BUFFER_SRV_FLAGS, }} -STRUCT!{struct D3D12_TEX1D_SRV { +STRUCT! {struct D3D12_TEX1D_SRV { MostDetailedMip: UINT, MipLevels: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEX1D_ARRAY_SRV { +STRUCT! {struct D3D12_TEX1D_ARRAY_SRV { MostDetailedMip: UINT, MipLevels: UINT, FirstArraySlice: UINT, ArraySize: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEX2D_SRV { +STRUCT! {struct D3D12_TEX2D_SRV { MostDetailedMip: UINT, MipLevels: UINT, PlaneSlice: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEX2D_ARRAY_SRV { +STRUCT! {struct D3D12_TEX2D_ARRAY_SRV { MostDetailedMip: UINT, MipLevels: UINT, FirstArraySlice: UINT, @@ -1366,34 +1451,34 @@ STRUCT!{struct D3D12_TEX2D_ARRAY_SRV { PlaneSlice: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEX3D_SRV { +STRUCT! {struct D3D12_TEX3D_SRV { MostDetailedMip: UINT, MipLevels: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEXCUBE_SRV { +STRUCT! {struct D3D12_TEXCUBE_SRV { MostDetailedMip: UINT, MipLevels: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEXCUBE_ARRAY_SRV { +STRUCT! {struct D3D12_TEXCUBE_ARRAY_SRV { MostDetailedMip: UINT, MipLevels: UINT, First2DArrayFace: UINT, NumCubes: UINT, ResourceMinLODClamp: FLOAT, }} -STRUCT!{struct D3D12_TEX2DMS_SRV { +STRUCT! {struct D3D12_TEX2DMS_SRV { UnusedField_NothingToDefine: UINT, }} -STRUCT!{struct D3D12_TEX2DMS_ARRAY_SRV { +STRUCT! {struct D3D12_TEX2DMS_ARRAY_SRV { FirstArraySlice: UINT, ArraySize: UINT, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV { Location: D3D12_GPU_VIRTUAL_ADDRESS, }} -ENUM!{enum D3D12_SRV_DIMENSION { +ENUM! {enum D3D12_SRV_DIMENSION { D3D12_SRV_DIMENSION_UNKNOWN = 0, D3D12_SRV_DIMENSION_BUFFER = 1, D3D12_SRV_DIMENSION_TEXTURE1D = 2, @@ -1407,7 +1492,7 @@ ENUM!{enum D3D12_SRV_DIMENSION { D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10, D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE = 11, }} -UNION!{union D3D12_SHADER_RESOURCE_VIEW_DESC_u { +UNION! {union D3D12_SHADER_RESOURCE_VIEW_DESC_u { [u64; 3], Buffer Buffer_mut: D3D12_BUFFER_SRV, Texture1D Texture1D_mut: D3D12_TEX1D_SRV, @@ -1422,17 +1507,17 @@ UNION!{union D3D12_SHADER_RESOURCE_VIEW_DESC_u { RaytracingAccelerationStructure RaytracingAccelerationStructure_mut : D3D12_RAYTRACING_ACCELERATION_STRUCTURE_SRV, }} -STRUCT!{struct D3D12_SHADER_RESOURCE_VIEW_DESC { +STRUCT! {struct D3D12_SHADER_RESOURCE_VIEW_DESC { Format: DXGI_FORMAT, ViewDimension: D3D12_SRV_DIMENSION, Shader4ComponentMapping: UINT, u: D3D12_SHADER_RESOURCE_VIEW_DESC_u, }} -STRUCT!{struct D3D12_CONSTANT_BUFFER_VIEW_DESC { +STRUCT! {struct D3D12_CONSTANT_BUFFER_VIEW_DESC { BufferLocation: D3D12_GPU_VIRTUAL_ADDRESS, SizeInBytes: UINT, }} -ENUM!{enum D3D12_FILTER { +ENUM! {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, @@ -1470,11 +1555,11 @@ ENUM!{enum D3D12_FILTER { D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195, D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5, }} -ENUM!{enum D3D12_FILTER_TYPE { +ENUM! {enum D3D12_FILTER_TYPE { D3D12_FILTER_TYPE_POINT = 0, D3D12_FILTER_TYPE_LINEAR = 1, }} -ENUM!{enum D3D12_FILTER_REDUCTION_TYPE { +ENUM! {enum D3D12_FILTER_REDUCTION_TYPE { D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0, D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1, D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2, @@ -1493,62 +1578,49 @@ pub fn D3D12_ENCODE_BASIC_FILTER( mip: D3D12_FILTER_TYPE, reduction: D3D12_FILTER_REDUCTION_TYPE, ) -> D3D12_FILTER { - ((min & D3D12_FILTER_TYPE_MASK) << D3D12_MIN_FILTER_SHIFT) | - ((mag & D3D12_FILTER_TYPE_MASK) << D3D12_MAG_FILTER_SHIFT) | - ((mip & D3D12_FILTER_TYPE_MASK) << D3D12_MIP_FILTER_SHIFT) | - ((reduction & D3D12_FILTER_REDUCTION_TYPE_MASK ) << D3D12_FILTER_REDUCTION_TYPE_SHIFT) + ((min & D3D12_FILTER_TYPE_MASK) << D3D12_MIN_FILTER_SHIFT) + | ((mag & D3D12_FILTER_TYPE_MASK) << D3D12_MAG_FILTER_SHIFT) + | ((mip & D3D12_FILTER_TYPE_MASK) << D3D12_MIP_FILTER_SHIFT) + | ((reduction & D3D12_FILTER_REDUCTION_TYPE_MASK) << D3D12_FILTER_REDUCTION_TYPE_SHIFT) } -pub fn D3D12_ENCODE_ANISOTROPIC_FILTER( - reduction: D3D12_FILTER_REDUCTION_TYPE, -) -> D3D12_FILTER { - D3D12_ANISOTROPIC_FILTERING_BIT | - D3D12_ENCODE_BASIC_FILTER( - D3D12_FILTER_TYPE_LINEAR, - D3D12_FILTER_TYPE_LINEAR, - D3D12_FILTER_TYPE_LINEAR, - reduction) +pub fn D3D12_ENCODE_ANISOTROPIC_FILTER(reduction: D3D12_FILTER_REDUCTION_TYPE) -> D3D12_FILTER { + D3D12_ANISOTROPIC_FILTERING_BIT + | D3D12_ENCODE_BASIC_FILTER( + D3D12_FILTER_TYPE_LINEAR, + D3D12_FILTER_TYPE_LINEAR, + D3D12_FILTER_TYPE_LINEAR, + reduction, + ) } -pub fn D3D12_DECODE_MIN_FILTER( - filter: D3D12_FILTER, -) -> D3D12_FILTER { +pub fn D3D12_DECODE_MIN_FILTER(filter: D3D12_FILTER) -> D3D12_FILTER { (filter >> D3D12_MIN_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK } -pub fn D3D12_DECODE_MAG_FILTER( - filter: D3D12_FILTER, -) -> D3D12_FILTER { +pub fn D3D12_DECODE_MAG_FILTER(filter: D3D12_FILTER) -> D3D12_FILTER { (filter >> D3D12_MAG_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK } -pub fn D3D12_DECODE_MIP_FILTER( - filter: D3D12_FILTER, -) -> D3D12_FILTER { +pub fn D3D12_DECODE_MIP_FILTER(filter: D3D12_FILTER) -> D3D12_FILTER { (filter >> D3D12_MIP_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK } -pub fn D3D12_DECODE_FILTER_REDUCTION( - filter: D3D12_FILTER, -) -> D3D12_FILTER { +pub fn D3D12_DECODE_FILTER_REDUCTION(filter: D3D12_FILTER) -> D3D12_FILTER { (filter >> D3D12_FILTER_REDUCTION_TYPE_SHIFT) & D3D12_FILTER_REDUCTION_TYPE_MASK } -pub fn D3D12_DECODE_IS_COMPARISON_FILTER( - filter: D3D12_FILTER, -) -> bool { +pub fn D3D12_DECODE_IS_COMPARISON_FILTER(filter: D3D12_FILTER) -> bool { D3D12_DECODE_FILTER_REDUCTION(filter) == D3D12_FILTER_REDUCTION_TYPE_COMPARISON } -pub fn D3D12_DECODE_IS_ANISOTROPIC_FILTER( - filter: D3D12_FILTER, -) -> bool { - ((filter & D3D12_ANISOTROPIC_FILTERING_BIT) != 0) && - (D3D12_DECODE_MIN_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) && - (D3D12_DECODE_MAG_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) && - (D3D12_DECODE_MIP_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) +pub fn D3D12_DECODE_IS_ANISOTROPIC_FILTER(filter: D3D12_FILTER) -> bool { + ((filter & D3D12_ANISOTROPIC_FILTERING_BIT) != 0) + && (D3D12_DECODE_MIN_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) + && (D3D12_DECODE_MAG_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) + && (D3D12_DECODE_MIP_FILTER(filter) == D3D12_FILTER_TYPE_LINEAR) } -ENUM!{enum D3D12_TEXTURE_ADDRESS_MODE { +ENUM! {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, }} -STRUCT!{struct D3D12_SAMPLER_DESC { +STRUCT! {struct D3D12_SAMPLER_DESC { Filter: D3D12_FILTER, AddressU: D3D12_TEXTURE_ADDRESS_MODE, AddressV: D3D12_TEXTURE_ADDRESS_MODE, @@ -1560,41 +1632,41 @@ STRUCT!{struct D3D12_SAMPLER_DESC { MinLOD: FLOAT, MaxLOD: FLOAT, }} -ENUM!{enum D3D12_BUFFER_UAV_FLAGS { +ENUM! {enum D3D12_BUFFER_UAV_FLAGS { D3D12_BUFFER_UAV_FLAG_NONE = 0, D3D12_BUFFER_UAV_FLAG_RAW = 0x1, }} -STRUCT!{struct D3D12_BUFFER_UAV { +STRUCT! {struct D3D12_BUFFER_UAV { FirstElement: UINT64, NumElements: UINT, StructureByteStride: UINT, CounterOffsetInBytes: UINT64, Flags: D3D12_BUFFER_UAV_FLAGS, }} -STRUCT!{struct D3D12_TEX1D_UAV { +STRUCT! {struct D3D12_TEX1D_UAV { MipSlice: UINT, }} -STRUCT!{struct D3D12_TEX1D_ARRAY_UAV { +STRUCT! {struct D3D12_TEX1D_ARRAY_UAV { MipSlice: UINT, FirstArraySlice: UINT, ArraySize: UINT, }} -STRUCT!{struct D3D12_TEX2D_UAV { +STRUCT! {struct D3D12_TEX2D_UAV { MipSlice: UINT, PlaneSlice: UINT, }} -STRUCT!{struct D3D12_TEX2D_ARRAY_UAV { +STRUCT! {struct D3D12_TEX2D_ARRAY_UAV { MipSlice: UINT, FirstArraySlice: UINT, ArraySize: UINT, PlaneSlice: UINT, }} -STRUCT!{struct D3D12_TEX3D_UAV { +STRUCT! {struct D3D12_TEX3D_UAV { MipSlice: UINT, FirstWSlice: UINT, WSize: UINT, }} -ENUM!{enum D3D12_UAV_DIMENSION { +ENUM! {enum D3D12_UAV_DIMENSION { D3D12_UAV_DIMENSION_UNKNOWN = 0, D3D12_UAV_DIMENSION_BUFFER = 1, D3D12_UAV_DIMENSION_TEXTURE1D = 2, @@ -1603,7 +1675,7 @@ ENUM!{enum D3D12_UAV_DIMENSION { D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5, D3D12_UAV_DIMENSION_TEXTURE3D = 8, }} -UNION!{union D3D12_UNORDERED_ACCESS_VIEW_DESC_u { +UNION! {union D3D12_UNORDERED_ACCESS_VIEW_DESC_u { [u64; 4], Buffer Buffer_mut: D3D12_BUFFER_UAV, Texture1D Texture1D_mut: D3D12_TEX1D_UAV, @@ -1612,46 +1684,46 @@ UNION!{union D3D12_UNORDERED_ACCESS_VIEW_DESC_u { Texture2DArray Texture2DArray_mut: D3D12_TEX2D_ARRAY_UAV, Texture3D Texture3D_mut: D3D12_TEX3D_UAV, }} -STRUCT!{struct D3D12_UNORDERED_ACCESS_VIEW_DESC { +STRUCT! {struct D3D12_UNORDERED_ACCESS_VIEW_DESC { Format: DXGI_FORMAT, ViewDimension: D3D12_UAV_DIMENSION, u: D3D12_UNORDERED_ACCESS_VIEW_DESC_u, }} -STRUCT!{struct D3D12_BUFFER_RTV { +STRUCT! {struct D3D12_BUFFER_RTV { FirstElement: UINT64, NumElements: UINT, }} -STRUCT!{struct D3D12_TEX1D_RTV { +STRUCT! {struct D3D12_TEX1D_RTV { MipSlice: UINT, }} -STRUCT!{struct D3D12_TEX1D_ARRAY_RTV { +STRUCT! {struct D3D12_TEX1D_ARRAY_RTV { MipSlice: UINT, FirstArraySlice: UINT, ArraySize: UINT, }} -STRUCT!{struct D3D12_TEX2D_RTV { +STRUCT! {struct D3D12_TEX2D_RTV { MipSlice: UINT, PlaneSlice: UINT, }} -STRUCT!{struct D3D12_TEX2DMS_RTV { +STRUCT! {struct D3D12_TEX2DMS_RTV { UnusedField_NothingToDefine: UINT, }} -STRUCT!{struct D3D12_TEX2D_ARRAY_RTV { +STRUCT! {struct D3D12_TEX2D_ARRAY_RTV { MipSlice: UINT, FirstArraySlice: UINT, ArraySize: UINT, PlaneSlice: UINT, }} -STRUCT!{struct D3D12_TEX2DMS_ARRAY_RTV { +STRUCT! {struct D3D12_TEX2DMS_ARRAY_RTV { FirstArraySlice: UINT, ArraySize: UINT, }} -STRUCT!{struct D3D12_TEX3D_RTV { +STRUCT! {struct D3D12_TEX3D_RTV { MipSlice: UINT, FirstWSlice: UINT, WSize: UINT, }} -ENUM!{enum D3D12_RTV_DIMENSION { +ENUM! {enum D3D12_RTV_DIMENSION { D3D12_RTV_DIMENSION_UNKNOWN = 0, D3D12_RTV_DIMENSION_BUFFER = 1, D3D12_RTV_DIMENSION_TEXTURE1D = 2, @@ -1662,7 +1734,7 @@ ENUM!{enum D3D12_RTV_DIMENSION { D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7, D3D12_RTV_DIMENSION_TEXTURE3D = 8, }} -UNION!{union D3D12_RENDER_TARGET_VIEW_DESC_u { +UNION! {union D3D12_RENDER_TARGET_VIEW_DESC_u { [u64; 2], Buffer Buffer_mut: D3D12_BUFFER_RTV, Texture1D Texture1D_mut: D3D12_TEX1D_RTV, @@ -1673,40 +1745,40 @@ UNION!{union D3D12_RENDER_TARGET_VIEW_DESC_u { Texture2DMSArray Texture2DMSArray_mut: D3D12_TEX2DMS_ARRAY_RTV, Texture3D Texture3D_mut: D3D12_TEX3D_RTV, }} -STRUCT!{struct D3D12_RENDER_TARGET_VIEW_DESC { +STRUCT! {struct D3D12_RENDER_TARGET_VIEW_DESC { Format: DXGI_FORMAT, ViewDimension: D3D12_RTV_DIMENSION, u: D3D12_RENDER_TARGET_VIEW_DESC_u, }} -STRUCT!{struct D3D12_TEX1D_DSV { +STRUCT! {struct D3D12_TEX1D_DSV { MipSlice: UINT, }} -STRUCT!{struct D3D12_TEX1D_ARRAY_DSV { +STRUCT! {struct D3D12_TEX1D_ARRAY_DSV { MipSlice: UINT, FirstArraySlice: UINT, ArraySize: UINT, }} -STRUCT!{struct D3D12_TEX2D_DSV { +STRUCT! {struct D3D12_TEX2D_DSV { MipSlice: UINT, }} -STRUCT!{struct D3D12_TEX2D_ARRAY_DSV { +STRUCT! {struct D3D12_TEX2D_ARRAY_DSV { MipSlice: UINT, FirstArraySlice: UINT, ArraySize: UINT, }} -STRUCT!{struct D3D12_TEX2DMS_DSV { +STRUCT! {struct D3D12_TEX2DMS_DSV { UnusedField_NothingToDefine: UINT, }} -STRUCT!{struct D3D12_TEX2DMS_ARRAY_DSV { +STRUCT! {struct D3D12_TEX2DMS_ARRAY_DSV { FirstArraySlice: UINT, ArraySize: UINT, }} -ENUM!{enum D3D12_DSV_FLAGS { +ENUM! {enum D3D12_DSV_FLAGS { D3D12_DSV_FLAG_NONE = 0x0, D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1, D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2, }} -ENUM!{enum D3D12_DSV_DIMENSION { +ENUM! {enum D3D12_DSV_DIMENSION { D3D12_DSV_DIMENSION_UNKNOWN = 0, D3D12_DSV_DIMENSION_TEXTURE1D = 1, D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2, @@ -1715,7 +1787,7 @@ ENUM!{enum D3D12_DSV_DIMENSION { D3D12_DSV_DIMENSION_TEXTURE2DMS = 5, D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6, }} -UNION!{union D3D12_DEPTH_STENCIL_VIEW_DESC_u { +UNION! {union D3D12_DEPTH_STENCIL_VIEW_DESC_u { [u32; 3], Texture1D Texture1D_mut: D3D12_TEX1D_DSV, Texture1DArray Texture1DArray_mut: D3D12_TEX1D_ARRAY_DSV, @@ -1724,66 +1796,66 @@ UNION!{union D3D12_DEPTH_STENCIL_VIEW_DESC_u { Texture2DMS Texture2DMS_mut: D3D12_TEX2DMS_DSV, Texture2DMSArray Texture2DMSArray_mut: D3D12_TEX2DMS_ARRAY_DSV, }} -STRUCT!{struct D3D12_DEPTH_STENCIL_VIEW_DESC { +STRUCT! {struct D3D12_DEPTH_STENCIL_VIEW_DESC { Format: DXGI_FORMAT, ViewDimension: D3D12_DSV_DIMENSION, Flags: D3D12_DSV_FLAGS, u: D3D12_DEPTH_STENCIL_VIEW_DESC_u, }} -ENUM!{enum D3D12_CLEAR_FLAGS { +ENUM! {enum D3D12_CLEAR_FLAGS { D3D12_CLEAR_FLAG_DEPTH = 0x1, D3D12_CLEAR_FLAG_STENCIL = 0x2, }} -ENUM!{enum D3D12_FENCE_FLAGS { +ENUM! {enum D3D12_FENCE_FLAGS { D3D12_FENCE_FLAG_NONE = 0x0, D3D12_FENCE_FLAG_SHARED = 0x1, D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2, D3D12_FENCE_FLAG_NON_MONITORED = 0x4, }} -ENUM!{enum D3D12_DESCRIPTOR_HEAP_TYPE { +ENUM! {enum D3D12_DESCRIPTOR_HEAP_TYPE { D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0, D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = 1, D3D12_DESCRIPTOR_HEAP_TYPE_RTV = 2, D3D12_DESCRIPTOR_HEAP_TYPE_DSV = 3, D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = 4, }} -ENUM!{enum D3D12_DESCRIPTOR_HEAP_FLAGS { +ENUM! {enum D3D12_DESCRIPTOR_HEAP_FLAGS { D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0x0, D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1, }} -STRUCT!{struct D3D12_DESCRIPTOR_HEAP_DESC { +STRUCT! {struct D3D12_DESCRIPTOR_HEAP_DESC { Type: D3D12_DESCRIPTOR_HEAP_TYPE, NumDescriptors: UINT, Flags: D3D12_DESCRIPTOR_HEAP_FLAGS, NodeMask: UINT, }} -ENUM!{enum D3D12_DESCRIPTOR_RANGE_TYPE { +ENUM! {enum D3D12_DESCRIPTOR_RANGE_TYPE { D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0, D3D12_DESCRIPTOR_RANGE_TYPE_UAV = 1, D3D12_DESCRIPTOR_RANGE_TYPE_CBV = 2, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = 3, }} -STRUCT!{struct D3D12_DESCRIPTOR_RANGE { +STRUCT! {struct D3D12_DESCRIPTOR_RANGE { RangeType: D3D12_DESCRIPTOR_RANGE_TYPE, NumDescriptors: UINT, BaseShaderRegister: UINT, RegisterSpace: UINT, OffsetInDescriptorsFromTableStart: UINT, }} -STRUCT!{struct D3D12_ROOT_DESCRIPTOR_TABLE { +STRUCT! {struct D3D12_ROOT_DESCRIPTOR_TABLE { NumDescriptorRanges: UINT, pDescriptorRanges: *const D3D12_DESCRIPTOR_RANGE, }} -STRUCT!{struct D3D12_ROOT_CONSTANTS { +STRUCT! {struct D3D12_ROOT_CONSTANTS { ShaderRegister: UINT, RegisterSpace: UINT, Num32BitValues: UINT, }} -STRUCT!{struct D3D12_ROOT_DESCRIPTOR { +STRUCT! {struct D3D12_ROOT_DESCRIPTOR { ShaderRegister: UINT, RegisterSpace: UINT, }} -ENUM!{enum D3D12_SHADER_VISIBILITY { +ENUM! {enum D3D12_SHADER_VISIBILITY { D3D12_SHADER_VISIBILITY_ALL = 0, D3D12_SHADER_VISIBILITY_VERTEX = 1, D3D12_SHADER_VISIBILITY_HULL = 2, @@ -1791,25 +1863,25 @@ ENUM!{enum D3D12_SHADER_VISIBILITY { D3D12_SHADER_VISIBILITY_GEOMETRY = 4, D3D12_SHADER_VISIBILITY_PIXEL = 5, }} -ENUM!{enum D3D12_ROOT_PARAMETER_TYPE { +ENUM! {enum D3D12_ROOT_PARAMETER_TYPE { D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0, D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = 1, D3D12_ROOT_PARAMETER_TYPE_CBV = 2, D3D12_ROOT_PARAMETER_TYPE_SRV = 3, D3D12_ROOT_PARAMETER_TYPE_UAV = 4, }} -UNION!{union D3D12_ROOT_PARAMETER_u { +UNION! {union D3D12_ROOT_PARAMETER_u { [u32; 3] [u64; 2], DescriptorTable DescriptorTable_mut: D3D12_ROOT_DESCRIPTOR_TABLE, Constants Constants_mut: D3D12_ROOT_CONSTANTS, Descriptor Descriptor_mut: D3D12_ROOT_DESCRIPTOR, }} -STRUCT!{struct D3D12_ROOT_PARAMETER { +STRUCT! {struct D3D12_ROOT_PARAMETER { ParameterType: D3D12_ROOT_PARAMETER_TYPE, u: D3D12_ROOT_PARAMETER_u, ShaderVisibility: D3D12_SHADER_VISIBILITY, }} -ENUM!{enum D3D12_ROOT_SIGNATURE_FLAGS { +ENUM! {enum D3D12_ROOT_SIGNATURE_FLAGS { D3D12_ROOT_SIGNATURE_FLAG_NONE = 0x0, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1, D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2, @@ -1819,13 +1891,17 @@ ENUM!{enum D3D12_ROOT_SIGNATURE_FLAGS { 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, + D3D12_ROOT_SIGNATURE_FLAG_DENY_AMPLIFICATION_SHADER_ROOT_ACCESS = 0x100, + D3D12_ROOT_SIGNATURE_FLAG_DENY_MESH_SHADER_ROOT_ACCESS = 0x200, + D3D12_ROOT_SIGNATURE_FLAG_CBV_SRV_UAV_HEAP_DIRECTLY_INDEXED = 0x400, + D3D12_ROOT_SIGNATURE_FLAG_SAMPLER_HEAP_DIRECTLY_INDEXED = 0x800, }} -ENUM!{enum D3D12_STATIC_BORDER_COLOR { +ENUM! {enum D3D12_STATIC_BORDER_COLOR { D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0, D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = 1, D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = 2, }} -STRUCT!{struct D3D12_STATIC_SAMPLER_DESC { +STRUCT! {struct D3D12_STATIC_SAMPLER_DESC { Filter: D3D12_FILTER, AddressU: D3D12_TEXTURE_ADDRESS_MODE, AddressV: D3D12_TEXTURE_ADDRESS_MODE, @@ -1840,14 +1916,14 @@ STRUCT!{struct D3D12_STATIC_SAMPLER_DESC { RegisterSpace: UINT, ShaderVisibility: D3D12_SHADER_VISIBILITY, }} -STRUCT!{struct D3D12_ROOT_SIGNATURE_DESC { +STRUCT! {struct D3D12_ROOT_SIGNATURE_DESC { NumParameters: UINT, pParameters: *const D3D12_ROOT_PARAMETER, NumStaticSamplers: UINT, pStaticSamplers: *const D3D12_STATIC_SAMPLER_DESC, Flags: D3D12_ROOT_SIGNATURE_FLAGS, }} -ENUM!{enum D3D12_DESCRIPTOR_RANGE_FLAGS { +ENUM! {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, @@ -1855,7 +1931,7 @@ ENUM!{enum D3D12_DESCRIPTOR_RANGE_FLAGS { D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8, D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000, }} -STRUCT!{struct D3D12_DESCRIPTOR_RANGE1 { +STRUCT! {struct D3D12_DESCRIPTOR_RANGE1 { RangeType: D3D12_DESCRIPTOR_RANGE_TYPE, NumDescriptors: UINT, BaseShaderRegister: UINT, @@ -1863,54 +1939,54 @@ STRUCT!{struct D3D12_DESCRIPTOR_RANGE1 { Flags: D3D12_DESCRIPTOR_RANGE_FLAGS, OffsetInDescriptorsFromTableStart: UINT, }} -STRUCT!{struct D3D12_ROOT_DESCRIPTOR_TABLE1 { +STRUCT! {struct D3D12_ROOT_DESCRIPTOR_TABLE1 { NumDescriptorRanges: UINT, pDescriptorRanges: *const D3D12_DESCRIPTOR_RANGE1, }} -ENUM!{enum D3D12_ROOT_DESCRIPTOR_FLAGS { +ENUM! {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, }} -STRUCT!{struct D3D12_ROOT_DESCRIPTOR1 { +STRUCT! {struct D3D12_ROOT_DESCRIPTOR1 { ShaderRegister: UINT, RegisterSpace: UINT, Flags: D3D12_ROOT_DESCRIPTOR_FLAGS, }} -UNION!{union D3D12_ROOT_PARAMETER1_u { +UNION! {union D3D12_ROOT_PARAMETER1_u { [u32; 3] [u64; 2], DescriptorTable DescriptorTable_mut: D3D12_ROOT_DESCRIPTOR_TABLE1, Constants Constants_mut: D3D12_ROOT_CONSTANTS, Descriptor Descriptor_mut: D3D12_ROOT_DESCRIPTOR1, }} -STRUCT!{struct D3D12_ROOT_PARAMETER1 { +STRUCT! {struct D3D12_ROOT_PARAMETER1 { ParameterType: D3D12_ROOT_PARAMETER_TYPE, u: D3D12_ROOT_PARAMETER1_u, ShaderVisibility: D3D12_SHADER_VISIBILITY, }} -STRUCT!{struct D3D12_ROOT_SIGNATURE_DESC1 { +STRUCT! {struct D3D12_ROOT_SIGNATURE_DESC1 { NumParameters: UINT, pParameters: *const D3D12_ROOT_PARAMETER1, NumStaticSamplers: UINT, pStaticSamplers: *const D3D12_STATIC_SAMPLER_DESC, Flags: D3D12_ROOT_SIGNATURE_FLAGS, }} -UNION!{union D3D12_VERSIONED_ROOT_SIGNATURE_DESC_u { +UNION! {union D3D12_VERSIONED_ROOT_SIGNATURE_DESC_u { [u32; 5] [u64; 5], Desc_1_0 Desc_1_0_mut: D3D12_ROOT_SIGNATURE_DESC, Desc_1_1 Desc_1_1_mut: D3D12_ROOT_SIGNATURE_DESC1, }} -STRUCT!{struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC { +STRUCT! {struct D3D12_VERSIONED_ROOT_SIGNATURE_DESC { Version: UINT, u: D3D12_VERSIONED_ROOT_SIGNATURE_DESC_u, }} -RIDL!{#[uuid(0x34ab647b, 0x3cc8, 0x46ac, 0x84, 0x1b, 0xc0, 0x96, 0x56, 0x45, 0xc0, 0x46)] +RIDL! {#[uuid(0x34ab647b, 0x3cc8, 0x46ac, 0x84, 0x1b, 0xc0, 0x96, 0x56, 0x45, 0xc0, 0x46)] interface ID3D12RootSignatureDeserializer(ID3D12RootSignatureDeserializerVtbl): IUnknown(IUnknownVtbl) { fn GetRootSignatureDesc() -> *const D3D12_ROOT_SIGNATURE_DESC, }} -RIDL!{#[uuid(0x7f91ce67, 0x090c, 0x4bb7, 0xb7, 0x8e, 0xed, 0x8f, 0xf2, 0xe3, 0x1d, 0xa0)] +RIDL! {#[uuid(0x7f91ce67, 0x090c, 0x4bb7, 0xb7, 0x8e, 0xed, 0x8f, 0xf2, 0xe3, 0x1d, 0xa0)] interface ID3D12VersionedRootSignatureDeserializer(ID3D12VersionedRootSignatureDeserializerVtbl): IUnknown(IUnknownVtbl) { fn GetRootSignatureDescAtVersion( @@ -1919,7 +1995,7 @@ interface ID3D12VersionedRootSignatureDeserializer(ID3D12VersionedRootSignatureD ) -> HRESULT, fn GetUnconvertedRootSignatureDesc() -> *const D3D12_VERSIONED_ROOT_SIGNATURE_DESC, }} -FN!{stdcall PFN_D3D12_SERIALIZE_ROOT_SIGNATURE( +FN! {stdcall PFN_D3D12_SERIALIZE_ROOT_SIGNATURE( pRootSignature: *const D3D12_ROOT_SIGNATURE_DESC, Version: D3D_ROOT_SIGNATURE_VERSION, ppBlob: *mut *mut ID3DBlob, @@ -1933,7 +2009,7 @@ extern "system" { ppErrorBlob: *mut *mut ID3DBlob, ) -> HRESULT; } -FN!{stdcall PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER( +FN! {stdcall PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER( pSrcData: LPCVOID, SrcDataSizeInBytes: SIZE_T, pRootSignatureDeserializerInterface: REFIID, @@ -1947,7 +2023,7 @@ extern "system" { ppRootSignatureDeserializer: *mut *mut c_void, ) -> HRESULT; } -FN!{stdcall PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE( +FN! {stdcall PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE( pRootSignature: *const D3D12_VERSIONED_ROOT_SIGNATURE_DESC, ppBlob: *mut *mut ID3DBlob, ppErrorBlob: *mut *mut ID3DBlob, @@ -1959,7 +2035,7 @@ extern "system" { ppErrorBlob: *mut *mut ID3DBlob, ) -> HRESULT; } -FN!{stdcall PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER( +FN! {stdcall PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER( pSrcData: LPCVOID, SrcDataSizeInBytes: SIZE_T, pRootSignatureDeserializerInterface: REFIID, @@ -1973,32 +2049,33 @@ extern "system" { ppRootSignatureDeserializer: *mut *mut c_void, ) -> HRESULT; } -STRUCT!{struct D3D12_CPU_DESCRIPTOR_HANDLE { +STRUCT! {struct D3D12_CPU_DESCRIPTOR_HANDLE { ptr: SIZE_T, }} -STRUCT!{struct D3D12_GPU_DESCRIPTOR_HANDLE { +STRUCT! {struct D3D12_GPU_DESCRIPTOR_HANDLE { ptr: UINT64, }} -STRUCT!{struct D3D12_DISCARD_REGION { +STRUCT! {struct D3D12_DISCARD_REGION { NumRects: UINT, pRects: *const D3D12_RECT, FirstSubresource: UINT, NumSubresources: UINT, }} -ENUM!{enum D3D12_QUERY_HEAP_TYPE { +ENUM! {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_TYPE_PIPELINE_STATISTICS1 = 7, }} -STRUCT!{struct D3D12_QUERY_HEAP_DESC { +STRUCT! {struct D3D12_QUERY_HEAP_DESC { Type: D3D12_QUERY_HEAP_TYPE, Count: UINT, NodeMask: UINT, }} -ENUM!{enum D3D12_QUERY_TYPE { +ENUM! {enum D3D12_QUERY_TYPE { D3D12_QUERY_TYPE_OCCLUSION = 0, D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1, D3D12_QUERY_TYPE_TIMESTAMP = 2, @@ -2008,12 +2085,26 @@ ENUM!{enum D3D12_QUERY_TYPE { D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6, D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7, D3D12_QUERY_TYPE_VIDEO_DECODE_STATISTICS = 8, + D3D12_QUERY_TYPE_PIPELINE_STATISTICS1 = 10, }} -ENUM!{enum D3D12_PREDICATION_OP { +ENUM! {enum D3D12_PREDICATION_OP { D3D12_PREDICATION_OP_EQUAL_ZERO = 0, D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1, }} -STRUCT!{struct D3D12_QUERY_DATA_PIPELINE_STATISTICS { +STRUCT! {struct D3D12_QUERY_DATA_PIPELINE_STATISTICS { + IAVertices: UINT64, + IAPrimitives: UINT64, + VSInvocations: UINT64, + GSInvocations: UINT64, + GSPrimitives: UINT64, + CInvocations: UINT64, + CPrimitives: UINT64, + PSInvocations: UINT64, + HSInvocations: UINT64, + DSInvocations: UINT64, + CSInvocations: UINT64, +}} +STRUCT! {struct D3D12_QUERY_DATA_PIPELINE_STATISTICS1 { IAVertices: UINT64, IAPrimitives: UINT64, VSInvocations: UINT64, @@ -2025,45 +2116,48 @@ STRUCT!{struct D3D12_QUERY_DATA_PIPELINE_STATISTICS { HSInvocations: UINT64, DSInvocations: UINT64, CSInvocations: UINT64, + ASInvocations: UINT64, + MSInvocations: UINT64, + MSPrimitives: UINT64, }} -STRUCT!{struct D3D12_QUERY_DATA_SO_STATISTICS { +STRUCT! {struct D3D12_QUERY_DATA_SO_STATISTICS { NumPrimitivesWritten: UINT64, PrimitivesStorageNeeded: UINT64, }} -STRUCT!{struct D3D12_STREAM_OUTPUT_BUFFER_VIEW { +STRUCT! {struct D3D12_STREAM_OUTPUT_BUFFER_VIEW { BufferLocation: D3D12_GPU_VIRTUAL_ADDRESS, SizeInBytes: UINT64, BufferFilledSizeLocation: D3D12_GPU_VIRTUAL_ADDRESS, }} -STRUCT!{struct D3D12_DRAW_ARGUMENTS { +STRUCT! {struct D3D12_DRAW_ARGUMENTS { VertexCountPerInstance: UINT, InstanceCount: UINT, StartVertexLocation: UINT, StartInstanceLocation: UINT, }} -STRUCT!{struct D3D12_DRAW_INDEXED_ARGUMENTS { +STRUCT! {struct D3D12_DRAW_INDEXED_ARGUMENTS { IndexCountPerInstance: UINT, InstanceCount: UINT, StartIndexLocation: UINT, BaseVertexLocation: INT, StartInstanceLocation: UINT, }} -STRUCT!{struct D3D12_DISPATCH_ARGUMENTS { +STRUCT! {struct D3D12_DISPATCH_ARGUMENTS { ThreadGroupCountX: UINT, ThreadGroupCountY: UINT, ThreadGroupCountZ: UINT, }} -STRUCT!{struct D3D12_VERTEX_BUFFER_VIEW { +STRUCT! {struct D3D12_VERTEX_BUFFER_VIEW { BufferLocation: D3D12_GPU_VIRTUAL_ADDRESS, SizeInBytes: UINT, StrideInBytes: UINT, }} -STRUCT!{struct D3D12_INDEX_BUFFER_VIEW { +STRUCT! {struct D3D12_INDEX_BUFFER_VIEW { BufferLocation: D3D12_GPU_VIRTUAL_ADDRESS, SizeInBytes: UINT, Format: DXGI_FORMAT, }} -ENUM!{enum D3D12_INDIRECT_ARGUMENT_TYPE { +ENUM! {enum D3D12_INDIRECT_ARGUMENT_TYPE { D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0, D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = 1, D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = 2, @@ -2074,24 +2168,24 @@ ENUM!{enum D3D12_INDIRECT_ARGUMENT_TYPE { D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = 7, D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = 8, }} -STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer { +STRUCT! {struct D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer { Slot: UINT, }} -STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_Constant { +STRUCT! {struct D3D12_INDIRECT_ARGUMENT_DESC_Constant { RootParameterIndex: UINT, DestOffsetIn32BitValues: UINT, Num32BitValuesToSet: UINT, }} -STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_ConstantBufferView { +STRUCT! {struct D3D12_INDIRECT_ARGUMENT_DESC_ConstantBufferView { RootParameterIndex: UINT, }} -STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView { +STRUCT! {struct D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView { RootParameterIndex: UINT, }} -STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView { +STRUCT! {struct D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView { RootParameterIndex: UINT, }} -UNION!{union D3D12_INDIRECT_ARGUMENT_DESC_u { +UNION! {union D3D12_INDIRECT_ARGUMENT_DESC_u { [u32; 3], VertexBuffer VertexBuffer_mut: D3D12_INDIRECT_ARGUMENT_DESC_VertexBuffer, Constant Constant_mut: D3D12_INDIRECT_ARGUMENT_DESC_Constant, @@ -2099,17 +2193,17 @@ UNION!{union D3D12_INDIRECT_ARGUMENT_DESC_u { ShaderResourceView ShaderResourceView_mut: D3D12_INDIRECT_ARGUMENT_DESC_ShaderResourceView, UnorderedAccessView UnorderedAccessView_mut: D3D12_INDIRECT_ARGUMENT_DESC_UnorderedAccessView, }} -STRUCT!{struct D3D12_INDIRECT_ARGUMENT_DESC { +STRUCT! {struct D3D12_INDIRECT_ARGUMENT_DESC { Type: D3D12_INDIRECT_ARGUMENT_TYPE, u: D3D12_INDIRECT_ARGUMENT_DESC_u, }} -STRUCT!{struct D3D12_COMMAND_SIGNATURE_DESC { +STRUCT! {struct D3D12_COMMAND_SIGNATURE_DESC { ByteStride: UINT, NumArgumentDescs: UINT, pArgumentDescs: *const D3D12_INDIRECT_ARGUMENT_DESC, NodeMask: UINT, }} -RIDL!{#[uuid(0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8)] +RIDL! {#[uuid(0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8)] interface ID3D12Object(ID3D12ObjectVtbl): IUnknown(IUnknownVtbl) { fn GetPrivateData( guid: REFGUID, @@ -2129,20 +2223,20 @@ interface ID3D12Object(ID3D12ObjectVtbl): IUnknown(IUnknownVtbl) { Name: LPCWSTR, ) -> HRESULT, }} -RIDL!{#[uuid(0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57)] +RIDL! {#[uuid(0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57)] interface ID3D12DeviceChild(ID3D12DeviceChildVtbl): ID3D12Object(ID3D12ObjectVtbl) { fn GetDevice( riid: REFIID, ppvDevice: *mut *mut c_void, ) -> HRESULT, }} -RIDL!{#[uuid(0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6)] +RIDL! {#[uuid(0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6)] interface ID3D12Pageable(ID3D12PageableVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) {}} -RIDL!{#[uuid(0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3)] +RIDL! {#[uuid(0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3)] interface ID3D12Heap(ID3D12HeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) { #[fixme] fn GetDesc() -> D3D12_HEAP_DESC, }} -RIDL!{#[uuid(0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad)] +RIDL! {#[uuid(0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad)] interface ID3D12Resource(ID3D12ResourceVtbl): ID3D12Pageable(ID3D12PageableVtbl) { fn Map( Subresource: UINT, @@ -2174,11 +2268,11 @@ interface ID3D12Resource(ID3D12ResourceVtbl): ID3D12Pageable(ID3D12PageableVtbl) pHeapFlags: *mut D3D12_HEAP_FLAGS, ) -> HRESULT, }} -RIDL!{#[uuid(0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24)] +RIDL! {#[uuid(0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24)] interface ID3D12CommandAllocator(ID3D12CommandAllocatorVtbl): ID3D12Pageable(ID3D12PageableVtbl) { fn Reset() -> HRESULT, }} -RIDL!{#[uuid(0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76)] +RIDL! {#[uuid(0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76)] interface ID3D12Fence(ID3D12FenceVtbl): ID3D12Pageable(ID3D12PageableVtbl) { fn GetCompletedValue() -> UINT64, fn SetEventOnCompletion( @@ -2189,32 +2283,32 @@ interface ID3D12Fence(ID3D12FenceVtbl): ID3D12Pageable(ID3D12PageableVtbl) { Value: UINT64, ) -> HRESULT, }} -RIDL!{#[uuid(0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a)] +RIDL! {#[uuid(0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a)] interface ID3D12Fence1(ID3D12Fence1Vtbl): ID3D12Fence(ID3D12FenceVtbl) { fn GetCreationFlags() -> D3D12_FENCE_FLAGS, }} -RIDL!{#[uuid(0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45)] +RIDL! {#[uuid(0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45)] interface ID3D12PipelineState(ID3D12PipelineStateVtbl): ID3D12Pageable(ID3D12PageableVtbl) { fn GetCachedBlob( ppBlob: *mut *mut ID3DBlob, ) -> HRESULT, }} -RIDL!{#[uuid(0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51)] +RIDL! {#[uuid(0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51)] interface ID3D12DescriptorHeap(ID3D12DescriptorHeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) { #[fixme] fn GetDesc() -> D3D12_DESCRIPTOR_HEAP_DESC, #[fixme] fn GetCPUDescriptorHandleForHeapStart() -> D3D12_CPU_DESCRIPTOR_HANDLE, #[fixme] fn GetGPUDescriptorHandleForHeapStart() -> D3D12_GPU_DESCRIPTOR_HANDLE, }} -RIDL!{#[uuid(0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4)] +RIDL! {#[uuid(0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4)] interface ID3D12QueryHeap(ID3D12QueryHeapVtbl): ID3D12Pageable(ID3D12PageableVtbl) {}} -RIDL!{#[uuid(0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1)] +RIDL! {#[uuid(0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1)] interface ID3D12CommandSignature(ID3D12CommandSignatureVtbl): ID3D12Pageable(ID3D12PageableVtbl) {}} -RIDL!{#[uuid(0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5)] +RIDL! {#[uuid(0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5)] interface ID3D12CommandList(ID3D12CommandListVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) { fn GetType() -> D3D12_COMMAND_LIST_TYPE, }} -RIDL!{#[uuid(0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55)] +RIDL! {#[uuid(0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55)] interface ID3D12GraphicsCommandList(ID3D12GraphicsCommandListVtbl): ID3D12CommandList(ID3D12CommandListVtbl) { fn Close() -> HRESULT, @@ -2464,7 +2558,7 @@ interface ID3D12GraphicsCommandList(ID3D12GraphicsCommandListVtbl): CountBufferOffset: UINT64, ) -> (), }} -RIDL!{#[uuid(0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7)] +RIDL! {#[uuid(0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7)] interface ID3D12GraphicsCommandList1(ID3D12GraphicsCommandList1Vtbl): ID3D12GraphicsCommandList(ID3D12GraphicsCommandListVtbl) { fn AtomicCopyBufferUINT( @@ -2509,16 +2603,16 @@ interface ID3D12GraphicsCommandList1(ID3D12GraphicsCommandList1Vtbl): Mask: UINT, ) -> (), }} -STRUCT!{struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER { +STRUCT! {struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER { Dest: D3D12_GPU_VIRTUAL_ADDRESS, Value: UINT32, }} -ENUM!{enum D3D12_WRITEBUFFERIMMEDIATE_MODE { +ENUM! {enum D3D12_WRITEBUFFERIMMEDIATE_MODE { D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0, D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1, D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2, }} -RIDL!{#[uuid(0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28)] +RIDL! {#[uuid(0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28)] interface ID3D12GraphicsCommandList2(ID3D12GraphicsCommandList2Vtbl) : ID3D12GraphicsCommandList1(ID3D12GraphicsCommandList1Vtbl) { fn WriteBufferImmediate( @@ -2527,7 +2621,7 @@ interface ID3D12GraphicsCommandList2(ID3D12GraphicsCommandList2Vtbl) pModes: *const D3D12_WRITEBUFFERIMMEDIATE_MODE, ) -> (), }} -RIDL!{#[uuid(0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed)] +RIDL! {#[uuid(0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed)] interface ID3D12CommandQueue(ID3D12CommandQueueVtbl): ID3D12Pageable(ID3D12PageableVtbl) { fn UpdateTileMappings( pResource: *mut ID3D12Resource, @@ -2581,7 +2675,7 @@ interface ID3D12CommandQueue(ID3D12CommandQueueVtbl): ID3D12Pageable(ID3D12Pagea ) -> HRESULT, #[fixme] fn GetDesc() -> D3D12_COMMAND_QUEUE_DESC, }} -RIDL!{#[uuid(0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7)] +RIDL! {#[uuid(0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7)] interface ID3D12Device(ID3D12DeviceVtbl): ID3D12Object(ID3D12ObjectVtbl) { fn GetNodeCount() -> UINT, fn CreateCommandQueue( @@ -2782,7 +2876,7 @@ interface ID3D12Device(ID3D12DeviceVtbl): ID3D12Object(ID3D12ObjectVtbl) { ) -> (), #[fixme] fn GetAdapterLuid() -> LUID, }} -RIDL!{#[uuid(0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f)] +RIDL! {#[uuid(0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f)] interface ID3D12PipelineLibrary(ID3D12PipelineLibraryVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) { fn StorePipeline( @@ -2807,7 +2901,7 @@ interface ID3D12PipelineLibrary(ID3D12PipelineLibraryVtbl): DataSizeInBytes: SIZE_T, ) -> HRESULT, }} -RIDL!{#[uuid(0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3)] +RIDL! {#[uuid(0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3)] interface ID3D12PipelineLibrary1(ID3D12PipelineLibrary1Vtbl): ID3D12PipelineLibrary(ID3D12PipelineLibraryVtbl) { fn LoadPipeline( @@ -2817,19 +2911,19 @@ interface ID3D12PipelineLibrary1(ID3D12PipelineLibrary1Vtbl): ppPipelineState: *mut *mut c_void, ) -> HRESULT, }} -ENUM!{enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS { +ENUM! {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!{enum D3D12_RESIDENCY_PRIORITY { +ENUM! {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, }} -RIDL!{#[uuid(0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e)] +RIDL! {#[uuid(0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e)] interface ID3D12Device1(ID3D12Device1Vtbl): ID3D12Device(ID3D12DeviceVtbl) { fn CreatePipelineLibrary( pLibraryBlob: *const c_void, @@ -2850,7 +2944,7 @@ interface ID3D12Device1(ID3D12Device1Vtbl): ID3D12Device(ID3D12DeviceVtbl) { pPriorities: *const D3D12_RESIDENCY_PRIORITY, ) -> HRESULT, }} -RIDL!{#[uuid(0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28)] +RIDL! {#[uuid(0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28)] interface ID3D12Device2(ID3D12Device2Vtbl): ID3D12Device1(ID3D12Device1Vtbl) { fn CreatePipelineState( pDesc: *const D3D12_PIPELINE_STATE_STREAM_DESC, @@ -2858,11 +2952,11 @@ interface ID3D12Device2(ID3D12Device2Vtbl): ID3D12Device1(ID3D12Device1Vtbl) { ppPipelineState: *mut *mut c_void, ) -> HRESULT, }} -ENUM!{enum D3D12_RESIDENCY_FLAGS { +ENUM! {enum D3D12_RESIDENCY_FLAGS { D3D12_RESIDENCY_FLAG_NONE = 0, D3D12_RESIDENCY_FLAG_DENY_OVERBUDGET = 0x1, }} -RIDL!{#[uuid(0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98)] +RIDL! {#[uuid(0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98)] interface ID3D12Device3(ID3D12Device3Vtbl): ID3D12Device2(ID3D12Device2Vtbl) { fn OpenExistingHeapFromAddress( pAddress: *const c_void, @@ -2882,20 +2976,20 @@ interface ID3D12Device3(ID3D12Device3Vtbl): ID3D12Device2(ID3D12Device2Vtbl) { FenceValueToSignal: UINT64, ) -> HRESULT, }} -ENUM!{enum D3D12_COMMAND_LIST_FLAGS { +ENUM! {enum D3D12_COMMAND_LIST_FLAGS { D3D12_COMMAND_LIST_FLAG_NONE = 0, }} -ENUM!{enum D3D12_COMMAND_POOL_FLAGS { +ENUM! {enum D3D12_COMMAND_POOL_FLAGS { D3D12_COMMAND_POOL_FLAG_NONE = 0, }} -ENUM!{enum D3D12_COMMAND_RECORDER_FLAGS { +ENUM! {enum D3D12_COMMAND_RECORDER_FLAGS { D3D12_COMMAND_RECORDER_FLAG_NONE = 0, }} -ENUM!{enum D3D12_PROTECTED_SESSION_STATUS { +ENUM! {enum D3D12_PROTECTED_SESSION_STATUS { D3D12_PROTECTED_SESSION_STATUS_OK = 0, D3D12_PROTECTED_SESSION_STATUS_INVALID = 1, }} -RIDL!{#[uuid(0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B)] +RIDL! {#[uuid(0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B)] interface ID3D12ProtectedSession(ID3D12ProtectedSessionVtbl) : ID3D12DeviceChild(ID3D12DeviceChildVtbl) { fn GetStatusFence( @@ -2904,27 +2998,27 @@ interface ID3D12ProtectedSession(ID3D12ProtectedSessionVtbl) ) -> HRESULT, fn GetSessionStatus() -> D3D12_PROTECTED_SESSION_STATUS, }} -ENUM!{enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS { +ENUM! {enum D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS { D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_NONE = 0, D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAG_SUPPORTED = 0x1, }} -STRUCT!{struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT { +STRUCT! {struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_SUPPORT { NodeIndex: UINT, Support: D3D12_PROTECTED_RESOURCE_SESSION_SUPPORT_FLAGS, }} -ENUM!{enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS { +ENUM! {enum D3D12_PROTECTED_RESOURCE_SESSION_FLAGS { D3D12_PROTECTED_RESOURCE_SESSION_FLAG_NONE = 0, }} -STRUCT!{struct D3D12_PROTECTED_RESOURCE_SESSION_DESC { +STRUCT! {struct D3D12_PROTECTED_RESOURCE_SESSION_DESC { NodeMask: UINT, Flags: D3D12_PROTECTED_RESOURCE_SESSION_FLAGS, }} -RIDL!{#[uuid(0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0xA0, 0x09, 0x9C, 0x3D)] +RIDL! {#[uuid(0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0xA0, 0x09, 0x9C, 0x3D)] interface ID3D12ProtectedResourceSession(ID3D12ProtectedResourceSessionVtbl) : ID3D12ProtectedSession(ID3D12ProtectedSessionVtbl) { fn GetDesc() -> D3D12_PROTECTED_RESOURCE_SESSION_DESC, }} -RIDL!{#[uuid(0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5)] +RIDL! {#[uuid(0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5)] interface ID3D12Device4(ID3D12Device4Vtbl): ID3D12Device3(ID3D12Device3Vtbl) { fn CreateCommandList1( nodeMask: UINT, @@ -2969,17 +3063,17 @@ interface ID3D12Device4(ID3D12Device4Vtbl): ID3D12Device3(ID3D12Device3Vtbl) { pResourceAllocationInfo1: *mut D3D12_RESOURCE_ALLOCATION_INFO1, ) -> D3D12_RESOURCE_ALLOCATION_INFO, }} -ENUM!{enum D3D12_LIFETIME_STATE { +ENUM! {enum D3D12_LIFETIME_STATE { D3D12_LIFETIME_STATE_IN_USE = 0, D3D12_LIFETIME_STATE_NOT_IN_USE = 1, }} -RIDL!{#[uuid(0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8)] +RIDL! {#[uuid(0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8)] interface ID3D12LifetimeOwner(ID3D12LifetimeOwnerVtlb): IUnknown(IUnknownVtbl) { fn LifetimeStateUpdated( NewState: D3D12_LIFETIME_STATE, ) -> (), }} -RIDL!{#[uuid(0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f)] +RIDL! {#[uuid(0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f)] interface ID3D12SwapChainAssistant(ID3D12SwapChainAssistantVtlb): IUnknown(IUnknownVtbl) { fn GetLUID() -> LUID, fn GetSwapChainObject( @@ -2994,37 +3088,37 @@ interface ID3D12SwapChainAssistant(ID3D12SwapChainAssistantVtlb): IUnknown(IUnkn ) -> HRESULT, fn InsertImplicitSync() -> HRESULT, }} -RIDL!{#[uuid(0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13)] +RIDL! {#[uuid(0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13)] interface ID3D12LifetimeTracker(ID3D12LifetimeTrackerVtbl) : ID3D12DeviceChild(ID3D12DeviceChildVtbl) { fn DestroyOwnedObject( pObject: *mut ID3D12DeviceChild, ) -> HRESULT, }} -ENUM!{enum D3D12_META_COMMAND_PARAMETER_TYPE { +ENUM! {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!{enum D3D12_META_COMMAND_PARAMETER_FLAGS { +ENUM! {enum D3D12_META_COMMAND_PARAMETER_FLAGS { D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1, D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2, }} -ENUM!{enum D3D12_META_COMMAND_PARAMETER_STAGE { +ENUM! {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, }} -STRUCT!{struct D3D12_META_COMMAND_PARAMETER_DESC { +STRUCT! {struct D3D12_META_COMMAND_PARAMETER_DESC { Name: LPCWSTR, Type: D3D12_META_COMMAND_PARAMETER_TYPE, Flags: D3D12_META_COMMAND_PARAMETER_FLAGS, RequiredResourceState: D3D12_RESOURCE_STATES, StructureOffset: UINT, }} -ENUM!{enum D3D12_GRAPHICS_STATES { +ENUM! {enum D3D12_GRAPHICS_STATES { D3D12_GRAPHICS_STATE_NONE = 0, D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = 1 << 0, D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = 1 << 1, @@ -3044,15 +3138,15 @@ ENUM!{enum D3D12_GRAPHICS_STATES { D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = 1 << 15, D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = 1 << 16, }} -STRUCT!{struct D3D12_META_COMMAND_DESC { +STRUCT! {struct D3D12_META_COMMAND_DESC { Id: GUID, Name: LPCWSTR, InitializationDirtyState: D3D12_GRAPHICS_STATES, ExecutionDirtyState: D3D12_GRAPHICS_STATES, }} -RIDL!{#[uuid(0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d)] +RIDL! {#[uuid(0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d)] interface ID3D12StateObject(ID3D12StateObjectVtbl): ID3D12Pageable(ID3D12PageableVtbl) {}} -RIDL!{#[uuid(0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60)] +RIDL! {#[uuid(0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60)] interface ID3D12StateObjectProperties(ID3D12StateObjectPropertiesVtbl): IUnknown(IUnknownVtbl) { fn GetShaderIdentifier( pExportName: LPCWSTR, @@ -3065,7 +3159,7 @@ interface ID3D12StateObjectProperties(ID3D12StateObjectPropertiesVtbl): IUnknown PipelineStackSizeInBytes: UINT64, ) -> (), }} -ENUM!{enum D3D12_STATE_SUBOBJECT_TYPE { +ENUM! {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, @@ -3079,112 +3173,112 @@ ENUM!{enum D3D12_STATE_SUBOBJECT_TYPE { D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 11, D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = 12, }} -STRUCT!{struct D3D12_STATE_SUBOBJECT { +STRUCT! {struct D3D12_STATE_SUBOBJECT { Type: D3D12_STATE_SUBOBJECT_TYPE, pDesc: *const c_void, }} -ENUM!{enum D3D12_STATE_OBJECT_FLAGS { +ENUM! {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, }} -STRUCT!{struct D3D12_STATE_OBJECT_CONFIG { +STRUCT! {struct D3D12_STATE_OBJECT_CONFIG { Flags: D3D12_STATE_OBJECT_FLAGS, }} -STRUCT!{struct D3D12_GLOBAL_ROOT_SIGNATURE { +STRUCT! {struct D3D12_GLOBAL_ROOT_SIGNATURE { pGlobalRootSignature: *mut ID3D12RootSignature, }} -STRUCT!{struct D3D12_LOCAL_ROOT_SIGNATURE { +STRUCT! {struct D3D12_LOCAL_ROOT_SIGNATURE { pLocalRootSignature: *mut ID3D12RootSignature, }} -STRUCT!{struct D3D12_NODE_MASK { +STRUCT! {struct D3D12_NODE_MASK { NodeMask: UINT, }} -ENUM!{enum D3D12_EXPORT_FLAGS { +ENUM! {enum D3D12_EXPORT_FLAGS { D3D12_EXPORT_FLAG_NONE = 0, }} -STRUCT!{struct D3D12_EXPORT_DESC { +STRUCT! {struct D3D12_EXPORT_DESC { Name: LPCWSTR, ExportToRename: LPCWSTR, Flags: D3D12_EXPORT_FLAGS, }} -STRUCT!{struct D3D12_DXIL_LIBRARY_DESC { +STRUCT! {struct D3D12_DXIL_LIBRARY_DESC { DXILLibrary: D3D12_SHADER_BYTECODE, NumExports: UINT, pExports: *mut D3D12_EXPORT_DESC, }} -STRUCT!{struct D3D12_EXISTING_COLLECTION_DESC { +STRUCT! {struct D3D12_EXISTING_COLLECTION_DESC { pExistingCollection: * mut ID3D12StateObject, NumExports: UINT, pExports: *mut D3D12_EXPORT_DESC, }} -STRUCT!{struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION { +STRUCT! {struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION { pSubobjectToAssociate: *const D3D12_STATE_SUBOBJECT, NumExports: UINT, pExports: *mut LPCWSTR, }} -STRUCT!{struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION { +STRUCT! {struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION { SubobjectToAssociate: LPCWSTR, NumExports: UINT, pExports: *mut LPCWSTR, }} -ENUM!{enum D3D12_HIT_GROUP_TYPE { +ENUM! {enum D3D12_HIT_GROUP_TYPE { D3D12_HIT_GROUP_TYPE_TRIANGLES = 0, D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1, }} -STRUCT!{struct D3D12_HIT_GROUP_DESC { +STRUCT! {struct D3D12_HIT_GROUP_DESC { HitGroupExport: LPCWSTR, Type: D3D12_HIT_GROUP_TYPE, AnyHitShaderImport: LPCWSTR, ClosestHitShaderImport: LPCWSTR, IntersectionShaderImport: LPCWSTR, }} -STRUCT!{struct D3D12_RAYTRACING_SHADER_CONFIG { +STRUCT! {struct D3D12_RAYTRACING_SHADER_CONFIG { MaxPayloadSizeInBytes: UINT, MaxAttributeSizeInBytes: UINT, }} -STRUCT!{struct D3D12_RAYTRACING_PIPELINE_CONFIG { +STRUCT! {struct D3D12_RAYTRACING_PIPELINE_CONFIG { MaxTraceRecursionDepth: UINT, }} -ENUM!{enum D3D12_STATE_OBJECT_TYPE { +ENUM! {enum D3D12_STATE_OBJECT_TYPE { D3D12_STATE_OBJECT_TYPE_COLLECTION = 0, D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 3, }} -STRUCT!{struct D3D12_STATE_OBJECT_DESC { +STRUCT! {struct D3D12_STATE_OBJECT_DESC { Type: D3D12_STATE_OBJECT_TYPE, NumSubobjects: UINT, pSubobjects: *const D3D12_STATE_SUBOBJECT, }} -ENUM!{enum D3D12_RAYTRACING_GEOMETRY_FLAGS { +ENUM! {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!{enum D3D12_RAYTRACING_GEOMETRY_TYPE { +ENUM! {enum D3D12_RAYTRACING_GEOMETRY_TYPE { D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0, D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = 1, }} -ENUM!{enum D3D12_RAYTRACING_INSTANCE_FLAGS { +ENUM! {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, }} -STRUCT!{struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE { +STRUCT! {struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE { StartAddress: D3D12_GPU_VIRTUAL_ADDRESS, StrideInBytes: UINT64, }} -STRUCT!{struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE { +STRUCT! {struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE { StartAddress: D3D12_GPU_VIRTUAL_ADDRESS, SizeInBytes: UINT64, }} -STRUCT!{struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE { +STRUCT! {struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE { StartAddress: D3D12_GPU_VIRTUAL_ADDRESS, SizeInBytes: UINT64, StrideInBytes: UINT64, }} -STRUCT!{struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC { +STRUCT! {struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC { Transform3x4: D3D12_GPU_VIRTUAL_ADDRESS, IndexFormat: DXGI_FORMAT, VertexFormat: DXGI_FORMAT, @@ -3193,7 +3287,7 @@ STRUCT!{struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC { IndexBuffer: D3D12_GPU_VIRTUAL_ADDRESS, VertexBuffer: D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE, }} -STRUCT!{struct D3D12_RAYTRACING_AABB { +STRUCT! {struct D3D12_RAYTRACING_AABB { MinX: FLOAT, MinY: FLOAT, MinZ: FLOAT, @@ -3201,11 +3295,11 @@ STRUCT!{struct D3D12_RAYTRACING_AABB { MaxY: FLOAT, MaxZ: FLOAT, }} -STRUCT!{struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC { +STRUCT! {struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC { AABBCount: UINT64, AABBs: D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE, }} -ENUM!{enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS { +ENUM! {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, @@ -3214,109 +3308,109 @@ ENUM!{enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS { D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10, D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20, }} -ENUM!{enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE { +ENUM! {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!{enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE { +ENUM! {enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE { D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0, D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1, }} -ENUM!{enum D3D12_ELEMENTS_LAYOUT { +ENUM! {enum D3D12_ELEMENTS_LAYOUT { D3D12_ELEMENTS_LAYOUT_ARRAY = 0, D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1, }} -ENUM!{enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE { +ENUM! {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, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC { DestBuffer: D3D12_GPU_VIRTUAL_ADDRESS, InfoType: D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE_DESC { CompactedSizeInBytes: UINT64, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION_DESC { DecodedSizeInBytes: UINT64, }} -STRUCT!{struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER { +STRUCT! {struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_TOOLS_VISUALIZATION_HEADER { Type: D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE, NumDescs: UINT, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION_DESC { SerializedSizeInBytes: UINT64, NumBottomLevelAccelerationStructurePointers: UINT64, }} -STRUCT!{struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER { +STRUCT! {struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER { DriverOpaqueGUID: GUID, DriverOpaqueVersioningData: [BYTE; 16], }} -ENUM!{enum D3D12_SERIALIZED_DATA_TYPE { +ENUM! {enum D3D12_SERIALIZED_DATA_TYPE { D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0, }} -ENUM!{enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS { +ENUM! {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, }} -STRUCT!{struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER { +STRUCT! {struct D3D12_SERIALIZED_RAYTRACING_ACCELERATION_STRUCTURE_HEADER { DriverMatchingIdentifier: D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER, SerializedSizeInBytesIncludingHeader: UINT64, DeserializedSizeInBytes: UINT64, NumBottomLevelAccelerationStructurePointersAfterHeader: UINT64, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE_DESC { CurrentSizeInBytes: UINT64, }} -STRUCT!{struct D3D12_RAYTRACING_INSTANCE_DESC { +STRUCT! {struct D3D12_RAYTRACING_INSTANCE_DESC { Transform: [[FLOAT; 4]; 3], InstanceID_24_InstanceMask_8: UINT, InstanceContributionToHitGroupIndex_24_Flags_8: UINT, AccelerationStructure: D3D12_GPU_VIRTUAL_ADDRESS, }} -UNION!{union D3D12_RAYTRACING_GEOMETRY_DESC_u { +UNION! {union D3D12_RAYTRACING_GEOMETRY_DESC_u { [u64; 6], Triangles Triangles_mut: D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC, AABBs AABBs_mut: D3D12_RAYTRACING_GEOMETRY_AABBS_DESC, }} -STRUCT!{struct D3D12_RAYTRACING_GEOMETRY_DESC { +STRUCT! {struct D3D12_RAYTRACING_GEOMETRY_DESC { Type: D3D12_RAYTRACING_GEOMETRY_TYPE, Flags: D3D12_RAYTRACING_GEOMETRY_FLAGS, u: D3D12_RAYTRACING_GEOMETRY_DESC_u, }} -UNION!{union D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS_u { +UNION! {union D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS_u { [u64; 1], InstanceDescs InstanceDescs_mut: D3D12_GPU_VIRTUAL_ADDRESS, pGeometryDescs pGeometryDescs_mut: *const D3D12_RAYTRACING_GEOMETRY_DESC, ppGeometryDescs ppGeometryDescs_mut: *const *mut D3D12_RAYTRACING_GEOMETRY_DESC, }} -STRUCT!{struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS { +STRUCT! {struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS { Type: D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE, Flags: D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS, NumDescs: UINT, DescsLayout: D3D12_ELEMENTS_LAYOUT, u: D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS_u, }} -STRUCT!{struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC { +STRUCT! {struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC { DestAccelerationStructureData: D3D12_GPU_VIRTUAL_ADDRESS, Inputs: D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS, SourceAccelerationStructureData: D3D12_GPU_VIRTUAL_ADDRESS, ScratchAccelerationStructureData: D3D12_GPU_VIRTUAL_ADDRESS, }} -STRUCT!{struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO { +STRUCT! {struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO { ResultDataMaxSizeInBytes: UINT64, ScratchDataSizeInBytes: UINT64, UpdateScratchDataSizeInBytes: UINT64, }} -ENUM!{enum D3D12_RAY_FLAGS { +ENUM! {enum D3D12_RAY_FLAGS { D3D12_RAY_FLAG_NONE = 0, D3D12_RAY_FLAG_FORCE_OPAQUE = 0x1, D3D12_RAY_FLAG_FORCE_NON_OPAQUE = 0x2, @@ -3327,11 +3421,11 @@ ENUM!{enum D3D12_RAY_FLAGS { D3D12_RAY_FLAG_CULL_OPAQUE = 0x40, D3D12_RAY_FLAG_CULL_NON_OPAQUE = 0x80, }} -ENUM!{enum D3D12_HIT_KIND { +ENUM! {enum D3D12_HIT_KIND { D3D12_HIT_KIND_TRIANGLE_FRONT_FACE = 0xfe, D3D12_HIT_KIND_TRIANGLE_BACK_FACE = 0xff, }} -RIDL!{#[uuid(0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d)] +RIDL! {#[uuid(0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d)] interface ID3D12Device5(ID3D12Device5Vtbl) : ID3D12Device4(ID3D12Device4Vtbl) { fn CreateLifetimeTracker( pOwner: *mut ID3D12LifetimeOwner, @@ -3372,7 +3466,7 @@ interface ID3D12Device5(ID3D12Device5Vtbl) : ID3D12Device4(ID3D12Device4Vtbl) { pIdentifierToCheck: *const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER, ) -> D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS, }} -ENUM!{enum D3D12_AUTO_BREADCRUMB_OP { +ENUM! {enum D3D12_AUTO_BREADCRUMB_OP { D3D12_AUTO_BREADCRUMB_OP_SETMARKER = 0, D3D12_AUTO_BREADCRUMB_OP_BEGINEVENT = 1, D3D12_AUTO_BREADCRUMB_OP_ENDEVENT = 2, @@ -3415,8 +3509,11 @@ ENUM!{enum D3D12_AUTO_BREADCRUMB_OP { D3D12_AUTO_BREADCRUMB_OP_SETPIPELINESTATE1 = 39, D3D12_AUTO_BREADCRUMB_OP_INITIALIZEEXTENSIONCOMMAND = 40, D3D12_AUTO_BREADCRUMB_OP_EXECUTEEXTENSIONCOMMAND = 41, + D3D12_AUTO_BREADCRUMB_OP_DISPATCHMESH = 42, + D3D12_AUTO_BREADCRUMB_OP_ENCODEFRAME = 43, + D3D12_AUTO_BREADCRUMB_OP_RESOLVEENCODEROUTPUTMETADATA = 44, }} -STRUCT!{struct D3D12_AUTO_BREADCRUMB_NODE { +STRUCT! {struct D3D12_AUTO_BREADCRUMB_NODE { pCommandListDebugNameA: *const c_char, pCommandListDebugNameW: *const wchar_t, pCommandQueueDebugNameA: *const c_char, @@ -3428,25 +3525,45 @@ STRUCT!{struct D3D12_AUTO_BREADCRUMB_NODE { pCommandHistory: *const D3D12_AUTO_BREADCRUMB_OP, pNext: *const D3D12_AUTO_BREADCRUMB_NODE, }} -ENUM!{enum D3D12_DRED_VERSION { - D3D12_DRED_VERSION_1_0 = 0x1, - D3D12_DRED_VERSION_1_1 = 0x2, +STRUCT! {struct D3D12_DRED_BREADCRUMB_CONTEXT { + BreadcrumbIndex: UINT, + pContextString: *const wchar_t, }} -ENUM!{enum D3D12_DRED_FLAGS { - D3D12_DRED_FLAG_NONE = 0, - D3D12_DRED_FLAG_FORCE_ENABLE = 1, +STRUCT! {struct D3D12_AUTO_BREADCRUMB_NODE1 { + pCommandListDebugNameA: *const char, + pCommandListDebugNameW: *const wchar_t, + pCommandQueueDebugNameA: *const c_char, + pCommandQueueDebugNameW: *const wchar_t, + pCommandList: *mut ID3D12GraphicsCommandList, + pCommandQueue: *mut ID3D12CommandQueue, + BreadcrumbCount: UINT32, + pLastBreadcrumbValue: *const UINT32, + pCommandHistory: *const D3D12_AUTO_BREADCRUMB_OP, + pNext: *const D3D12_AUTO_BREADCRUMB_NODE1, + BreadcrumbContextsCount: UINT, + pBreadcrumbContexts: *mut D3D12_DRED_BREADCRUMB_CONTEXT, +}} +ENUM! {enum D3D12_DRED_VERSION { + D3D12_DRED_VERSION_1_0 = 0x1, + D3D12_DRED_VERSION_1_1 = 0x2, + D3D12_DRED_VERSION_1_2 = 0x3, + D3D12_DRED_VERSION_1_3 = 0x4, +}} +ENUM! {enum D3D12_DRED_FLAGS { + D3D12_DRED_FLAG_NONE = 0, + D3D12_DRED_FLAG_FORCE_ENABLE = 1, D3D12_DRED_FLAG_DISABLE_AUTOBREADCRUMBS = 2, }} -ENUM!{enum D3D12_DRED_ENABLEMENT { +ENUM! {enum D3D12_DRED_ENABLEMENT { D3D12_DRED_ENABLEMENT_SYSTEM_CONTROLLED = 0, - D3D12_DRED_ENABLEMENT_FORCED_OFF = 1, + D3D12_DRED_ENABLEMENT_FORCED_OFF = 1, D3D12_DRED_ENABLEMENT_FORCED_ON = 2, }} -STRUCT!{struct D3D12_DEVICE_REMOVED_EXTENDED_DATA { +STRUCT! {struct D3D12_DEVICE_REMOVED_EXTENDED_DATA { Flags: D3D12_DRED_FLAGS, pHeadAutoBreadcrumbNode: *mut D3D12_AUTO_BREADCRUMB_NODE, }} -ENUM!{enum D3D12_DRED_ALLOCATION_TYPE { +ENUM! {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, @@ -3473,37 +3590,82 @@ ENUM!{enum D3D12_DRED_ALLOCATION_TYPE { 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_VIDEO_ENCODER = 48, + D3D12_DRED_ALLOCATION_TYPE_VIDEO_ENCODER_HEAP = 49, D3D12_DRED_ALLOCATION_TYPE_INVALID = 0xffffffff, }} -STRUCT!{struct D3D12_DRED_ALLOCATION_NODE { +STRUCT! {struct D3D12_DRED_ALLOCATION_NODE { ObjectNameA: *const char, ObjectNameW: *const wchar_t, AllocationType: D3D12_DRED_ALLOCATION_TYPE, pNext: *const D3D12_DRED_ALLOCATION_NODE, }} -STRUCT!{struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT { +STRUCT! {struct D3D12_DRED_ALLOCATION_NODE1 { + ObjectNameA: *const char, + ObjectNameW: *const wchar_t, + AllocationType: D3D12_DRED_ALLOCATION_TYPE, + pNext: *const D3D12_DRED_ALLOCATION_NODE1, + pObject: *const IUnknown, +}} +STRUCT! {struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT { pHeadAutoBreadcrumbNode: *const D3D12_AUTO_BREADCRUMB_NODE, }} -STRUCT!{struct D3D12_DRED_PAGE_FAULT_OUTPUT { +STRUCT! {struct D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1 { + pHeadAutoBreadcrumbNode: *const D3D12_AUTO_BREADCRUMB_NODE1, +}} +STRUCT! {struct D3D12_DRED_PAGE_FAULT_OUTPUT { PageFaultVA: D3D12_GPU_VIRTUAL_ADDRESS, pHeadExistingAllocationNode: *const D3D12_DRED_ALLOCATION_NODE, pHeadRecentFreedAllocationNode: *const D3D12_DRED_ALLOCATION_NODE, }} -STRUCT!{struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1 { +STRUCT! {struct D3D12_DRED_PAGE_FAULT_OUTPUT1 { + PageFaultVA: D3D12_GPU_VIRTUAL_ADDRESS, + pHeadExistingAllocationNode: *const D3D12_DRED_ALLOCATION_NODE1, + pHeadRecentFreedAllocationNode: *const D3D12_DRED_ALLOCATION_NODE1, +}} +ENUM! {enum D3D12_DRED_PAGE_FAULT_FLAGS { + D3D12_DRED_PAGE_FAULT_FLAGS_NONE = 0, +}} +ENUM! {enum D3D12_DRED_DEVICE_STATE { + D3D12_DRED_DEVICE_STATE_UNKNOWN = 0, + D3D12_DRED_DEVICE_STATE_HUNG = 3, + D3D12_DRED_DEVICE_STATE_FAULT = 6, + D3D12_DRED_DEVICE_STATE_PAGEFAULT = 7, +}} +STRUCT! {struct D3D12_DRED_PAGE_FAULT_OUTPUT2 { + PageFaultVA: D3D12_GPU_VIRTUAL_ADDRESS, + pHeadExistingAllocationNode: *const D3D12_DRED_ALLOCATION_NODE1, + pHeadRecentFreedAllocationNode: *const D3D12_DRED_ALLOCATION_NODE1, + PageFaultFlags: D3D12_DRED_PAGE_FAULT_FLAGS, +}} +STRUCT! {struct D3D12_DEVICE_REMOVED_EXTENDED_DATA1 { DeviceRemovedReason: HRESULT, AutoBreadcrumbsOutput: D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT, PageFaultOutput: D3D12_DRED_PAGE_FAULT_OUTPUT, }} -UNION!{union D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA_u { +UNION! {union D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA_u { [u64; 5], Dred_1_0 Dred_1_0_mut: D3D12_DEVICE_REMOVED_EXTENDED_DATA, Dred_1_1 Dred_1_1_mut: D3D12_DEVICE_REMOVED_EXTENDED_DATA1, + Dred_1_2 Dred_1_2_mut: D3D12_DEVICE_REMOVED_EXTENDED_DATA2, + Dred_1_3 Dred_1_3_mut: D3D12_DEVICE_REMOVED_EXTENDED_DATA3, }} -STRUCT!{struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA { +STRUCT! {struct D3D12_DEVICE_REMOVED_EXTENDED_DATA2 { + DeviceRemovedReason: HRESULT, + AutoBreadcrumbsOutput: D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1, + PageFaultOutput: D3D12_DRED_PAGE_FAULT_OUTPUT1, +}} +STRUCT! {struct D3D12_DEVICE_REMOVED_EXTENDED_DATA3 { + DeviceRemovedReason: HRESULT, + AutoBreadcrumbsOutput: D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1, + PageFaultOutput: D3D12_DRED_PAGE_FAULT_OUTPUT2, + DeviceState: D3D12_DRED_DEVICE_STATE, +}} +STRUCT! {struct D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA { Version: D3D12_DRED_VERSION, u: D3D12_VERSIONED_DEVICE_REMOVED_EXTENDED_DATA_u, }} -RIDL!{#[uuid(0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63)] +RIDL! {#[uuid(0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63)] interface ID3D12DeviceRemovedExtendedDataSettings(ID3D12DeviceRemovedExtendedDataSettingsVtbl) : IUnknown(IUnknownVtbl) { fn SetAutoBreadcrumbsEnablement( @@ -3516,7 +3678,7 @@ interface ID3D12DeviceRemovedExtendedDataSettings(ID3D12DeviceRemovedExtendedDat __MIDL__ID3D12DeviceRemovedExtendedDataSettings0002: D3D12_DRED_ENABLEMENT, ) -> (), }} -RIDL!{#[uuid(0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71)] +RIDL! {#[uuid(0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71)] interface ID3D12DeviceRemovedExtendedData(ID3D12DeviceRemovedExtendedDataVtbl) : IUnknown(IUnknownVtbl) { fn GetAutoBreadcrumbsOutput( @@ -3526,19 +3688,39 @@ RIDL!{#[uuid(0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4 pOutput: *mut D3D12_DRED_PAGE_FAULT_OUTPUT, ) -> HRESULT, }} -ENUM!{enum D3D12_BACKGROUND_PROCESSING_MODE { +RIDL! {#[uuid(0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06)] + interface ID3D12DeviceRemovedExtendedData1(ID3D12DeviceRemovedExtendedData1Vtbl) + : ID3D12DeviceRemovedExtendedData(ID3D12DeviceRemovedExtendedDataVtbl) { + fn GetAutoBreadcrumbsOutput1( + pOutput: *mut D3D12_DRED_AUTO_BREADCRUMBS_OUTPUT1, + ) -> HRESULT, + fn GetPageFaultAllocationOutput1( + pOutput: *mut D3D12_DRED_PAGE_FAULT_OUTPUT1, + ) -> HRESULT, + } +} +RIDL! {#[uuid(0x67FC5816, 0xE4CA, 0x4915, 0xBF, 0x18, 0x42, 0x54, 0x12, 0x72, 0xDA, 0x54)] + interface ID3D12DeviceRemovedExtendedData2(ID3D12DeviceRemovedExtendedData2Vtbl) + : ID3D12DeviceRemovedExtendedData1(ID3D12DeviceRemovedExtendedData1Vtbl) { + fn GetPageFaultAllocationOutput2( + pOutput: *mut D3D12_DRED_PAGE_FAULT_OUTPUT2, + ) -> HRESULT, + fn GetDeviceState() -> D3D12_DRED_DEVICE_STATE, + } +} +ENUM! {enum D3D12_BACKGROUND_PROCESSING_MODE { D3D12_BACKGROUND_PROCESSING_MODE_ALLOWED = 0, D3D12_BACKGROUND_PROCESSING_MODE_ALLOW_INTRUSIVE_MEASUREMENTS = 1, D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_BACKGROUND_WORK = 2, D3D12_BACKGROUND_PROCESSING_MODE_DISABLE_PROFILING_BY_SYSTEM = 3, }} -ENUM!{enum D3D12_MEASUREMENTS_ACTION { +ENUM! {enum D3D12_MEASUREMENTS_ACTION { D3D12_MEASUREMENTS_ACTION_KEEP_ALL = 0, D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS = 1, D3D12_MEASUREMENTS_ACTION_COMMIT_RESULTS_HIGH_PRIORITY = 2, D3D12_MEASUREMENTS_ACTION_DISCARD_PREVIOUS = 3, }} -RIDL!{#[uuid(0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc)] +RIDL! {#[uuid(0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc)] interface ID3D12Device6(ID3D12Device6Vtbl): ID3D12Device5(ID3D12Device5Vtbl) { fn SetBackgroundProcessingMode( Mode: D3D12_BACKGROUND_PROCESSING_MODE, @@ -3547,58 +3729,142 @@ interface ID3D12Device6(ID3D12Device6Vtbl): ID3D12Device5(ID3D12Device5Vtbl) { pbFurtherMeasurementsDesired: *mut BOOL, ) -> HRESULT, }} -RIDL!{#[uuid(0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19)] +STRUCT! {struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPE_COUNT{ + NodeIndex: UINT, + Count: UINT, +}} +STRUCT! {struct D3D12_FEATURE_DATA_PROTECTED_RESOURCE_SESSION_TYPES{ + NodeIndex: UINT, + Count: UINT, + pTypes: *mut GUID, +}} +STRUCT! {struct D3D12_PROTECTED_RESOURCE_SESSION_DESC1{ + NodeMask: UINT, + Flags: D3D12_PROTECTED_RESOURCE_SESSION_FLAGS, + ProtectionType: GUID, +}} +RIDL! {#[uuid(0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09)] + interface ID3D12ProtectedResourceSession1(ID3D12ProtectedResourceSession1Vtbl) + : ID3D12ProtectedResourceSession(ID3D12ProtectedResourceSessionVtbl) { + fn GetDesc1() -> D3D12_PROTECTED_RESOURCE_SESSION_DESC1, +}} + +RIDL! {#[uuid(0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b)] + interface ID3D12Device7(ID3D12Device7Vtbl) + : ID3D12Device6(ID3D12Device6Vtbl) { + fn AddToStateObject( + pAddition: *const D3D12_STATE_OBJECT_DESC, + pStateObjectToGrowFrom: *mut ID3D12StateObject, + riid: REFIID, + ppNewStateObject: *mut *mut c_void, + ) -> HRESULT, + fn CreateProtectedResourceSession1( + pDesc: *const D3D12_PROTECTED_RESOURCE_SESSION_DESC1, + riid: REFIID, + ppSession: *mut *mut c_void, + ) -> HRESULT, +}} + +RIDL! {#[uuid(0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3)] + interface ID3D12Device8(ID3D12Device8Vtbl) + : ID3D12Device7(ID3D12Device7Vtbl) { + fn GetResourceAllocationInfo2( + visibleMask: UINT, + numResourceDescs: UINT, + pResourceDescs: *const D3D12_RESOURCE_DESC1, + pResourceAllocationInfo1: *mut D3D12_RESOURCE_ALLOCATION_INFO1, + ) -> D3D12_RESOURCE_ALLOCATION_INFO, + fn CreateCommittedResource2( + pHeapProperties: *const D3D12_HEAP_PROPERTIES, + HeapFlags: D3D12_HEAP_FLAGS, + pDesc: *const D3D12_RESOURCE_DESC1, + InitialResourceState: D3D12_RESOURCE_STATES, + pOptimizedClearValue: *const D3D12_CLEAR_VALUE, + pProtectedSession: *mut ID3D12ProtectedResourceSession, + riidResource: REFIID, + ppvResource: *mut *mut c_void, + ) -> HRESULT, + fn CreatePlacedResource1( + pHeap: *mut ID3D12Heap, + HeapOffset: UINT64, + pDesc: *const D3D12_RESOURCE_DESC1, + InitialState: D3D12_RESOURCE_STATES, + pOptimizedClearValue: *const D3D12_CLEAR_VALUE, + riid: REFIID, + ppvResource: *mut *mut c_void, + ) -> HRESULT, + fn CreateSamplerFeedbackUnorderedAccessView( + pTargetedResource: *mut ID3D12Resource, + pFeedbackResource: *mut ID3D12Resource, + DestDescriptor: D3D12_CPU_DESCRIPTOR_HANDLE, + ) -> (), + fn GetCopyableFootprints1( + pResourceDesc: *const D3D12_RESOURCE_DESC1, + FirstSubresource: UINT, + NumSubresources: UINT, + BaseOffset: UINT64, + pLayouts: *mut D3D12_PLACED_SUBRESOURCE_FOOTPRINT, + pNumRows: *mut UINT, + pRowSizeInBytes: *mut UINT64, + pTotalBytes: *mut UINT64, + ) -> (), +}} +RIDL! {#[uuid(0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19)] interface ID3D12Resource1(ID3D12Resource1Vtbl): ID3D12Resource(ID3D12ResourceVtbl) { fn GetProtectedResourceSession( riid: REFIID, ppProtectedSession: *mut *mut c_void, ) -> HRESULT, }} -RIDL!{#[uuid(0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D)] +RIDL! {#[uuid(0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95)] +interface ID3D12Resource2(ID3D12Resource2Vtbl): ID3D12Resource1(ID3D12Resource1Vtbl) { + fn GetDesc1() -> D3D12_RESOURCE_DESC1, +}} +RIDL! {#[uuid(0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D)] interface ID3D12Heap1(ID3D12Heap1Vtbl): ID3D12Heap(ID3D12HeapVtbl) { fn GetProtectedResourceSession( riid: REFIID, ppProtectedSession: *mut *mut c_void, ) -> HRESULT, }} -RIDL!{#[uuid(0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D)] +RIDL! {#[uuid(0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D)] interface ID3D12GraphicsCommandList3(ID3D12GraphicsCommandList3Vtbl) : ID3D12GraphicsCommandList2(ID3D12GraphicsCommandList2Vtbl) { fn SetProtectedResourceSession( pProtectedResourceSession: *mut ID3D12ProtectedResourceSession, ) -> (), }} -ENUM!{enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE { +ENUM! {enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE { D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0, D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = 1, D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = 2, D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = 3, }} -STRUCT!{struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS { +STRUCT! {struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS { ClearValue: D3D12_CLEAR_VALUE, }} -UNION!{union D3D12_RENDER_PASS_BEGINNING_ACCESS_u { +UNION! {union D3D12_RENDER_PASS_BEGINNING_ACCESS_u { [u32; 4], Clear Clear_mut: D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS, }} -STRUCT!{struct D3D12_RENDER_PASS_BEGINNING_ACCESS { +STRUCT! {struct D3D12_RENDER_PASS_BEGINNING_ACCESS { Type: D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE, u: D3D12_RENDER_PASS_BEGINNING_ACCESS_u, }} -ENUM!{enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE { +ENUM! {enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE { D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0, D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = 1, D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = 2, D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = 3, }} -STRUCT!{struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS { +STRUCT! {struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS { SrcSubresource: UINT, DstSubresource: UINT, DstX: UINT, DstY: UINT, SrcRect: D3D12_RECT, }} -STRUCT!{struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS { +STRUCT! {struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS { pSrcResource: *mut ID3D12Resource, pDstResource: *mut ID3D12Resource, SubresourceCount: UINT, @@ -3607,40 +3873,40 @@ STRUCT!{struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS { ResolveMode: D3D12_RESOLVE_MODE, PreserveResolveSource: BOOL, }} -UNION!{union D3D12_RENDER_PASS_ENDING_ACCESS_u { +UNION! {union D3D12_RENDER_PASS_ENDING_ACCESS_u { [u64; 6], Resolve Resolve_mut: D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS, }} -STRUCT!{struct D3D12_RENDER_PASS_ENDING_ACCESS { +STRUCT! {struct D3D12_RENDER_PASS_ENDING_ACCESS { Type: D3D12_RENDER_PASS_ENDING_ACCESS_TYPE, u: D3D12_RENDER_PASS_ENDING_ACCESS_u, }} -STRUCT!{struct D3D12_RENDER_PASS_RENDER_TARGET_DESC { +STRUCT! {struct D3D12_RENDER_PASS_RENDER_TARGET_DESC { cpuDescriptor: D3D12_CPU_DESCRIPTOR_HANDLE, BeginningAccess: D3D12_RENDER_PASS_BEGINNING_ACCESS, EndingAccess: D3D12_RENDER_PASS_ENDING_ACCESS, }} -STRUCT!{struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC { +STRUCT! {struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC { 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, }} -ENUM!{enum D3D12_RENDER_PASS_FLAGS { +ENUM! {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, }} -RIDL!{#[uuid(0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70)] +RIDL! {#[uuid(0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70)] interface ID3D12MetaCommand(ID3D12MetaCommandVtbl) : ID3D12Pageable(ID3D12PageableVtbl) { fn GetRequiredParameterResourceSize( Stage: D3D12_META_COMMAND_PARAMETER_STAGE, ParameterIndex: UINT, ) -> UINT64, }} -STRUCT!{struct D3D12_DISPATCH_RAYS_DESC { +STRUCT! {struct D3D12_DISPATCH_RAYS_DESC { RayGenerationShaderRecord: D3D12_GPU_VIRTUAL_ADDRESS_RANGE, MissShaderTable: D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE, HitGroupTable: D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE, @@ -3649,7 +3915,7 @@ STRUCT!{struct D3D12_DISPATCH_RAYS_DESC { Height: UINT, Depth: UINT, }} -RIDL!{#[uuid(0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74)] +RIDL! {#[uuid(0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74)] interface ID3D12GraphicsCommandList4(ID3D12GraphicsCommandList4Vtbl) : ID3D12GraphicsCommandList3(ID3D12GraphicsCommandList3Vtbl) { fn BeginRenderPass( @@ -3691,24 +3957,91 @@ interface ID3D12GraphicsCommandList4(ID3D12GraphicsCommandList4Vtbl) pDesc: *const D3D12_DISPATCH_RAYS_DESC, ) -> (), }} -RIDL!{#[uuid(0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5)] +ENUM! {enum D3D12_SHADER_CACHE_MODE { + D3D12_SHADER_CACHE_MODE_MEMORY, + D3D12_SHADER_CACHE_MODE_DISK, +}} +ENUM! {enum D3D12_SHADER_CACHE_FLAGS { + D3D12_SHADER_CACHE_FLAG_NONE = 0x0, + D3D12_SHADER_CACHE_FLAG_DRIVER_VERSIONED = 0x1, + D3D12_SHADER_CACHE_FLAG_USE_WORKING_DIR = 0x2, +}} +STRUCT! {struct D3D12_SHADER_CACHE_SESSION_DESC { + Identifier: GUID, + Mode: D3D12_SHADER_CACHE_MODE, + Flags: D3D12_SHADER_CACHE_FLAGS, + + MaximumInMemoryCacheSizeBytes: UINT, + MaximumInMemoryCacheEntries: UINT, + + MaximumValueFileSizeBytes: UINT, + + Version: UINT64, +}} +RIDL! {#[uuid(0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8)] +interface ID3D12ShaderCacheSession(ID3D12ShaderCacheSessionVtbl): ID3D12DeviceChild(ID3D12DeviceChildVtbl) { + fn FindValue( + pKey: *const c_void, + KeySize: UINT, + pValue: *mut c_void, + pValueSize: *mut UINT, + ) -> HRESULT, + fn StoreValue( + pKey: *const c_void, + KeySize: UINT, + pValue: *const c_void, + ValueSize: UINT, + ) -> HRESULT, + fn SetDeleteOnDestroy() -> (), + fn GetDesc() -> D3D12_SHADER_CACHE_SESSION_DESC, +}} +ENUM! {enum D3D12_SHADER_CACHE_KIND_FLAGS { + D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CACHE_FOR_DRIVER = 0x1, + D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_D3D_CONVERSIONS = 0x2, + D3D12_SHADER_CACHE_KIND_FLAG_IMPLICIT_DRIVER_MANAGED = 0x4, + D3D12_SHADER_CACHE_KIND_FLAG_APPLICATION_MANAGED = 0x8, +}} +ENUM! {enum D3D12_SHADER_CACHE_CONTROL_FLAGS{ + D3D12_SHADER_CACHE_CONTROL_FLAG_DISABLE = 0x1, + D3D12_SHADER_CACHE_CONTROL_FLAG_ENABLE = 0x2, + D3D12_SHADER_CACHE_CONTROL_FLAG_CLEAR = 0x4, +}} +RIDL! {#[uuid(0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x8c)] +interface ID3D12Device9(ID3D12Device9Vtbl): ID3D12Device8(ID3D12Device8Vtbl) { + fn CreateShaderCacheSession( + pDesc: *const D3D12_SHADER_CACHE_SESSION_DESC, + riid: REFIID, + ppvSession: *mut *mut c_void, + ) -> HRESULT, + fn ShaderCacheControl( + Kinds: D3D12_SHADER_CACHE_KIND_FLAGS, + Control: D3D12_SHADER_CACHE_CONTROL_FLAGS, + ) -> HRESULT, + fn CreateCommandQueue1( + pDesc: *const D3D12_COMMAND_QUEUE_DESC, + CreatorID: REFIID, + riid: REFIID, + ppCommandQueue: *mut *mut c_void, + ) -> HRESULT, +}} +RIDL! {#[uuid(0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5)] interface ID3D12Tools(ID3D12ToolsVtbl): IUnknown(IUnknownVtbl) { fn EnableShaderInstrumentation( bEnable: BOOL, ) -> (), fn ShaderInstrumentationEnabled() -> BOOL, }} -STRUCT!{struct D3D12_SUBRESOURCE_DATA { +STRUCT! {struct D3D12_SUBRESOURCE_DATA { pData: *const c_void, RowPitch: LONG_PTR, SlicePitch: LONG_PTR, }} -STRUCT!{struct D3D12_MEMCPY_DEST { +STRUCT! {struct D3D12_MEMCPY_DEST { pData: *mut c_void, RowPitch: SIZE_T, SlicePitch: SIZE_T, }} -FN!{stdcall PFN_D3D12_CREATE_DEVICE( +FN! {stdcall PFN_D3D12_CREATE_DEVICE( *mut IUnknown, D3D_FEATURE_LEVEL, REFIID, @@ -3722,15 +4055,12 @@ extern "system" { ppDevice: *mut *mut c_void, ) -> HRESULT; } -FN!{stdcall PFN_D3D12_GET_DEBUG_INTERFACE( +FN! {stdcall PFN_D3D12_GET_DEBUG_INTERFACE( REFIID, *mut *mut c_void, ) -> HRESULT} extern "system" { - pub fn D3D12GetDebugInterface( - riid: REFGUID, - ppvDebug: *mut *mut c_void, - ) -> HRESULT; + pub fn D3D12GetDebugInterface(riid: REFGUID, ppvDebug: *mut *mut c_void) -> HRESULT; pub fn D3D12EnableExperimentalFeatures( NumFeatures: UINT, pIIDs: *const IID, @@ -3739,38 +4069,38 @@ extern "system" { ) -> HRESULT; } // experimental features -DEFINE_GUID!{D3D12ExperimentalShaderModels, - 0x76f5573e, 0xf13a, 0x40f5, 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f} -DEFINE_GUID!{D3D12TiledResourceTier4, - 0xc9c4725f, 0xa81a, 0x4f56, 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb} -DEFINE_GUID!{D3D12MetaCommand, - 0xc734c97e, 0x8077, 0x48c8, 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77} -DEFINE_GUID!{D3D12ComputeOnlyDevices, - 0x50f7ab08, 0x4b6d, 0x4e14, 0x89, 0xa5, 0x5d, 0x16, 0xcd, 0x27, 0x25, 0x94} -ENUM!{enum D3D12_AXIS_SHADING_RATE { +DEFINE_GUID! {D3D12ExperimentalShaderModels, +0x76f5573e, 0xf13a, 0x40f5, 0xb2, 0x97, 0x81, 0xce, 0x9e, 0x18, 0x93, 0x3f} +DEFINE_GUID! {D3D12TiledResourceTier4, +0xc9c4725f, 0xa81a, 0x4f56, 0x8c, 0x5b, 0xc5, 0x10, 0x39, 0xd6, 0x94, 0xfb} +DEFINE_GUID! {D3D12MetaCommand, +0xc734c97e, 0x8077, 0x48c8, 0x9f, 0xdc, 0xd9, 0xd1, 0xdd, 0x31, 0xdd, 0x77} +DEFINE_GUID! {D3D12ComputeOnlyDevices, +0x50f7ab08, 0x4b6d, 0x4e14, 0x89, 0xa5, 0x5d, 0x16, 0xcd, 0x27, 0x25, 0x94} +RIDL! {#[uuid(0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc7)] +interface ID3D12SDKConfiguration(ID3D12SDKConfigurationVtbl): IUnknown(IUnknownVtbl) { + fn GetSDKVersion( + SDKVersion: UINT, + SDKPath: LPCSTR, + ) -> HRESULT, +}} +ENUM! {enum D3D12_AXIS_SHADING_RATE { D3D12_AXIS_SHADING_RATE_1X = 0, D3D12_AXIS_SHADING_RATE_2X = 0x1, D3D12_AXIS_SHADING_RATE_4X = 0x2, }} pub const D3D12_SHADING_RATE_X_AXIS_SHIFT: UINT = 2; pub const D3D12_SHADING_RATE_VALID_MASK: UINT = 3; -pub fn D3D12_MAKE_COARSE_SHADING_RATE( - x: UINT, - y: UINT, -) -> UINT { +pub fn D3D12_MAKE_COARSE_SHADING_RATE(x: UINT, y: UINT) -> UINT { (x << D3D12_SHADING_RATE_X_AXIS_SHIFT) | y } -pub fn D3D12_GET_COARSE_SHADING_RATE_X_AXIS( - x: UINT, -) -> UINT { +pub fn D3D12_GET_COARSE_SHADING_RATE_X_AXIS(x: UINT) -> UINT { (x >> D3D12_SHADING_RATE_X_AXIS_SHIFT) & D3D12_SHADING_RATE_VALID_MASK } -pub fn D3D12_GET_COARSE_SHADING_RATE_Y_AXIS( - y: UINT, -) -> UINT { +pub fn D3D12_GET_COARSE_SHADING_RATE_Y_AXIS(y: UINT) -> UINT { y & D3D12_SHADING_RATE_VALID_MASK } -ENUM!{enum D3D12_SHADING_RATE { +ENUM! {enum D3D12_SHADING_RATE { D3D12_SHADING_RATE_1X1 = 0, D3D12_SHADING_RATE_1X2 = 0x1, D3D12_SHADING_RATE_2X1 = 0x4, @@ -3779,14 +4109,14 @@ ENUM!{enum D3D12_SHADING_RATE { D3D12_SHADING_RATE_4X2 = 0x9, D3D12_SHADING_RATE_4X4 = 0xa, }} -ENUM!{enum D3D12_SHADING_RATE_COMBINER { +ENUM! {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, }} -RIDL!{#[uuid(0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea)] +RIDL! {#[uuid(0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea)] interface ID3D12GraphicsCommandList5(ID3D12GraphicsCommandList5Vtbl) : ID3D12GraphicsCommandList4(ID3D12GraphicsCommandList4Vtbl) { fn RSSetShadingRate( @@ -3797,93 +4127,113 @@ interface ID3D12GraphicsCommandList5(ID3D12GraphicsCommandList5Vtbl) shadingRateImage: *mut ID3D12Resource, ) -> (), }} -DEFINE_GUID!{IID_ID3D12Object, - 0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8} -DEFINE_GUID!{IID_ID3D12DeviceChild, - 0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57} -DEFINE_GUID!{IID_ID3D12RootSignature, - 0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14} -DEFINE_GUID!{IID_ID3D12RootSignatureDeserializer, - 0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46} -DEFINE_GUID!{IID_ID3D12VersionedRootSignatureDeserializer, - 0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0} -DEFINE_GUID!{IID_ID3D12Pageable, - 0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6} -DEFINE_GUID!{IID_ID3D12Heap, - 0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3} -DEFINE_GUID!{IID_ID3D12Resource, - 0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad} -DEFINE_GUID!{IID_ID3D12CommandAllocator, - 0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24} -DEFINE_GUID!{IID_ID3D12Fence, - 0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76} -DEFINE_GUID!{IID_ID3D12Fence1, - 0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a} -DEFINE_GUID!{IID_ID3D12PipelineState, - 0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45} -DEFINE_GUID!{IID_ID3D12DescriptorHeap, - 0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51} -DEFINE_GUID!{IID_ID3D12QueryHeap, - 0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4} -DEFINE_GUID!{IID_ID3D12CommandSignature, - 0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1} -DEFINE_GUID!{IID_ID3D12CommandList, - 0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5} -DEFINE_GUID!{IID_ID3D12GraphicsCommandList, - 0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55} -DEFINE_GUID!{IID_ID3D12GraphicsCommandList1, - 0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7} -DEFINE_GUID!{IID_ID3D12GraphicsCommandList2, - 0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28} -DEFINE_GUID!{IID_ID3D12CommandQueue, - 0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed} -DEFINE_GUID!{IID_ID3D12Device, - 0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7} -DEFINE_GUID!{IID_ID3D12PipelineLibrary, - 0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f} -DEFINE_GUID!{IID_ID3D12PipelineLibrary1, - 0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3} -DEFINE_GUID!{IID_ID3D12Device1, - 0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e} -DEFINE_GUID!{IID_ID3D12Device2, - 0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28} -DEFINE_GUID!{IID_ID3D12Device3, - 0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98} -DEFINE_GUID!{IID_ID3D12ProtectedSession, - 0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B} -DEFINE_GUID!{IID_ID3D12ProtectedResourceSession, - 0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D} -DEFINE_GUID!{IID_ID3D12Device4, - 0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5} -DEFINE_GUID!{IID_ID3D12LifetimeOwner, - 0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8} -DEFINE_GUID!{IID_ID3D12SwapChainAssistant, - 0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f} -DEFINE_GUID!{IID_ID3D12LifetimeTracker, - 0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13} -DEFINE_GUID!{IID_ID3D12StateObject, - 0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d} -DEFINE_GUID!{IID_ID3D12StateObjectProperties, - 0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60} -DEFINE_GUID!{IID_ID3D12Device5, - 0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d} -DEFINE_GUID!{IID_ID3D12DeviceRemovedExtendedDataSettings, - 0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63} -DEFINE_GUID!{IID_ID3D12DeviceRemovedExtendedData, - 0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71} -DEFINE_GUID!{IID_ID3D12Device6, - 0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc} -DEFINE_GUID!{IID_ID3D12Resource1, - 0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19} -DEFINE_GUID!{IID_ID3D12Heap1, - 0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D} -DEFINE_GUID!{IID_ID3D12GraphicsCommandList3, - 0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D} -DEFINE_GUID!{IID_ID3D12MetaCommand, - 0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70} -DEFINE_GUID!{IID_ID3D12GraphicsCommandList4, - 0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74} -DEFINE_GUID!{IID_ID3D12Tools, - 0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5} -DEFINE_GUID!{IID_ID3D12GraphicsCommandList5, - 0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea} +DEFINE_GUID! {IID_ID3D12Object, +0xc4fec28f, 0x7966, 0x4e95, 0x9f, 0x94, 0xf4, 0x31, 0xcb, 0x56, 0xc3, 0xb8} +DEFINE_GUID! {IID_ID3D12DeviceChild, +0x905db94b, 0xa00c, 0x4140, 0x9d, 0xf5, 0x2b, 0x64, 0xca, 0x9e, 0xa3, 0x57} +DEFINE_GUID! {IID_ID3D12RootSignature, +0xc54a6b66, 0x72df, 0x4ee8, 0x8b, 0xe5, 0xa9, 0x46, 0xa1, 0x42, 0x92, 0x14} +DEFINE_GUID! {IID_ID3D12RootSignatureDeserializer, +0x34AB647B, 0x3CC8, 0x46AC, 0x84, 0x1B, 0xC0, 0x96, 0x56, 0x45, 0xC0, 0x46} +DEFINE_GUID! {IID_ID3D12VersionedRootSignatureDeserializer, +0x7F91CE67, 0x090C, 0x4BB7, 0xB7, 0x8E, 0xED, 0x8F, 0xF2, 0xE3, 0x1D, 0xA0} +DEFINE_GUID! {IID_ID3D12Pageable, +0x63ee58fb, 0x1268, 0x4835, 0x86, 0xda, 0xf0, 0x08, 0xce, 0x62, 0xf0, 0xd6} +DEFINE_GUID! {IID_ID3D12Heap, +0x6b3b2502, 0x6e51, 0x45b3, 0x90, 0xee, 0x98, 0x84, 0x26, 0x5e, 0x8d, 0xf3} +DEFINE_GUID! {IID_ID3D12Resource, +0x696442be, 0xa72e, 0x4059, 0xbc, 0x79, 0x5b, 0x5c, 0x98, 0x04, 0x0f, 0xad} +DEFINE_GUID! {IID_ID3D12CommandAllocator, +0x6102dee4, 0xaf59, 0x4b09, 0xb9, 0x99, 0xb4, 0x4d, 0x73, 0xf0, 0x9b, 0x24} +DEFINE_GUID! {IID_ID3D12Fence, +0x0a753dcf, 0xc4d8, 0x4b91, 0xad, 0xf6, 0xbe, 0x5a, 0x60, 0xd9, 0x5a, 0x76} +DEFINE_GUID! {IID_ID3D12Fence1, +0x433685fe, 0xe22b, 0x4ca0, 0xa8, 0xdb, 0xb5, 0xb4, 0xf4, 0xdd, 0x0e, 0x4a} +DEFINE_GUID! {IID_ID3D12PipelineState, +0x765a30f3, 0xf624, 0x4c6f, 0xa8, 0x28, 0xac, 0xe9, 0x48, 0x62, 0x24, 0x45} +DEFINE_GUID! {IID_ID3D12DescriptorHeap, +0x8efb471d, 0x616c, 0x4f49, 0x90, 0xf7, 0x12, 0x7b, 0xb7, 0x63, 0xfa, 0x51} +DEFINE_GUID! {IID_ID3D12QueryHeap, +0x0d9658ae, 0xed45, 0x469e, 0xa6, 0x1d, 0x97, 0x0e, 0xc5, 0x83, 0xca, 0xb4} +DEFINE_GUID! {IID_ID3D12CommandSignature, +0xc36a797c, 0xec80, 0x4f0a, 0x89, 0x85, 0xa7, 0xb2, 0x47, 0x50, 0x82, 0xd1} +DEFINE_GUID! {IID_ID3D12CommandList, +0x7116d91c, 0xe7e4, 0x47ce, 0xb8, 0xc6, 0xec, 0x81, 0x68, 0xf4, 0x37, 0xe5} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList, +0x5b160d0f, 0xac1b, 0x4185, 0x8b, 0xa8, 0xb3, 0xae, 0x42, 0xa5, 0xa4, 0x55} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList1, +0x553103fb, 0x1fe7, 0x4557, 0xbb, 0x38, 0x94, 0x6d, 0x7d, 0x0e, 0x7c, 0xa7} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList2, +0x38C3E585, 0xFF17, 0x412C, 0x91, 0x50, 0x4F, 0xC6, 0xF9, 0xD7, 0x2A, 0x28} +DEFINE_GUID! {IID_ID3D12CommandQueue, +0x0ec870a6, 0x5d7e, 0x4c22, 0x8c, 0xfc, 0x5b, 0xaa, 0xe0, 0x76, 0x16, 0xed} +DEFINE_GUID! {IID_ID3D12Device, +0x189819f1, 0x1db6, 0x4b57, 0xbe, 0x54, 0x18, 0x21, 0x33, 0x9b, 0x85, 0xf7} +DEFINE_GUID! {IID_ID3D12PipelineLibrary, +0xc64226a8, 0x9201, 0x46af, 0xb4, 0xcc, 0x53, 0xfb, 0x9f, 0xf7, 0x41, 0x4f} +DEFINE_GUID! {IID_ID3D12PipelineLibrary1, +0x80eabf42, 0x2568, 0x4e5e, 0xbd, 0x82, 0xc3, 0x7f, 0x86, 0x96, 0x1d, 0xc3} +DEFINE_GUID! {IID_ID3D12Device1, +0x77acce80, 0x638e, 0x4e65, 0x88, 0x95, 0xc1, 0xf2, 0x33, 0x86, 0x86, 0x3e} +DEFINE_GUID! {IID_ID3D12Device2, +0x30baa41e, 0xb15b, 0x475c, 0xa0, 0xbb, 0x1a, 0xf5, 0xc5, 0xb6, 0x43, 0x28} +DEFINE_GUID! {IID_ID3D12Device3, +0x81dadc15, 0x2bad, 0x4392, 0x93, 0xc5, 0x10, 0x13, 0x45, 0xc4, 0xaa, 0x98} +DEFINE_GUID! {IID_ID3D12ProtectedSession, +0xA1533D18, 0x0AC1, 0x4084, 0x85, 0xB9, 0x89, 0xA9, 0x61, 0x16, 0x80, 0x6B} +DEFINE_GUID! {IID_ID3D12ProtectedResourceSession, +0x6CD696F4, 0xF289, 0x40CC, 0x80, 0x91, 0x5A, 0x6C, 0x0A, 0x09, 0x9C, 0x3D} +DEFINE_GUID! {IID_ID3D12Device4, +0xe865df17, 0xa9ee, 0x46f9, 0xa4, 0x63, 0x30, 0x98, 0x31, 0x5a, 0xa2, 0xe5} +DEFINE_GUID! {IID_ID3D12LifetimeOwner, +0xe667af9f, 0xcd56, 0x4f46, 0x83, 0xce, 0x03, 0x2e, 0x59, 0x5d, 0x70, 0xa8} +DEFINE_GUID! {IID_ID3D12SwapChainAssistant, +0xf1df64b6, 0x57fd, 0x49cd, 0x88, 0x07, 0xc0, 0xeb, 0x88, 0xb4, 0x5c, 0x8f} +DEFINE_GUID! {IID_ID3D12LifetimeTracker, +0x3fd03d36, 0x4eb1, 0x424a, 0xa5, 0x82, 0x49, 0x4e, 0xcb, 0x8b, 0xa8, 0x13} +DEFINE_GUID! {IID_ID3D12StateObject, +0x47016943, 0xfca8, 0x4594, 0x93, 0xea, 0xaf, 0x25, 0x8b, 0x55, 0x34, 0x6d} +DEFINE_GUID! {IID_ID3D12StateObjectProperties, +0xde5fa827, 0x9bf9, 0x4f26, 0x89, 0xff, 0xd7, 0xf5, 0x6f, 0xde, 0x38, 0x60} +DEFINE_GUID! {IID_ID3D12Device5, +0x8b4f173b, 0x2fea, 0x4b80, 0x8f, 0x58, 0x43, 0x07, 0x19, 0x1a, 0xb9, 0x5d} +DEFINE_GUID! {IID_ID3D12DeviceRemovedExtendedDataSettings, +0x82BC481C, 0x6B9B, 0x4030, 0xAE, 0xDB, 0x7E, 0xE3, 0xD1, 0xDF, 0x1E, 0x63} +DEFINE_GUID! {IID_ID3D12DeviceRemovedExtendedData, +0x98931D33, 0x5AE8, 0x4791, 0xAA, 0x3C, 0x1A, 0x73, 0xA2, 0x93, 0x4E, 0x71} +DEFINE_GUID! {IID_ID3D12DeviceRemovedExtendedData1, +0x9727A022, 0xCF1D, 0x4DDA, 0x9E, 0xBA, 0xEF, 0xFA, 0x65, 0x3F, 0xC5, 0x06} +DEFINE_GUID! {IID_ID3D12DeviceRemovedExtendedData2, +0x67FC5816, 0xE4CA, 0x4915, 0xBF, 0x18, 0x42, 0x54, 0x12, 0x72, 0xDA, 0x54} +DEFINE_GUID! {IID_ID3D12Device6, +0xc70b221b, 0x40e4, 0x4a17, 0x89, 0xaf, 0x02, 0x5a, 0x07, 0x27, 0xa6, 0xdc} +DEFINE_GUID! {IID_ID3D12ProtectedResourceSession1, +0xD6F12DD6, 0x76FB, 0x406E, 0x89, 0x61, 0x42, 0x96, 0xEE, 0xFC, 0x04, 0x09} +DEFINE_GUID! {IID_ID3D12Device7, +0x5c014b53, 0x68a1, 0x4b9b, 0x8b, 0xd1, 0xdd, 0x60, 0x46, 0xb9, 0x35, 0x8b} +DEFINE_GUID! {IID_ID3D12Device8, +0x9218E6BB, 0xF944, 0x4F7E, 0xA7, 0x5C, 0xB1, 0xB2, 0xC7, 0xB7, 0x01, 0xF3} +DEFINE_GUID! {IID_ID3D12Resource1, +0x9D5E227A, 0x4430, 0x4161, 0x88, 0xB3, 0x3E, 0xCA, 0x6B, 0xB1, 0x6E, 0x19} +DEFINE_GUID! {IID_ID3D12Resource2, +0xBE36EC3B, 0xEA85, 0x4AEB, 0xA4, 0x5A, 0xE9, 0xD7, 0x64, 0x04, 0xA4, 0x95} +DEFINE_GUID! {IID_ID3D12Heap1, +0x572F7389, 0x2168, 0x49E3, 0x96, 0x93, 0xD6, 0xDF, 0x58, 0x71, 0xBF, 0x6D} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList3, +0x6FDA83A7, 0xB84C, 0x4E38, 0x9A, 0xC8, 0xC7, 0xBD, 0x22, 0x01, 0x6B, 0x3D} +DEFINE_GUID! {IID_ID3D12MetaCommand, +0xDBB84C27, 0x36CE, 0x4FC9, 0xB8, 0x01, 0xF0, 0x48, 0xC4, 0x6A, 0xC5, 0x70} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList4, +0x8754318e, 0xd3a9, 0x4541, 0x98, 0xcf, 0x64, 0x5b, 0x50, 0xdc, 0x48, 0x74} +DEFINE_GUID! {IID_ID3D12ShaderCacheSession, +0x28e2495d, 0x0f64, 0x4ae4, 0xa6, 0xec, 0x12, 0x92, 0x55, 0xdc, 0x49, 0xa8} +DEFINE_GUID! {IID_ID3D12Device9, +0x4c80e962, 0xf032, 0x4f60, 0xbc, 0x9e, 0xeb, 0xc2, 0xcf, 0xa1, 0xd8, 0x3c} +DEFINE_GUID! {IID_ID3D12Tools, +0x7071e1f0, 0xe84b, 0x4b33, 0x97, 0x4f, 0x12, 0xfa, 0x49, 0xde, 0x65, 0xc5} +DEFINE_GUID! {IID_ID3D12SDKConfiguration, +0xe9eb5314, 0x33aa, 0x42b2, 0xa7, 0x18, 0xd7, 0x7f, 0x58, 0xb1, 0xf1, 0xc} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList5, +0x55050859, 0x4024, 0x474c, 0x87, 0xf5, 0x64, 0x72, 0xea, 0xee, 0x44, 0xea} +DEFINE_GUID! {IID_ID3D12GraphicsCommandList6, +0xc3827890, 0xe548, 0x4cfa, 0x96, 0xcf, 0x56, 0x89, 0xa9, 0x37, 0x0f, 0x80}