[PATCH] include: Update the d3d12 headers from vkd3d.

Henri Verbeet hverbeet at codeweavers.com
Sat Oct 3 06:19:57 CDT 2020


This corresponds to vkd3d as of commit
ec6fe1cc9dd31ed17d5c9818632ce9ab83d6c441.

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
 include/d3d12.idl          | 390 ++++++++++++++++++++++++++++++++++++-
 include/d3d12sdklayers.idl |  13 ++
 2 files changed, 399 insertions(+), 4 deletions(-)

diff --git a/include/d3d12.idl b/include/d3d12.idl
index 8b1e85fcefe..9cb546b57ee 100644
--- a/include/d3d12.idl
+++ b/include/d3d12.idl
@@ -29,6 +29,8 @@ const UINT D3D12_MAX_ROOT_COST = 64;
 const UINT D3D12_VIEWPORT_BOUNDS_MAX = 32767;
 const UINT D3D12_VIEWPORT_BOUNDS_MIN = -32768;
 
+const UINT D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15;
+
 const UINT D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff;
 cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_ALPHA (1.0f)")
 cpp_quote("#define D3D12_DEFAULT_BLEND_FACTOR_BLUE (1.0f)")
@@ -42,6 +44,9 @@ const UINT D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff;
 const UINT D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff;
 cpp_quote("#define D3D12_FLOAT32_MAX (3.402823466e+38f)")
 const UINT D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32;
+const UINT D3D12_UAV_SLOT_COUNT = 64;
+const UINT D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
+const UINT D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096;
 const UINT D3D12_REQ_MIP_LEVELS = 15;
 const UINT D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048;
 const UINT D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384;
@@ -51,10 +56,22 @@ const UINT D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048;
 const UINT D3D12_REQ_TEXTURECUBE_DIMENSION = 16384;
 const UINT D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff;
 const UINT D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8;
+const UINT D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048;
+const UINT D3D12_SO_BUFFER_SLOT_COUNT = 4;
+const UINT D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff;
+const UINT D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff;
+const UINT D3D12_SO_OUTPUT_COMPONENT_COUNT = 128;
+const UINT D3D12_SO_STREAM_COUNT = 4;
 const UINT D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256;
+const UINT D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304;
 const UINT D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
+const UINT D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16;
+const UINT D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536;
+const UINT D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096;
+const UINT D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4;
 const UINT D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256;
 const UINT D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512;
+const UINT D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096;
 const UINT D3D12_VS_INPUT_REGISTER_COUNT = 32;
 const UINT D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16;
 
@@ -159,6 +176,74 @@ typedef enum D3D12_FORMAT_SUPPORT2
     D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x00004000,
 } D3D12_FORMAT_SUPPORT2;
 
