include: Add the ID3D12GraphicsCommandList4 interface.

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Martin Storsjö 2023-09-06 18:24:36 +03:00 committed by Alexandre Julliard
parent f31efc1afc
commit 275644d34a
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

@ -3611,6 +3611,19 @@ typedef struct D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE
UINT64 StrideInBytes;
} D3D12_GPU_VIRTUAL_ADDRESS_AND_STRIDE;
typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE
{
D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
UINT64 SizeInBytes;
} D3D12_GPU_VIRTUAL_ADDRESS_RANGE;
typedef struct D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE
{
D3D12_GPU_VIRTUAL_ADDRESS StartAddress;
UINT64 SizeInBytes;
UINT64 StrideInBytes;
} D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE;
typedef struct D3D12_RAYTRACING_GEOMETRY_TRIANGLES_DESC
{
D3D12_GPU_VIRTUAL_ADDRESS Transform3x4;
@ -3640,6 +3653,15 @@ typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RAYTRACING_ACCELERATION_STRUCTURE_BUILD_FLAGS);")
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE_CLONE = 0x0,
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,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE;
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL = 0x0,
@ -3652,6 +3674,20 @@ typedef enum D3D12_ELEMENTS_LAYOUT
D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS = 0x1
} D3D12_ELEMENTS_LAYOUT;
typedef enum D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE
{
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_COMPACTED_SIZE = 0x0,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TOOLS_VISUALIZATION = 0x1,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_SERIALIZATION = 0x2,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_CURRENT_SIZE = 0x3,
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE;
typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC
{
D3D12_GPU_VIRTUAL_ADDRESS DestBuffer;
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_TYPE InfoType;
} D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC;
typedef struct D3D12_SERIALIZED_DATA_DRIVER_MATCHING_IDENTIFIER
{
GUID DriverOpaqueGUID;
@ -3697,6 +3733,14 @@ typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS
};
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS;
typedef struct D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC
{
D3D12_GPU_VIRTUAL_ADDRESS DestAccelerationStructureData;
D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_INPUTS Inputs;
D3D12_GPU_VIRTUAL_ADDRESS SourceAccelerationStructureData;
D3D12_GPU_VIRTUAL_ADDRESS ScratchAccelerationStructureData;
} D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC;
typedef struct D3D12_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO
{
UINT64 ResultDataMaxSizeInBytes;
@ -4214,6 +4258,91 @@ interface ID3D12Heap1 : ID3D12Heap
HRESULT GetProtectedResourceSession(REFIID riid, void **protected_session);
}
typedef enum D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE
{
D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_DISCARD = 0x0,
D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_PRESERVE = 0x1,
D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_CLEAR = 0x2,
D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE_NO_ACCESS = 0x3,
} D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE;
typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS
{
D3D12_CLEAR_VALUE ClearValue;
} D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS;
typedef struct D3D12_RENDER_PASS_BEGINNING_ACCESS
{
D3D12_RENDER_PASS_BEGINNING_ACCESS_TYPE Type;
union
{
D3D12_RENDER_PASS_BEGINNING_ACCESS_CLEAR_PARAMETERS Clear;
};
} D3D12_RENDER_PASS_BEGINNING_ACCESS;
typedef enum D3D12_RENDER_PASS_ENDING_ACCESS_TYPE
{
D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_DISCARD = 0x0,
D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_PRESERVE = 0x1,
D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_RESOLVE = 0x2,
D3D12_RENDER_PASS_ENDING_ACCESS_TYPE_NO_ACCESS = 0x3,
} D3D12_RENDER_PASS_ENDING_ACCESS_TYPE;
typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS
{
UINT SrcSubresource;
UINT DstSubresource;
UINT DstX;
UINT DstY;
D3D12_RECT SrcRect;
} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS;
typedef struct D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS
{
ID3D12Resource *pSrcResource;
ID3D12Resource *pDstResource;
UINT SubresourceCount;
const D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_SUBRESOURCE_PARAMETERS *pSubresourceParameters;
DXGI_FORMAT Format;
D3D12_RESOLVE_MODE ResolveMode;
BOOL PreserveResolveSource;
} D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS;
typedef struct D3D12_RENDER_PASS_ENDING_ACCESS
{
D3D12_RENDER_PASS_ENDING_ACCESS_TYPE Type;
union
{
D3D12_RENDER_PASS_ENDING_ACCESS_RESOLVE_PARAMETERS Resolve;
};
} D3D12_RENDER_PASS_ENDING_ACCESS;
typedef struct D3D12_RENDER_PASS_RENDER_TARGET_DESC
{
D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
D3D12_RENDER_PASS_BEGINNING_ACCESS BeginningAccess;
D3D12_RENDER_PASS_ENDING_ACCESS EndingAccess;
} D3D12_RENDER_PASS_RENDER_TARGET_DESC;
typedef struct D3D12_RENDER_PASS_DEPTH_STENCIL_DESC
{
D3D12_CPU_DESCRIPTOR_HANDLE cpuDescriptor;
D3D12_RENDER_PASS_BEGINNING_ACCESS DepthBeginningAccess;
D3D12_RENDER_PASS_BEGINNING_ACCESS StencilBeginningAccess;
D3D12_RENDER_PASS_ENDING_ACCESS DepthEndingAccess;
D3D12_RENDER_PASS_ENDING_ACCESS StencilEndingAccess;
} D3D12_RENDER_PASS_DEPTH_STENCIL_DESC;
typedef enum D3D12_RENDER_PASS_FLAGS
{
D3D12_RENDER_PASS_FLAG_NONE = 0x0,
D3D12_RENDER_PASS_FLAG_ALLOW_UAV_WRITES = 0x1,
D3D12_RENDER_PASS_FLAG_SUSPENDING_PASS = 0x2,
D3D12_RENDER_PASS_FLAG_RESUMING_PASS = 0x4
} D3D12_RENDER_PASS_FLAGS;
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(D3D12_RENDER_PASS_FLAGS);")
[
uuid(dbb84c27-36ce-4fc9-b801-f048c46ac570),
object,
@ -4227,6 +4356,63 @@ interface ID3D12MetaCommand : ID3D12Pageable
UINT parameter_index);
}
typedef struct D3D12_DISPATCH_RAYS_DESC
{
D3D12_GPU_VIRTUAL_ADDRESS_RANGE RayGenerationShaderRecord;
D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE MissShaderTable;
D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE HitGroupTable;
D3D12_GPU_VIRTUAL_ADDRESS_RANGE_AND_STRIDE CallableShaderTable;
UINT Width;
UINT Height;
UINT Depth;
} D3D12_DISPATCH_RAYS_DESC;
[
uuid(8754318e-d3a9-4541-98cf-645b50dc4874),
object,
local,
pointer_default(unique)
]
interface ID3D12GraphicsCommandList4 : ID3D12GraphicsCommandList3
{
void BeginRenderPass(
UINT render_targets_count,
const D3D12_RENDER_PASS_RENDER_TARGET_DESC *render_targets,
const D3D12_RENDER_PASS_DEPTH_STENCIL_DESC *depth_stencil,
D3D12_RENDER_PASS_FLAGS flags);
void EndRenderPass();
void InitializeMetaCommand(
ID3D12MetaCommand *meta_command,
const void *initialization_parameters_data,
SIZE_T initialization_parameters_data_size_in_bytes);
void ExecuteMetaCommand(
ID3D12MetaCommand *meta_command,
const void *execution_parameters_data,
SIZE_T execution_parameters_data_size_in_bytes);
void BuildRaytracingAccelerationStructure(
const D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC *desc,
UINT postbuild_info_descs_count,
const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *postbuild_info_descs);
void EmitRaytracingAccelerationStructurePostbuildInfo(
const D3D12_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_DESC *desc,
UINT src_acceleration_structures_count,
const D3D12_GPU_VIRTUAL_ADDRESS *src_acceleration_structure_data);
void CopyRaytracingAccelerationStructure(
D3D12_GPU_VIRTUAL_ADDRESS dst_acceleration_structure_data,
D3D12_GPU_VIRTUAL_ADDRESS src_acceleration_structure_data,
D3D12_RAYTRACING_ACCELERATION_STRUCTURE_COPY_MODE mode);
void SetPipelineState1(ID3D12StateObject *state_object);
void DispatchRays(const D3D12_DISPATCH_RAYS_DESC *desc);
}
typedef HRESULT (__stdcall *PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER)(
const void *data, SIZE_T data_size, REFIID iid, void **deserializer);