From f833f01c4fb6174aed9f90edb1266631a444cecc Mon Sep 17 00:00:00 2001 From: azhirnov Date: Mon, 16 Nov 2020 23:37:39 +0300 Subject: Some fixes for PSO --- Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Graphics/GraphicsEngineD3D12') diff --git a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp index 74621eca..3c63b7d7 100644 --- a/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp +++ b/Graphics/GraphicsEngineD3D12/src/PipelineStateD3D12Impl.cpp @@ -205,7 +205,9 @@ void BuildRTPipelineDescription(const RayTracingPipelineStateCreateInfo& CreateI Subobjects.push_back({D3D12_STATE_SUBOBJECT_TYPE_HIT_GROUP, &HitGroupDesc}); } + constexpr Uint32 MaxPayloadSize = sizeof(float) * 8; constexpr Uint32 RecursionDepthLimit = D3D12_RAYTRACING_MAX_DECLARABLE_TRACE_RECURSION_DEPTH - 1; + if (CreateInfo.RayTracingPipeline.MaxRecursionDepth > RecursionDepthLimit) LOG_PSO_ERROR_AND_THROW("MaxRecursionDepth (", CreateInfo.RayTracingPipeline.MaxRecursionDepth, ") must be <= ", RecursionDepthLimit); @@ -216,7 +218,7 @@ void BuildRTPipelineDescription(const RayTracingPipelineStateCreateInfo& CreateI auto& ShaderConfig = *TempPool.Construct(); ShaderConfig.MaxAttributeSizeInBytes = CreateInfo.MaxAttributeSize == 0 ? D3D12_RAYTRACING_MAX_ATTRIBUTE_SIZE_IN_BYTES : CreateInfo.MaxAttributeSize; - ShaderConfig.MaxPayloadSizeInBytes = CreateInfo.MaxPayloadSize == 0 ? 32 : CreateInfo.MaxPayloadSize; + ShaderConfig.MaxPayloadSizeInBytes = CreateInfo.MaxPayloadSize == 0 ? MaxPayloadSize : CreateInfo.MaxPayloadSize; Subobjects.push_back({D3D12_STATE_SUBOBJECT_TYPE_RAYTRACING_SHADER_CONFIG, &ShaderConfig}); #undef LOG_PSO_ERROR_AND_THROW } -- cgit v1.2.3