From 4094fef67a4b5f6bcebfe7861e277d5d998c35e4 Mon Sep 17 00:00:00 2001 From: ns6089 <61738816+ns6089@users.noreply.github.com> Date: Sun, 20 Aug 2023 08:36:06 +0300 Subject: [PATCH] Bind constant buffers where you define them And remove possible slot collisions. --- src/platform/windows/display_vram.cpp | 7 +++---- src_assets/windows/assets/shaders/directx/ScenePS_NW.hlsl | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/platform/windows/display_vram.cpp b/src/platform/windows/display_vram.cpp index be009a3e..5db0f0a2 100644 --- a/src/platform/windows/display_vram.cpp +++ b/src/platform/windows/display_vram.cpp @@ -435,7 +435,6 @@ namespace platf::dxgi { return; } - device_ctx->VSSetConstantBuffers(0, 1, &info_scene); device_ctx->PSSetConstantBuffers(0, 1, &color_matrix); this->color_matrix = std::move(color_matrix); } @@ -471,6 +470,7 @@ namespace platf::dxgi { BOOST_LOG(error) << "Failed to create info scene buffer"sv; return -1; } + device_ctx->VSSetConstantBuffers(0, 1, &info_scene); D3D11_RENDER_TARGET_VIEW_DESC nv12_rt_desc { format == DXGI_FORMAT_P010 ? DXGI_FORMAT_R16_UNORM : DXGI_FORMAT_R8_UNORM, @@ -607,6 +607,7 @@ namespace platf::dxgi { BOOST_LOG(error) << "Failed to create color matrix buffer"sv; return -1; } + device_ctx->PSSetConstantBuffers(0, 1, &color_matrix); D3D11_INPUT_ELEMENT_DESC layout_desc { "SV_Position", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 @@ -640,8 +641,6 @@ namespace platf::dxgi { } device_ctx->IASetInputLayout(input_layout.get()); - device_ctx->PSSetConstantBuffers(0, 1, &color_matrix); - device_ctx->VSSetConstantBuffers(0, 1, &info_scene); device_ctx->OMSetBlendState(blend_disable.get(), nullptr, 0xFFFFFFFFu); device_ctx->PSSetSamplers(0, 1, &sampler_linear); @@ -1367,7 +1366,7 @@ namespace platf::dxgi { return -1; } - device_ctx->PSSetConstantBuffers(0, 1, &sdr_multiplier); + device_ctx->PSSetConstantBuffers(1, 1, &sdr_multiplier); } else { status = device->CreatePixelShader(scene_ps_hlsl->GetBufferPointer(), scene_ps_hlsl->GetBufferSize(), nullptr, &scene_ps); diff --git a/src_assets/windows/assets/shaders/directx/ScenePS_NW.hlsl b/src_assets/windows/assets/shaders/directx/ScenePS_NW.hlsl index 9088b767..9553b698 100644 --- a/src_assets/windows/assets/shaders/directx/ScenePS_NW.hlsl +++ b/src_assets/windows/assets/shaders/directx/ScenePS_NW.hlsl @@ -8,7 +8,7 @@ struct PS_INPUT float2 tex : TEXCOORD; }; -cbuffer SdrScaling : register(b0) { +cbuffer SdrScaling : register(b1) { float scale_factor; };