From 06815ec905bef9341bd26d287252cf0b69b99c71 Mon Sep 17 00:00:00 2001 From: wwylele Date: Sun, 13 May 2018 10:47:06 +0300 Subject: [PATCH] video_core: receive hardware shader settings --- src/core/settings.cpp | 3 +++ src/video_core/renderer_opengl/gl_shader_gen.cpp | 3 ++- src/video_core/video_core.cpp | 4 +++- src/video_core/video_core.h | 3 +++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 770b7fda7..2ce26d536 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -22,6 +22,9 @@ void Apply() { VideoCore::g_hw_renderer_enabled = values.use_hw_renderer; VideoCore::g_shader_jit_enabled = values.use_shader_jit; + VideoCore::g_hw_shader_enabled = values.use_hw_shader; + VideoCore::g_hw_shader_accurate_gs = values.shaders_accurate_gs; + VideoCore::g_hw_shader_accurate_mul = values.shaders_accurate_mul; if (VideoCore::g_emu_window) { auto layout = VideoCore::g_emu_window->GetFramebufferLayout(); diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 16f4556c8..17c1b7e92 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp @@ -18,6 +18,7 @@ #include "video_core/renderer_opengl/gl_shader_decompiler.h" #include "video_core/renderer_opengl/gl_shader_gen.h" #include "video_core/renderer_opengl/gl_shader_util.h" +#include "video_core/video_core.h" using Pica::FramebufferRegs; using Pica::LightingRegs; @@ -226,7 +227,7 @@ void PicaShaderConfigCommon::Init(const Pica::ShaderRegs& regs, Pica::Shader::Sh program_hash = setup.GetProgramCodeHash(); swizzle_hash = setup.GetSwizzleDataHash(); main_offset = regs.main_offset; - sanitize_mul = false; // TODO (wwylele): stubbed now. Should sync with user settings + sanitize_mul = VideoCore::g_hw_shader_accurate_mul; num_outputs = 0; output_map.fill(16); diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index f4b530604..9fc29bbad 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp @@ -19,7 +19,9 @@ std::unique_ptr g_renderer; ///< Renderer plugin std::atomic g_hw_renderer_enabled; std::atomic g_shader_jit_enabled; -std::atomic g_vsync_enabled; +std::atomic g_hw_shader_enabled; +std::atomic g_hw_shader_accurate_gs; +std::atomic g_hw_shader_accurate_mul; /// Initialize the video core bool Init(EmuWindow* emu_window) { diff --git a/src/video_core/video_core.h b/src/video_core/video_core.h index 69c672f29..7ede71494 100644 --- a/src/video_core/video_core.h +++ b/src/video_core/video_core.h @@ -22,6 +22,9 @@ extern EmuWindow* g_emu_window; ///< Emu window // qt ui) extern std::atomic g_hw_renderer_enabled; extern std::atomic g_shader_jit_enabled; +extern std::atomic g_hw_shader_enabled; +extern std::atomic g_hw_shader_accurate_gs; +extern std::atomic g_hw_shader_accurate_mul; /// Start the video core void Start();