diff options
| author | Pokechu22 <Pokechu022@gmail.com> | 2025-01-14 22:00:46 -0800 |
|---|---|---|
| committer | Pokechu22 <Pokechu022@gmail.com> | 2025-01-14 22:30:31 -0800 |
| commit | 64514bd8d4de45305788ebbdcf576034cf77bcf8 (patch) | |
| tree | 6b7cd79207fabd40eb8dd958f5dfb18a04e10ca0 /Source | |
| parent | 3ea870ef8c5f4d4b86bd3ce0c2e3ddba6f1f25aa (diff) | |
D3D12: Fix out of bounds root parameter index when per-pixel lighting is disabled
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/D3D12Gfx.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/DX12Context.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/VideoBackends/D3D12/DX12Context.h | 4 |
3 files changed, 7 insertions, 8 deletions
diff --git a/Source/Core/VideoBackends/D3D12/D3D12Gfx.cpp b/Source/Core/VideoBackends/D3D12/D3D12Gfx.cpp index 1b126a3909..49b63fe07f 100644 --- a/Source/Core/VideoBackends/D3D12/D3D12Gfx.cpp +++ b/Source/Core/VideoBackends/D3D12/D3D12Gfx.cpp @@ -578,9 +578,8 @@ bool Gfx::ApplyState() if (dirty_bits & DirtyState_PS_CUS_CBV) { - cmdlist->SetGraphicsRootConstantBufferView( - g_ActiveConfig.bBBoxEnable ? ROOT_PARAMETER_PS_CUS_CBV : ROOT_PARAMETER_PS_CBV2, - m_state.constant_buffers[2]); + cmdlist->SetGraphicsRootConstantBufferView(ROOT_PARAMETER_PS_CUS_CBV, + m_state.constant_buffers[2]); } if (dirty_bits & DirtyState_VS_SRV_Descriptor && UsesDynamicVertexLoader(pipeline)) diff --git a/Source/Core/VideoBackends/D3D12/DX12Context.cpp b/Source/Core/VideoBackends/D3D12/DX12Context.cpp index 843efc79d4..574ce9c016 100644 --- a/Source/Core/VideoBackends/D3D12/DX12Context.cpp +++ b/Source/Core/VideoBackends/D3D12/DX12Context.cpp @@ -370,6 +370,9 @@ bool DXContext::CreateGXRootSignature() SetRootParamConstant(¶ms[param_count], 4, 1, D3D12_SHADER_VISIBILITY_VERTEX); param_count++; + SetRootParamCBV(¶ms[param_count], 2, D3D12_SHADER_VISIBILITY_PIXEL); + param_count++; + // Since these must be contiguous, pixel lighting goes to bbox if not enabled. if (g_ActiveConfig.bBBoxEnable) { @@ -383,9 +386,6 @@ bool DXContext::CreateGXRootSignature() param_count++; } - SetRootParamCBV(¶ms[param_count], 2, D3D12_SHADER_VISIBILITY_PIXEL); - param_count++; - return BuildRootSignature(m_device.Get(), &m_gx_root_signature, params.data(), param_count); } diff --git a/Source/Core/VideoBackends/D3D12/DX12Context.h b/Source/Core/VideoBackends/D3D12/DX12Context.h index d492e7face..b43ece742a 100644 --- a/Source/Core/VideoBackends/D3D12/DX12Context.h +++ b/Source/Core/VideoBackends/D3D12/DX12Context.h @@ -29,9 +29,9 @@ enum ROOT_PARAMETER ROOT_PARAMETER_GS_CBV, ROOT_PARAMETER_VS_SRV, ROOT_PARAMETER_BASE_VERTEX_CONSTANT, + ROOT_PARAMETER_PS_CUS_CBV, ROOT_PARAMETER_PS_UAV_OR_CBV2, - ROOT_PARAMETER_PS_CBV2, // ROOT_PARAMETER_PS_UAV_OR_CBV2 if bbox is not enabled - ROOT_PARAMETER_PS_CUS_CBV, // ROOT_PARAMETER_PS_CBV2 if bbox is not enabled + ROOT_PARAMETER_PS_CBV2, // ROOT_PARAMETER_PS_UAV_OR_CBV2 if bbox is not enabled NUM_ROOT_PARAMETERS }; // Compute shader root parameters |
