Module: vkd3d Branch: master Commit: 275644d34a51f1060d375b3b4b545b346949e2e0 URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/275644d34a51f1060d375b3b4b545b...
Author: Martin Storsjö martin@martin.st Date: Wed Sep 6 18:24:36 2023 +0300
include: Add the ID3D12GraphicsCommandList4 interface.
Signed-off-by: Martin Storsjö martin@martin.st
---
include/vkd3d_d3d12.idl | 186 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+)
diff --git a/include/vkd3d_d3d12.idl b/include/vkd3d_d3d12.idl index 195a8add..ab57cb3b 100644 --- a/include/vkd3d_d3d12.idl +++ b/include/vkd3d_d3d12.idl @@ -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);