+typedef enum D3D12_WRITEBUFFERIMMEDIATE_MODE
+{
+    D3D12_WRITEBUFFERIMMEDIATE_MODE_DEFAULT = 0x0,
+    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_IN = 0x1,
+    D3D12_WRITEBUFFERIMMEDIATE_MODE_MARKER_OUT = 0x2,
+} D3D12_WRITEBUFFERIMMEDIATE_MODE;
+
+typedef enum D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER
+{
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_NOT_SUPPORTED = 0x0,
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_1 = 0x1,
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER_2 = 0x2,
+}  D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER;
+
+typedef enum D3D12_SHADER_CACHE_SUPPORT_FLAGS
+{
+    D3D12_SHADER_CACHE_SUPPORT_NONE = 0x0,
+    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_FLAGS;
+
+typedef enum D3D12_COMMAND_LIST_SUPPORT_FLAGS
+{
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_NONE = 0x0,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_DIRECT = 0x1,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_BUNDLE = 0x2,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_COMPUTE = 0x4,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_COPY = 0x8,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_DECODE = 0x10,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_PROCESS = 0x20,
+    D3D12_COMMAND_LIST_SUPPORT_FLAG_VIDEO_ENCODE = 0x40,
+} D3D12_COMMAND_LIST_SUPPORT_FLAGS;
+
+typedef enum D3D12_VIEW_INSTANCING_TIER
+{
+    D3D12_VIEW_INSTANCING_TIER_NOT_SUPPORTED = 0x0,
+    D3D12_VIEW_INSTANCING_TIER_1 = 0x1,
+    D3D12_VIEW_INSTANCING_TIER_2 = 0x2,
+    D3D12_VIEW_INSTANCING_TIER_3 = 0x3,
+}  D3D12_VIEW_INSTANCING_TIER;
+
+typedef enum D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER
+{
+    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_0 = 0x0,
+    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER_1 = 0x1,
+}  D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER;
+
+typedef enum D3D12_HEAP_SERIALIZATION_TIER
+{
+    D3D12_HEAP_SERIALIZATION_TIER_0 = 0x0,
+    D3D12_HEAP_SERIALIZATION_TIER_10 = 0xa,
+}  D3D12_HEAP_SERIALIZATION_TIER;
+
+typedef enum D3D12_RENDER_PASS_TIER
+{
+    D3D12_RENDER_PASS_TIER_0 = 0x0,
+    D3D12_RENDER_PASS_TIER_1 = 0x1,
+    D3D12_RENDER_PASS_TIER_2 = 0x2,
+} D3D12_RENDER_PASS_TIER;
+
+typedef enum D3D12_RAYTRACING_TIER
+{
+    D3D12_RAYTRACING_TIER_NOT_SUPPORTED = 0x0,
+    D3D12_RAYTRACING_TIER_1_0 = 0xa,
+} D3D12_RAYTRACING_TIER;
+
 interface ID3D12Fence;
 interface ID3D12RootSignature;
 interface ID3D12Heap;
@@ -198,6 +283,18 @@ typedef struct D3D12_RANGE
     SIZE_T End;
 } D3D12_RANGE;
 
+typedef struct D3D12_RANGE_UINT64
+{
+    UINT64 Begin;
+    UINT64 End;
+} D3D12_RANGE_UINT64;
+
+typedef struct D3D12_SUBRESOURCE_RANGE_UINT64
+{
+    UINT Subresource;
+    D3D12_RANGE_UINT64 Range;
+} D3D12_SUBRESOURCE_RANGE_UINT64;
+
 typedef struct D3D12_RESOURCE_ALLOCATION_INFO
 {
     UINT64 SizeInBytes;
@@ -254,6 +351,21 @@ typedef struct D3D12_FEATURE_DATA_FORMAT_SUPPORT
     D3D12_FORMAT_SUPPORT2 Support2;
 } D3D12_FEATURE_DATA_FORMAT_SUPPORT;
 
+typedef enum D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS
+{
+    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0x00000000,
+    D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x00000001,
+} D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS);")
+
+typedef struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS
+{
+    DXGI_FORMAT Format;
+    UINT SampleCount;
+    D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags;
+    UINT NumQualityLevels;
+} D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS;
+
 typedef enum D3D12_HEAP_TYPE
 {
     D3D12_HEAP_TYPE_DEFAULT = 1,
@@ -265,6 +377,7 @@ typedef enum D3D12_HEAP_TYPE
 typedef 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,
 } D3D12_CPU_PAGE_PROPERTY;
@@ -481,6 +594,20 @@ typedef struct D3D12_RESOURCE_DESC
     D3D12_RESOURCE_FLAGS Flags;
 } D3D12_RESOURCE_DESC;
 
