From d13cf0e29ae9319d8ddbae0f2b96836a13ce4a90 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Mon, 3 Jul 2023 22:11:16 +0300 Subject: [PATCH] rsx: Fix shader interpreter - It broke ages ago --- rpcs3/Emu/RSX/Common/bitfield.hpp | 5 +++++ rpcs3/Emu/RSX/GL/GLDraw.cpp | 2 +- rpcs3/Emu/RSX/VK/VKDraw.cpp | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/Common/bitfield.hpp b/rpcs3/Emu/RSX/Common/bitfield.hpp index d3c1f9d2ca..35906909d2 100644 --- a/rpcs3/Emu/RSX/Common/bitfield.hpp +++ b/rpcs3/Emu/RSX/Common/bitfield.hpp @@ -107,6 +107,11 @@ namespace rsx public: bitmask_t() = default; + bitmask_type load() const + { + return m_data; + } + bool operator & (bitmask_type mask) const { return !!(m_data & mask); diff --git a/rpcs3/Emu/RSX/GL/GLDraw.cpp b/rpcs3/Emu/RSX/GL/GLDraw.cpp index 31eb2c80b0..360c252a83 100644 --- a/rpcs3/Emu/RSX/GL/GLDraw.cpp +++ b/rpcs3/Emu/RSX/GL/GLDraw.cpp @@ -649,7 +649,7 @@ void GLGSRender::emit_geometry(u32 sub_index) void GLGSRender::begin() { // Save shader state now before prefetch and loading happens - m_interpreter_state = (m_graphics_state & rsx::pipeline_state::invalidate_pipeline_bits); + m_interpreter_state = (m_graphics_state.load() & rsx::pipeline_state::invalidate_pipeline_bits); rsx::thread::begin(); diff --git a/rpcs3/Emu/RSX/VK/VKDraw.cpp b/rpcs3/Emu/RSX/VK/VKDraw.cpp index bca96c887d..3b9c11fb19 100644 --- a/rpcs3/Emu/RSX/VK/VKDraw.cpp +++ b/rpcs3/Emu/RSX/VK/VKDraw.cpp @@ -923,7 +923,7 @@ void VKGSRender::emit_geometry(u32 sub_index) void VKGSRender::begin() { // Save shader state now before prefetch and loading happens - m_interpreter_state = (m_graphics_state & rsx::pipeline_state::invalidate_pipeline_bits); + m_interpreter_state = (m_graphics_state.load() & rsx::pipeline_state::invalidate_pipeline_bits); rsx::thread::begin();