include: Add the ID3D12Device5 interface.

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Martin Storsjö 2023-09-06 00:09:29 +03:00 committed by Alexandre Julliard
parent 16daf0423d
commit 1302b897ed
Notes: Alexandre Julliard 2023-09-13 23:18:09 +02:00
Approved-by: Henri Verbeet (@hverbeet)
Approved-by: Alexandre Julliard (@julliard)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/332

View File

@ -3301,6 +3301,69 @@ interface ID3D12LifetimeTracker : ID3D12DeviceChild
HRESULT DestroyOwnedObject(ID3D12DeviceChild *object);
}
typedef enum D3D12_META_COMMAND_PARAMETER_TYPE
{
D3D12_META_COMMAND_PARAMETER_TYPE_FLOAT = 0x0,
D3D12_META_COMMAND_PARAMETER_TYPE_UINT64 = 0x1,
D3D12_META_COMMAND_PARAMETER_TYPE_GPU_VIRTUAL_ADDRESS = 0x2,
D3D12_META_COMMAND_PARAMETER_TYPE_CPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 0x3,
D3D12_META_COMMAND_PARAMETER_TYPE_GPU_DESCRIPTOR_HANDLE_HEAP_TYPE_CBV_SRV_UAV = 0x4,
} D3D12_META_COMMAND_PARAMETER_TYPE;
typedef enum D3D12_META_COMMAND_PARAMETER_FLAGS
{
D3D12_META_COMMAND_PARAMETER_FLAG_INPUT = 0x1,
D3D12_META_COMMAND_PARAMETER_FLAG_OUTPUT = 0x2,
} D3D12_META_COMMAND_PARAMETER_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_META_COMMAND_PARAMETER_FLAGS);")
typedef enum D3D12_META_COMMAND_PARAMETER_STAGE
{
D3D12_META_COMMAND_PARAMETER_STAGE_CREATION = 0x0,
D3D12_META_COMMAND_PARAMETER_STAGE_INITIALIZATION = 0x1,
D3D12_META_COMMAND_PARAMETER_STAGE_EXECUTION = 0x2,
} D3D12_META_COMMAND_PARAMETER_STAGE;
typedef struct D3D12_META_COMMAND_PARAMETER_DESC
{
const WCHAR *Name;
D3D12_META_COMMAND_PARAMETER_TYPE Type;
D3D12_META_COMMAND_PARAMETER_FLAGS Flags;
D3D12_RESOURCE_STATES RequiredResourceState;
UINT StructureOffset;
} D3D12_META_COMMAND_PARAMETER_DESC;
typedef enum D3D12_GRAPHICS_STATES
{
D3D12_GRAPHICS_STATE_NONE = 0x0,
D3D12_GRAPHICS_STATE_IA_VERTEX_BUFFERS = 0x1,
D3D12_GRAPHICS_STATE_IA_INDEX_BUFFER = 0x2,
D3D12_GRAPHICS_STATE_IA_PRIMITIVE_TOPOLOGY = 0x4,
D3D12_GRAPHICS_STATE_DESCRIPTOR_HEAP = 0x8,
D3D12_GRAPHICS_STATE_GRAPHICS_ROOT_SIGNATURE = 0x10,
D3D12_GRAPHICS_STATE_COMPUTE_ROOT_SIGNATURE = 0x20,
D3D12_GRAPHICS_STATE_RS_VIEWPORTS = 0x40,
D3D12_GRAPHICS_STATE_RS_SCISSOR_RECTS = 0x80,
D3D12_GRAPHICS_STATE_PREDICATION = 0x100,
D3D12_GRAPHICS_STATE_OM_RENDER_TARGETS = 0x200,
D3D12_GRAPHICS_STATE_OM_STENCIL_REF = 0x400,
D3D12_GRAPHICS_STATE_OM_BLEND_FACTOR = 0x800,
D3D12_GRAPHICS_STATE_PIPELINE_STATE = 0x1000,
D3D12_GRAPHICS_STATE_SO_TARGETS = 0x2000,
D3D12_GRAPHICS_STATE_OM_DEPTH_BOUNDS = 0x4000,
D3D12_GRAPHICS_STATE_SAMPLE_POSITIONS = 0x8000,
D3D12_GRAPHICS_STATE_VIEW_INSTANCE_MASK = 0x10000,
} D3D12_GRAPHICS_STATES;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_GRAPHICS_STATES);")
typedef struct D3D12_META_COMMAND_DESC
{
GUID Id;
const WCHAR *Name;
D3D12_GRAPHICS_STATES InitializationDirtyState;
D3D12_GRAPHICS_STATES ExecutionDirtyState;
} D3D12_META_COMMAND_DESC;
[
uuid(47016943-fca8-4594-93ea-af258b55346d),
object,
@ -3325,6 +3388,309 @@ interface ID3D12StateObjectProperties : IUnknown
void SetPipelineStackSize(UINT64 pipeline_stack_size_in_bytes);
}
typedef enum D3D12_STATE_SUBOBJECT_TYPE
{
D3D12_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG = 0x0,
D3D12_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE = 0x1,
D3D12_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE = 0x2,
D3D12_STATE_SUBOBJECT_TYPE_NODE_MASK = 0x3,
D3D12_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY = 0x5,
D3D12_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION = 0x6,
D3D12_STATE_SUBOBJECT_TYPE_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 0x7,
D3D12_STATE_SUBOBJECT_TYPE_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION = 0x8,
D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG = 0x9,
D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG = 0xa,
D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP = 0xb,
D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_PIPELINE_CONFIG1 = 0xc,
D3D12_STATE_SUBOBJECT_TYPE_MAX_VALID = 0xd,
} D3D12_STATE_SUBOBJECT_TYPE;
typedef struct D3D12_STATE_SUBOBJECT
{
D3D12_STATE_SUBOBJECT_TYPE Type;
const void *pDesc;
} D3D12_STATE_SUBOBJECT;
typedef enum D3D12_STATE_OBJECT_FLAGS
{
D3D12_STATE_OBJECT_FLAG_NONE = 0x0,
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS = 0x4,
} D3D12_STATE_OBJECT_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_STATE_OBJECT_FLAGS);")
typedef struct D3D12_STATE_OBJECT_CONFIG
{
D3D12_STATE_OBJECT_FLAGS Flags;
} D3D12_STATE_OBJECT_CONFIG;
typedef struct D3D12_GLOBAL_ROOT_SIGNATURE
{
ID3D12RootSignature *pGlobalRootSignature;
} D3D12_GLOBAL_ROOT_SIGNATURE;
typedef struct D3D12_LOCAL_ROOT_SIGNATURE
{
ID3D12RootSignature *pLocalRootSignature;
} D3D12_LOCAL_ROOT_SIGNATURE;
typedef struct D3D12_NODE_MASK
{
UINT NodeMask;
} D3D12_NODE_MASK;
typedef enum D3D12_EXPORT_FLAGS
{
D3D12_EXPORT_FLAG_NONE = 0x0,
} D3D12_EXPORT_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_EXPORT_FLAGS);")
typedef struct D3D12_EXPORT_DESC
{
const WCHAR *Name;
const WCHAR *ExportToRename;
D3D12_EXPORT_FLAGS Flags;
} D3D12_EXPORT_DESC;
typedef struct D3D12_DXIL_LIBRARY_DESC
{
D3D12_SHADER_BYTECODE DXILLibrary;
UINT NumExports;
D3D12_EXPORT_DESC *pExports;
} D3D12_DXIL_LIBRARY_DESC;
typedef struct D3D12_EXISTING_COLLECTION_DESC
{
ID3D12StateObject *pExistingCollection;
UINT NumExports;
D3D12_EXPORT_DESC *pExports;
} D3D12_EXISTING_COLLECTION_DESC;
typedef struct D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION
{
const D3D12_STATE_SUBOBJECT *pSubobjectToAssociate;
UINT NumExports;
const WCHAR **pExports;
} D3D12_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
typedef struct D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION
{
const WCHAR *SubobjectToAssociate;
UINT NumExports;
const WCHAR **pExports;
} D3D12_DXIL_SUBOBJECT_TO_EXPORTS_ASSOCIATION;
typedef enum D3D12_HIT_GROUP_TYPE
{
D3D12_HIT_GROUP_TYPE_TRIANGLES = 0x0,
D3D12_HIT_GROUP_TYPE_PROCEDURAL_PRIMITIVE = 0x1,
} D3D12_HIT_GROUP_TYPE;
typedef struct D3D12_HIT_GROUP_DESC
{
const WCHAR *HitGroupExport;
D3D12_HIT_GROUP_TYPE Type;
const WCHAR *AnyHitShaderImport;
const WCHAR *ClosestHitShaderImport;
const WCHAR *IntersectionShaderImport;
} D3D12_HIT_GROUP_DESC;
typedef struct D3D12_RAYTRACING_SHADER_CONFIG
{
UINT MaxPayloadSizeInBytes;
UINT MaxAttributeSizeInBytes;
} D3D12_RAYTRACING_SHADER_CONFIG;
typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG
{
UINT MaxTraceRecursionDepth;
} D3D12_RAYTRACING_PIPELINE_CONFIG;
typedef enum D3D12_RAYTRACING_PIPELINE_FLAGS
{
D3D12_RAYTRACING_PIPELINE_FLAG_NONE = 0x0,
D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_TRIANGLES = 0x100,
D3D12_RAYTRACING_PIPELINE_FLAG_SKIP_PROCEDURAL_PRIMITIVES = 0x200,
} D3D12_RAYTRACING_PIPELINE_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_PIPELINE_FLAGS);")
typedef struct D3D12_RAYTRACING_PIPELINE_CONFIG1
{
UINT MaxTraceRecursionDepth;
D3D12_RAYTRACING_PIPELINE_FLAGS Flags;
} D3D12_RAYTRACING_PIPELINE_CONFIG1;
typedef enum D3D12_STATE_OBJECT_TYPE
{
D3D12_STATE_OBJECT_TYPE_COLLECTION = 0x0,
D3D12_STATE_OBJECT_TYPE_RAYTRACING_PIPELINE = 0x3,
} D3D12_STATE_OBJECT_TYPE;
typedef struct D3D12_STATE_OBJECT_DESC
{
D3D12_STATE_OBJECT_TYPE Type;
UINT NumSubobjects;
const D3D12_STATE_SUBOBJECT *pSubobjects;
} D3D12_STATE_OBJECT_DESC;
typedef enum D3D12_RAYTRACING_GEOMETRY_FLAGS
{
D3D12_RAYTRACING_GEOMETRY_FLAG_NONE = 0x0,
D3D12_RAYTRACING_GEOMETRY_FLAG_OPAQUE = 0x1,
D3D12_RAYTRACING_GEOMETRY_FLAG_NO_DUPLICATE_ANYHIT_INVOCATION = 0x2,
} D3D12_RAYTRACING_GEOMETRY_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_GEOMETRY_FLAGS);")
typedef enum D3D12_RAYTRACING_GEOMETRY_TYPE
{
D3D12_RAYTRACING_GEOMETRY_TYPE_TRIANGLES = 0x0,
D3D12_RAYTRACING_GEOMETRY_TYPE_PROCEDURAL_PRIMITIVE_AABBS = 0x1,
} D3D12_RAYTRACING_GEOMETRY_TYPE;
typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
{
D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
UINT64 StrideInBytes;
} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
{
D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
DXGI_FORMAT IndexFormat;
DXGI_FORMAT VertexFormat;
UINT IndexCount;
UINT VertexCount;
D3D12_GPU_VIRTUAL_ADDRESS IndexBuffer;
D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE VertexBuffer;
} D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC;
typedef struct D3D12_RAYTRACING_GEOMETRY_AABBS_DESC
{
UINT64 AABBCount;
D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE AABBs;
} D3D12_RAYTRACING_GEOMETRY_AABBS_DESC;
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_NONE = 0x00,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_UPDATE = 0x01,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_ALLOW_COMPACTION = 0x02,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_TRACE = 0x04,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PREFER_FAST_BUILD = 0x08,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_MINIMIZE_MEMORY = 0x10,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAG_PERFORM_UPDATE = 0x20,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS);")
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL = 0x1
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE;
typedef enum D3D12_ELEMENTS_LAYOUT
{
D3D12_ELEMENTS_LAYOUT_ARRAY = 0x0,
D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
} D3D12_ELEMENTS_LAYOUT;
typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
{
GUID DriverOpaqueGUID;
BYTE DriverOpaqueVersioningData[16];
} D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER;
typedef enum D3D12_SERIALIZED_DATA_TYPE
{
D3D12_SERIALIZED_DATA_RAYTRACING_ACCELERATION_STRUCTURE = 0x0,
} D3D12_SERIALIZED_DATA_TYPE;
typedef enum D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS
{
D3D12_DRIVER_MATCHING_IDENTIFIER_COMPATIBLE_WITH_DEVICE = 0x0,
D3D12_DRIVER_MATCHING_IDENTIFIER_UNSUPPORTED_TYPE = 0x1,
D3D12_DRIVER_MATCHING_IDENTIFIER_UNRECOGNIZED = 0x2,
D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_VERSION = 0x3,
D3D12_DRIVER_MATCHING_IDENTIFIER_INCOMPATIBLE_TYPE = 0x4,
} D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS;
typedef struct D3D12_RAYTRACING_GEOMETRY_DESC
{
D3D12_RAYTRACING_GEOMETRY_TYPE Type;
D3D12_RAYTRACING_GEOMETRY_FLAGS Flags;
union
{
D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC Triangles;
D3D12_RAYTRACING_GEOMETRY_AABBS_DESC AABBs;
};
} D3D12_RAYTRACING_GEOMETRY_DESC;
typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE Type;
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS Flags;
UINT NumDescs;
D3D12_ELEMENTS_LAYOUT DescsLayout;
union
{
D3D12_GPU_VIRTUAL_ADDRESS InstanceDescs;
const D3D12_RAYTRACING_GEOMETRY_DESC *pGeometryDescs;
const D3D12_RAYTRACING_GEOMETRY_DESC *const *ppGeometryDescs;
};
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
{
UINT64 ResultDataMaxSizeInBytes;
UINT64 ScratchDataSizeInBytes;
UINT64 UpdateScratchDataSizeInBytes;
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO;
[
uuid(8b4f173b-2fea-4b80-8f58-4307191ab95d),
object,
local,
pointer_default(unique)
]
interface ID3D12Device5 : ID3D12Device4
{
HRESULT CreateLifetimeTracker(
ID3D12LifetimeOwner *owner, REFIID riid,
void **tracker);
void RemoveDevice();
HRESULT EnumerateMetaCommands(
UINT *meta_commands_count,
D3D12_META_COMMAND_DESC *descs);
HRESULT EnumerateMetaCommandParameters(
REFGUID command_id,
D3D12_META_COMMAND_PARAMETER_STAGE stage,
UINT *total_structure_size_in_bytes,
UINT *parameter_count,
D3D12_META_COMMAND_PARAMETER_DESC *parameter_descs);
HRESULT CreateMetaCommand(
REFGUID command_id, UINT node_mask,
const void *creation_parameters_data,
SIZE_T creation_parameters_data_size_in_bytes,
REFIID riid, void **meta_command);
HRESULT CreateStateObject(
const D3D12_STATE_OBJECT_DESC *desc, REFIID riid,
void **state_object);
void GetRaytracingAccelerationStructurePrebuildInfo(
const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS *desc,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO *info);
D3D12_DRIVER_MATCHING_IDENTIFIER_STATUS CheckDriverMatchingIdentifier(
D3D12_SERIALIZED_DATA_TYPE serialized_data_type,
const D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER *identifier_to_check);
}
typedef HRESULT (__stdcall *PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
const void *data, SIZE_T data_size, REFIID iid, void **deserializer);