+typedef enum D3D12_RESOLVE_MODE
+{
+    D3D12_RESOLVE_MODE_DECOMPRESS = 0,
+    D3D12_RESOLVE_MODE_MIN = 1,
+    D3D12_RESOLVE_MODE_MAX = 2,
+    D3D12_RESOLVE_MODE_AVERAGE = 3,
+} D3D12_RESOLVE_MODE;
+
+typedef struct D3D12_SAMPLE_POSITION
+{
+    INT8 X;
+    INT8 Y;
+} D3D12_SAMPLE_POSITION;
+
 typedef enum D3D12_TEXTURE_COPY_TYPE
 {
     D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0,
@@ -532,7 +659,11 @@ typedef struct D3D12_DESCRIPTOR_RANGE
 
 typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS
 {
-    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
+    D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0x0,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
+    D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
 } D3D12_DESCRIPTOR_RANGE_FLAGS;
 
 typedef struct D3D12_DESCRIPTOR_RANGE1
@@ -572,7 +703,10 @@ typedef struct D3D12_ROOT_DESCRIPTOR
 
 typedef enum D3D12_ROOT_DESCRIPTOR_FLAGS
 {
-    D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0,
+    D3D12_ROOT_DESCRIPTOR_FLAG_NONE = 0x0,
+    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_VOLATILE = 0x2,
+    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
+    D3D12_ROOT_DESCRIPTOR_FLAG_DATA_STATIC = 0x8,
 } D3D12_ROOT_DESCRIPTOR_FLAGS;
 
 typedef struct D3D12_ROOT_DESCRIPTOR1
@@ -873,6 +1007,10 @@ cpp_quote("        | (((w) & D3D12_SHADER_COMPONENT_MAPPING_MASK) << (D3D12_SHAD
 cpp_quote("        | D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES)")
 cpp_quote("#define D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3)")
 
+cpp_quote("#define D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(i, mapping) \\")
+cpp_quote("        ((D3D12_SHADER_COMPONENT_MAPPING)(mapping >> (i * D3D12_SHADER_COMPONENT_MAPPING_SHIFT) \\")
+cpp_quote("        & D3D12_SHADER_COMPONENT_MAPPING_MASK))")
+
 typedef struct D3D12_BUFFER_SRV
 {
     UINT64 FirstElement;
@@ -1478,6 +1616,7 @@ typedef enum D3D12_COMMAND_QUEUE_PRIORITY
 {
     D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0,
     D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100,
+    D3D12_COMMAND_QUEUE_PRIORITY_GLOBAL_REALTIME = 10000,
 } D3D12_COMMAND_QUEUE_PRIORITY;
 
 typedef enum D3D12_COMMAND_QUEUE_FLAGS
@@ -1515,14 +1654,133 @@ typedef struct D3D12_FEATURE_DATA_FEATURE_LEVELS
     D3D_FEATURE_LEVEL MaxSupportedFeatureLevel;
 } D3D12_FEATURE_DATA_FEATURE_LEVELS;
 
+typedef struct D3D12_FEATURE_DATA_ROOT_SIGNATURE
+{
+    D3D_ROOT_SIGNATURE_VERSION HighestVersion;
+} D3D12_FEATURE_DATA_ROOT_SIGNATURE;
+
+typedef struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT
+{
+    UINT MaxGPUVirtualAddressBitsPerResource;
+    UINT MaxGPUVirtualAddressBitsPerProcess;
+} D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT;
+
+typedef enum D3D_SHADER_MODEL
+{
+    D3D_SHADER_MODEL_5_1 = 0x51,
+    D3D_SHADER_MODEL_6_0 = 0x60,
+} D3D_SHADER_MODEL;
+
+typedef struct D3D12_FEATURE_DATA_SHADER_MODEL
+{
+    D3D_SHADER_MODEL HighestShaderModel;
+} D3D12_FEATURE_DATA_SHADER_MODEL;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS1
+{
+    BOOL WaveOps;
+    UINT WaveLaneCountMin;
+    UINT WaveLaneCountMax;
+    UINT TotalLaneCount;
+    BOOL ExpandedComputeResourceStates;
+    BOOL Int64ShaderOps;
+}  D3D12_FEATURE_DATA_D3D12_OPTIONS1;
+
+typedef struct D3D12_FEATURE_DATA_ARCHITECTURE1
+{
+    UINT NodeIndex;
+    BOOL TileBasedRenderer;
+    BOOL UMA;
+    BOOL CacheCoherentUMA;
+    BOOL IsolatedMMU;
+}  D3D12_FEATURE_DATA_ARCHITECTURE1;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS2
+{
+    BOOL DepthBoundsTestSupported;
+    D3D12_PROGRAMMABLE_SAMPLE_POSITIONS_TIER ProgrammableSamplePositionsTier;
+}  D3D12_FEATURE_DATA_D3D12_OPTIONS2;
+
+typedef struct D3D12_FEATURE_DATA_SHADER_CACHE
+{
+    D3D12_SHADER_CACHE_SUPPORT_FLAGS SupportFlags;
+}  D3D12_FEATURE_DATA_SHADER_CACHE;
+
+typedef struct D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY
+{
+    D3D12_COMMAND_LIST_TYPE CommandListType;
+    UINT Priority;
+    BOOL PriorityForTypeIsSupported;
+}  D3D12_FEATURE_DATA_COMMAND_QUEUE_PRIORITY;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
+{
+    BOOL CopyQueueTimestampQueriesSupported;
+    BOOL CastingFullyTypedFormatSupported;
+    D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
+    D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
+    BOOL BarycentricsSupported;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS3;
+
+typedef struct D3D12_FEATURE_DATA_EXISTING_HEAPS
+{
+    BOOL Supported;
+}  D3D12_FEATURE_DATA_EXISTING_HEAPS;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS4
+{
+    BOOL MSAA64KBAlignedTextureSupported;
+    D3D12_SHARED_RESOURCE_COMPATIBILITY_TIER SharedResourceCompatibilityTier;
+    BOOL Native16BitShaderOpsSupported;
+}  D3D12_FEATURE_DATA_D3D12_OPTIONS4;
+
+typedef struct D3D12_FEATURE_DATA_SERIALIZATION
+{
+    UINT NodeIndex;
+    D3D12_HEAP_SERIALIZATION_TIER HeapSerializationTier;
+}  D3D12_FEATURE_DATA_SERIALIZATION;
+
+typedef struct D3D12_FEATURE_DATA_CROSS_NODE
+{
+    D3D12_CROSS_NODE_SHARING_TIER SharingTier;
+    BOOL AtomicShaderInstructions;
+}  D3D12_FEATURE_DATA_CROSS_NODE;
+
+typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS5
+{
+    BOOL SRVOnlyTiledResourceTier3;
+    D3D12_RENDER_PASS_TIER RenderPassesTier;
+    D3D12_RAYTRACING_TIER RaytracingTier;
+} D3D12_FEATURE_DATA_D3D12_OPTIONS5;
+
 typedef enum D3D12_FEATURE
 {
     D3D12_FEATURE_D3D12_OPTIONS = 0,
     D3D12_FEATURE_ARCHITECTURE = 1,
     D3D12_FEATURE_FEATURE_LEVELS = 2,
     D3D12_FEATURE_FORMAT_SUPPORT = 3,
-    D3D12_FEATURE_FORMAT_INFO = 4,
-    D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 5,
+    D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
+    D3D12_FEATURE_FORMAT_INFO = 5,
+    D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
+    D3D12_FEATURE_SHADER_MODEL = 7,
+    D3D12_FEATURE_D3D12_OPTIONS1 = 8,
+    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_SUPPORT = 10,
+    D3D12_FEATURE_ROOT_SIGNATURE = 12,
+    D3D12_FEATURE_ARCHITECTURE1 = 16,
+    D3D12_FEATURE_D3D12_OPTIONS2 = 18,
+    D3D12_FEATURE_SHADER_CACHE = 19,
+    D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
+    D3D12_FEATURE_D3D12_OPTIONS3 = 21,
+    D3D12_FEATURE_EXISTING_HEAPS = 22,
+    D3D12_FEATURE_D3D12_OPTIONS4 = 23,
+    D3D12_FEATURE_SERIALIZATION = 24,
+    D3D12_FEATURE_CROSS_NODE = 25,
+    D3D12_FEATURE_D3D12_OPTIONS5 = 27,
+    D3D12_FEATURE_D3D12_OPTIONS6 = 30,
+    D3D12_FEATURE_QUERY_META_COMMAND = 31,
+    D3D12_FEATURE_D3D12_OPTIONS7 = 32,
+    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPE_COUNT = 33,
+    D3D12_FEATURE_PROTECTED_RESOURCE_SESSION_TYPES = 34,
 } D3D12_FEATURE;
 
 typedef struct D3D12_MEMCPY_DEST
@@ -1539,6 +1797,29 @@ typedef struct D3D12_SUBRESOURCE_DATA
     LONG_PTR SlicePitch;
 } D3D12_SUBRESOURCE_DATA;
 
+typedef enum D3D12_MULTIPLE_FENCE_WAIT_FLAGS
+{
+    D3D12_MULTIPLE_FENCE_WAIT_FLAG_NONE = 0x0,
+    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ANY = 0x1,
+    D3D12_MULTIPLE_FENCE_WAIT_FLAG_ALL = 0x0,
+} D3D12_MULTIPLE_FENCE_WAIT_FLAGS;
+cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_MULTIPLE_FENCE_WAIT_FLAGS);")
+
+typedef 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,
+} D3D12_RESIDENCY_PRIORITY;
+
+typedef struct D3D12_WRITEBUFFERIMMEDIATE_PARAMETER
+{
+    D3D12_GPU_VIRTUAL_ADDRESS Dest;
+    UINT32 Value;
+} D3D12_WRITEBUFFERIMMEDIATE_PARAMETER;
+
 [
     uuid(c4fec28f-7966-4e95-9f94-f431cb56c3b8),
     object,
@@ -1574,6 +1855,17 @@ interface ID3D12Pageable : ID3D12DeviceChild
 {
 }
 
+[
+    uuid(6b3b2502-6e51-45b3-90ee-9884265e8df3),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface ID3D12Heap : ID3D12Pageable
+{
+    D3D12_HEAP_DESC GetDesc();
+}
+
 [
     uuid(696442be-a72e-4059-bc79-5b5c98040fad),
     object,
@@ -1679,6 +1971,12 @@ typedef struct D3D12_QUERY_DATA_PIPELINE_STATISTICS
     UINT64 CSInvocations;
 } D3D12_QUERY_DATA_PIPELINE_STATISTICS;
 
+typedef struct D3D12_QUERY_DATA_SO_STATISTICS
+{
+    UINT64 NumPrimitivesWritten;
+    UINT64 PrimitivesStorageNeeded;
+} D3D12_QUERY_DATA_SO_STATISTICS;
+
 typedef enum D3D12_PREDICATION_OP
 {
     D3D12_PREDICATION_OP_EQUAL_ZERO = 0,
@@ -1838,6 +2136,50 @@ interface ID3D12GraphicsCommandList : ID3D12CommandList
             ID3D12Resource *count_buffer, UINT64 count_buffer_offset);
 }
 
+[
+    uuid(553103fb-1fe7-4557-bb38-946d7d0e7ca7),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface ID3D12GraphicsCommandList1 : ID3D12GraphicsCommandList
+{
+    void AtomicCopyBufferUINT(ID3D12Resource *dst_buffer, UINT64 dst_offset,
+            ID3D12Resource *src_buffer, UINT64 src_offset,
+            UINT dependent_resource_count, ID3D12Resource * const *dependent_resources,
+            const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
+
+    void AtomicCopyBufferUINT64(ID3D12Resource *dst_buffer, UINT64 dst_offset,
+            ID3D12Resource *src_buffer, UINT64 src_offset,
+            UINT dependent_resource_count, ID3D12Resource * const *dependent_resources,
+            const D3D12_SUBRESOURCE_RANGE_UINT64 *dependent_sub_resource_ranges);
+
+    void OMSetDepthBounds(FLOAT min, FLOAT max);
+
+    void SetSamplePositions(UINT sample_count, UINT pixel_count,
+            D3D12_SAMPLE_POSITION *sample_positions);
+
+    void ResolveSubresourceRegion(ID3D12Resource *dst_resource,
+            UINT dst_sub_resource_idx, UINT dst_x, UINT dst_y,
+            ID3D12Resource *src_resource, UINT src_sub_resource_idx,
+            D3D12_RECT *src_rect, DXGI_FORMAT format, D3D12_RESOLVE_MODE mode);
+
+    void SetViewInstanceMask(UINT mask);
+}
+
+[
+    uuid(38c3e585-ff17-412c-9150-4fc6f9d72a28),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface ID3D12GraphicsCommandList2 : ID3D12GraphicsCommandList1
+{
+    void WriteBufferImmediate(UINT count,
+            const D3D12_WRITEBUFFERIMMEDIATE_PARAMETER *parameters,
+            const D3D12_WRITEBUFFERIMMEDIATE_MODE *modes);
+}
+
 typedef enum D3D12_TILE_RANGE_FLAGS
 {
     D3D12_TILE_RANGE_FLAG_NONE = 0x0,
@@ -2138,6 +2480,23 @@ interface ID3D12Device : ID3D12Object
     LUID GetAdapterLuid();
 }
 
+[
+    uuid(77acce80-638e-4e65-8895-c1f23386863e),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface ID3D12Device1 : ID3D12Device
+{
+    HRESULT CreatePipelineLibrary(const void *blob, SIZE_T blob_size, REFIID iid, void **lib);
+
+    HRESULT SetEventOnMultipleFenceCompletion(ID3D12Fence * const *fences,
+            const UINT64 *values, UINT fence_count, D3D12_MULTIPLE_FENCE_WAIT_FLAGS flags, HANDLE event);
+
+    HRESULT SetResidencyPriority(UINT object_count, ID3D12Pageable * const *objects,
+            const D3D12_RESIDENCY_PRIORITY *priorities);
+}
+
 [
     uuid(34ab647b-3cc8-46ac-841b-c0965645c046),
     object,
@@ -2149,13 +2508,36 @@ interface ID3D12RootSignatureDeserializer : IUnknown
     const D3D12_ROOT_SIGNATURE_DESC *GetRootSignatureDesc();
 }
 
+[
+    uuid(7f91ce67-090c-4bb7-b78e-ed8ff2e31da0),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface ID3D12VersionedRootSignatureDeserializer : IUnknown
+{
+    HRESULT GetRootSignatureDescAtVersion(D3D_ROOT_SIGNATURE_VERSION version,
+            const D3D12_VERSIONED_ROOT_SIGNATURE_DESC **desc);
+
+    const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *GetUnconvertedRootSignatureDesc();
+};
+
 [local] HRESULT __stdcall D3D12CreateRootSignatureDeserializer(
         const void *data, SIZE_T data_size, REFIID iid, void **deserializer);
 
+typedef HRESULT (__stdcall *PFN_D3D12_CREATE_VERSIONED_ROOT_SIGNATURE_DESERIALIZER)(
+        const void *data, SIZE_T data_size, REFIID iid, void **deserializer);
+
+[local] HRESULT __stdcall D3D12CreateVersionedRootSignatureDeserializer(
+        const void *data, SIZE_T data_size, REFIID iid, void **deserializer);
+
 [local] HRESULT __stdcall D3D12SerializeRootSignature(
         const D3D12_ROOT_SIGNATURE_DESC *root_signature_desc,
         D3D_ROOT_SIGNATURE_VERSION version, ID3DBlob **blob, ID3DBlob **error_blob);
 
+typedef HRESULT (__stdcall *PFN_D3D12_SERIALIZE_VERSIONED_ROOT_SIGNATURE)(
+        const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *desc, ID3DBlob **blob, ID3DBlob **error_blob);
+
 [local] HRESULT __stdcall D3D12SerializeVersionedRootSignature(
         const D3D12_VERSIONED_ROOT_SIGNATURE_DESC *root_signature_desc,
         ID3DBlob **blob, ID3DBlob **error_blob);
diff --git a/include/d3d12sdklayers.idl b/include/d3d12sdklayers.idl
index dfbb7382174..50103f3b35d 100644
--- a/include/d3d12sdklayers.idl
+++ b/include/d3d12sdklayers.idl
@@ -28,3 +28,16 @@ interface ID3D12Debug : IUnknown
 {
     void EnableDebugLayer();
 }
+
+[
+    uuid(affaa4ca-63fe-4d8e-b8ad-159000af4304),
+    object,
+    local,
+    pointer_default(unique)
+]
+interface ID3D12Debug1 : IUnknown
+{
+    void EnableDebugLayer();
+    void SetEnableGPUBasedValidation(BOOL enable);
+    void SetEnableSynchronizedCommandQueueValidation(BOOL enable);
+}
-- 
2.20.1




More information about the wine-devel mailing list