From 1e54f27cde3f6454a7fbe134e0ce63dd32141c7f Mon Sep 17 00:00:00 2001 From: B3n30 Date: Sat, 18 Apr 2020 13:37:58 +0200 Subject: [PATCH 1/3] Add flag to disable seperable shaders for osx Intel GPUs. Default is false --- src/citra/config.cpp | 5 ++--- src/citra/default_ini.h | 4 ++++ src/citra_qt/configuration/config.cpp | 13 +++++-------- src/citra_qt/configuration/configure_graphics.cpp | 12 +++++++++++- src/citra_qt/configuration/configure_graphics.ui | 7 +++++++ src/core/settings.cpp | 2 ++ src/core/settings.h | 1 + src/video_core/renderer_opengl/gl_rasterizer.cpp | 15 +++++++++++++++ src/video_core/video_core.cpp | 1 + src/video_core/video_core.h | 1 + 10 files changed, 49 insertions(+), 12 deletions(-) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 400c655ff..9c00ba095 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -110,13 +110,12 @@ void Config::ReadValues() { // Renderer Settings::values.use_gles = sdl2_config->GetBoolean("Renderer", "use_gles", false); Settings::values.use_hw_renderer = sdl2_config->GetBoolean("Renderer", "use_hw_renderer", true); + Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", true); #ifdef __APPLE__ // Hardware shader is broken on macos thanks to poor drivers. // We still want to provide this option for test/development purposes, but disable it by // default. - Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", false); -#else - Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", true); + Settings::values.seperable_shader = sdl2_config->GetBoolean("Renderer", "seperable_shader", false); #endif Settings::values.shaders_accurate_mul = sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index a6f7d5585..3bd62726e 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -110,6 +110,10 @@ use_hw_renderer = # 0: Software, 1 (default): Hardware use_hw_shader = +# Whether to use seperable shaders to emulate 3DS shaders (macOS only) +# 0: Off (Default), 1 : On +seperable_shader = + # Whether to use accurate multiplication in hardware shaders # 0: Off (Default. Faster, but causes issues in some games) 1: On (Slower, but correct) shaders_accurate_mul = diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 88be0330f..797cab392 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -431,13 +431,12 @@ void Config::ReadRendererValues() { Settings::values.use_hw_renderer = ReadSetting(QStringLiteral("use_hw_renderer"), true).toBool(); + Settings::values.use_hw_shader = ReadSetting(QStringLiteral("use_hw_shader"), true).toBool(); #ifdef __APPLE__ // Hardware shader is broken on macos thanks to poor drivers. // We still want to provide this option for test/development purposes, but disable it by // default. - Settings::values.use_hw_shader = ReadSetting(QStringLiteral("use_hw_shader"), false).toBool(); -#else - Settings::values.use_hw_shader = ReadSetting(QStringLiteral("use_hw_shader"), true).toBool(); + Settings::values.seperable_shader = ReadSetting(QStringLiteral("seperable_shader"), false).toBool(); #endif Settings::values.shaders_accurate_mul = ReadSetting(QStringLiteral("shaders_accurate_mul"), false).toBool(); @@ -916,13 +915,11 @@ void Config::SaveRendererValues() { qt_config->beginGroup(QStringLiteral("Renderer")); WriteSetting(QStringLiteral("use_hw_renderer"), Settings::values.use_hw_renderer, true); + WriteSetting(QStringLiteral("use_hw_shader"), Settings::values.use_hw_shader, true); #ifdef __APPLE__ // Hardware shader is broken on macos thanks to poor drivers. - // We still want to provide this option for test/development purposes, but disable it by - // default. - WriteSetting(QStringLiteral("use_hw_shader"), Settings::values.use_hw_shader, false); -#else - WriteSetting(QStringLiteral("use_hw_shader"), Settings::values.use_hw_shader, true); + // TODO: enable this for none Intel GPUs + WriteSetting(QStringLiteral("use_seperable_shader"), Settings::values.seperable_shader, false); #endif WriteSetting(QStringLiteral("shaders_accurate_mul"), Settings::values.shaders_accurate_mul, false); diff --git a/src/citra_qt/configuration/configure_graphics.cpp b/src/citra_qt/configuration/configure_graphics.cpp index b9dd4b468..918d13f02 100644 --- a/src/citra_qt/configuration/configure_graphics.cpp +++ b/src/citra_qt/configuration/configure_graphics.cpp @@ -29,15 +29,23 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent) connect(ui->toggle_hw_shader, &QCheckBox::toggled, ui->hw_shader_group, &QWidget::setEnabled); #ifdef __APPLE__ connect(ui->toggle_hw_shader, &QCheckBox::stateChanged, this, [this](int state) { + if (state == Qt::Checked) { + ui->toggle_seperable_shader->setEnabled(true); + } + }); + connect(ui->toggle_seperable_shader, &QCheckBox::stateChanged, this, [this](int state) { if (state == Qt::Checked) { QMessageBox::warning( this, tr("Hardware Shader Warning"), - tr("Hardware Shader support is broken on macOS, and will cause graphical issues " + tr("Seperable Shader support is broken on macOS with Intel GPUs, and will cause graphical issues " "like showing a black screen.

The option is only there for " "test/development purposes. If you experience graphical issues with Hardware " "Shader, please turn it off.")); } }); +#else + // TODO(B3N30): Hide this for macs with none Intel GPUs, too. + ui->toggle_seperable_shader->visible(false); #endif } @@ -46,6 +54,7 @@ ConfigureGraphics::~ConfigureGraphics() = default; void ConfigureGraphics::SetConfiguration() { ui->toggle_hw_renderer->setChecked(Settings::values.use_hw_renderer); ui->toggle_hw_shader->setChecked(Settings::values.use_hw_shader); + ui->toggle_seperable_shader->setChecked(Settings::values.seperable_shader); ui->toggle_accurate_mul->setChecked(Settings::values.shaders_accurate_mul); ui->toggle_shader_jit->setChecked(Settings::values.use_shader_jit); ui->toggle_vsync_new->setChecked(Settings::values.use_vsync_new); @@ -54,6 +63,7 @@ void ConfigureGraphics::SetConfiguration() { void ConfigureGraphics::ApplyConfiguration() { Settings::values.use_hw_renderer = ui->toggle_hw_renderer->isChecked(); Settings::values.use_hw_shader = ui->toggle_hw_shader->isChecked(); + Settings::values.seperable_shader = ui->toggle_seperable_shader->isChecked(); Settings::values.shaders_accurate_mul = ui->toggle_accurate_mul->isChecked(); Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked(); Settings::values.use_vsync_new = ui->toggle_vsync_new->isChecked(); diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui index 43f538558..5dad2bcef 100644 --- a/src/citra_qt/configuration/configure_graphics.ui +++ b/src/citra_qt/configuration/configure_graphics.ui @@ -76,6 +76,13 @@ 0 + + + + Seperable Shader (Intel GPUs only) + + + diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 6af80205b..707e79090 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -27,6 +27,7 @@ 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_seperable_shader_enabled = values.seperable_shader; VideoCore::g_hw_shader_accurate_mul = values.shaders_accurate_mul; VideoCore::g_use_disk_shader_cache = values.use_disk_shader_cache; @@ -78,6 +79,7 @@ void LogSettings() { LogSetting("Renderer_UseGLES", Settings::values.use_gles); LogSetting("Renderer_UseHwRenderer", Settings::values.use_hw_renderer); LogSetting("Renderer_UseHwShader", Settings::values.use_hw_shader); + LogSetting("Renderer_SeperableShader", Settings::values.seperable_shader); LogSetting("Renderer_ShadersAccurateMul", Settings::values.shaders_accurate_mul); LogSetting("Renderer_UseShaderJit", Settings::values.use_shader_jit); LogSetting("Renderer_UseResolutionFactor", Settings::values.resolution_factor); diff --git a/src/core/settings.h b/src/core/settings.h index 70bdd8c4c..cf521555d 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -142,6 +142,7 @@ struct Values { bool use_gles; bool use_hw_renderer; bool use_hw_shader; + bool seperable_shader; bool use_disk_shader_cache; bool shaders_accurate_mul; bool use_shader_jit; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index b2fd23ff7..8722fbe1f 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -43,6 +43,10 @@ static bool IsVendorAmd() { std::string gpu_vendor{reinterpret_cast(glGetString(GL_VENDOR))}; return gpu_vendor == "ATI Technologies Inc." || gpu_vendor == "Advanced Micro Devices, Inc."; } +static bool IsVendorIntel() { + std::string gpu_vendor{reinterpret_cast(glGetString(GL_VENDOR))}; + return gpu_vendor == "Intel Inc."; +} RasterizerOpenGL::RasterizerOpenGL(Frontend::EmuWindow& window) : is_amd(IsVendorAmd()), shader_dirty(true), @@ -161,8 +165,19 @@ RasterizerOpenGL::RasterizerOpenGL(Frontend::EmuWindow& window) state.Apply(); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index_buffer.GetHandle()); +#ifdef __APPLE__ + if (IsVendorIntel()) { + shader_program_manager = std::make_unique( + VideoCore::g_seperable_shader_enabled ? GLAD_GL_ARB_separate_shader_objects : false, + is_amd); + } else { + shader_program_manager = + std::make_unique(GLAD_GL_ARB_separate_shader_objects, is_amd); + } +#else shader_program_manager = std::make_unique(GLAD_GL_ARB_separate_shader_objects, is_amd); +#endif glEnable(GL_BLEND); diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index 619ea3d4c..2711c50c0 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp @@ -23,6 +23,7 @@ std::unique_ptr g_renderer; ///< Renderer plugin std::atomic g_hw_renderer_enabled; std::atomic g_shader_jit_enabled; std::atomic g_hw_shader_enabled; +std::atomic g_seperable_shader_enabled; std::atomic g_hw_shader_accurate_mul; std::atomic g_use_disk_shader_cache; std::atomic g_renderer_bg_color_update_requested; diff --git a/src/video_core/video_core.h b/src/video_core/video_core.h index 409f4deb2..a00fd181d 100644 --- a/src/video_core/video_core.h +++ b/src/video_core/video_core.h @@ -31,6 +31,7 @@ extern std::unique_ptr g_renderer; ///< Renderer plugin 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_seperable_shader_enabled; extern std::atomic g_hw_shader_accurate_mul; extern std::atomic g_use_disk_shader_cache; extern std::atomic g_renderer_bg_color_update_requested; From 922a5f738a80eef9928a54f1e247dfe40745b0b0 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Sat, 18 Apr 2020 15:55:19 +0200 Subject: [PATCH 2/3] fix typo; updated comment about apples bad driver --- src/citra/config.cpp | 4 ++-- src/citra/default_ini.h | 4 ++-- src/citra_qt/configuration/config.cpp | 4 ++-- src/citra_qt/configuration/configure_graphics.cpp | 12 ++++++------ src/citra_qt/configuration/configure_graphics.ui | 4 ++-- src/core/settings.cpp | 4 ++-- src/core/settings.h | 2 +- src/video_core/renderer_opengl/gl_rasterizer.cpp | 2 +- src/video_core/video_core.cpp | 2 +- src/video_core/video_core.h | 2 +- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 9c00ba095..0df04e557 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -112,10 +112,10 @@ void Config::ReadValues() { Settings::values.use_hw_renderer = sdl2_config->GetBoolean("Renderer", "use_hw_renderer", true); Settings::values.use_hw_shader = sdl2_config->GetBoolean("Renderer", "use_hw_shader", true); #ifdef __APPLE__ - // Hardware shader is broken on macos thanks to poor drivers. + // Separable shader is broken on macos with Intel GPU thanks to poor drivers. // We still want to provide this option for test/development purposes, but disable it by // default. - Settings::values.seperable_shader = sdl2_config->GetBoolean("Renderer", "seperable_shader", false); + Settings::values.separable_shader = sdl2_config->GetBoolean("Renderer", "separable_shader", false); #endif Settings::values.shaders_accurate_mul = sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false); diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h index 3bd62726e..9a60f566e 100644 --- a/src/citra/default_ini.h +++ b/src/citra/default_ini.h @@ -110,9 +110,9 @@ use_hw_renderer = # 0: Software, 1 (default): Hardware use_hw_shader = -# Whether to use seperable shaders to emulate 3DS shaders (macOS only) +# Whether to use separable shaders to emulate 3DS shaders (macOS only) # 0: Off (Default), 1 : On -seperable_shader = +separable_shader = # Whether to use accurate multiplication in hardware shaders # 0: Off (Default. Faster, but causes issues in some games) 1: On (Slower, but correct) diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 797cab392..4bc486037 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -436,7 +436,7 @@ void Config::ReadRendererValues() { // Hardware shader is broken on macos thanks to poor drivers. // We still want to provide this option for test/development purposes, but disable it by // default. - Settings::values.seperable_shader = ReadSetting(QStringLiteral("seperable_shader"), false).toBool(); + Settings::values.separable_shader = ReadSetting(QStringLiteral("separable_shader"), false).toBool(); #endif Settings::values.shaders_accurate_mul = ReadSetting(QStringLiteral("shaders_accurate_mul"), false).toBool(); @@ -919,7 +919,7 @@ void Config::SaveRendererValues() { #ifdef __APPLE__ // Hardware shader is broken on macos thanks to poor drivers. // TODO: enable this for none Intel GPUs - WriteSetting(QStringLiteral("use_seperable_shader"), Settings::values.seperable_shader, false); + WriteSetting(QStringLiteral("use_separable_shader"), Settings::values.separable_shader, false); #endif WriteSetting(QStringLiteral("shaders_accurate_mul"), Settings::values.shaders_accurate_mul, false); diff --git a/src/citra_qt/configuration/configure_graphics.cpp b/src/citra_qt/configuration/configure_graphics.cpp index 918d13f02..f09aa474b 100644 --- a/src/citra_qt/configuration/configure_graphics.cpp +++ b/src/citra_qt/configuration/configure_graphics.cpp @@ -30,14 +30,14 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent) #ifdef __APPLE__ connect(ui->toggle_hw_shader, &QCheckBox::stateChanged, this, [this](int state) { if (state == Qt::Checked) { - ui->toggle_seperable_shader->setEnabled(true); + ui->toggle_separable_shader->setEnabled(true); } }); - connect(ui->toggle_seperable_shader, &QCheckBox::stateChanged, this, [this](int state) { + connect(ui->toggle_separable_shader, &QCheckBox::stateChanged, this, [this](int state) { if (state == Qt::Checked) { QMessageBox::warning( this, tr("Hardware Shader Warning"), - tr("Seperable Shader support is broken on macOS with Intel GPUs, and will cause graphical issues " + tr("Separable Shader support is broken on macOS with Intel GPUs, and will cause graphical issues " "like showing a black screen.

The option is only there for " "test/development purposes. If you experience graphical issues with Hardware " "Shader, please turn it off.")); @@ -45,7 +45,7 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent) }); #else // TODO(B3N30): Hide this for macs with none Intel GPUs, too. - ui->toggle_seperable_shader->visible(false); + ui->toggle_separable_shader->setVisible(false); #endif } @@ -54,7 +54,7 @@ ConfigureGraphics::~ConfigureGraphics() = default; void ConfigureGraphics::SetConfiguration() { ui->toggle_hw_renderer->setChecked(Settings::values.use_hw_renderer); ui->toggle_hw_shader->setChecked(Settings::values.use_hw_shader); - ui->toggle_seperable_shader->setChecked(Settings::values.seperable_shader); + ui->toggle_separable_shader->setChecked(Settings::values.separable_shader); ui->toggle_accurate_mul->setChecked(Settings::values.shaders_accurate_mul); ui->toggle_shader_jit->setChecked(Settings::values.use_shader_jit); ui->toggle_vsync_new->setChecked(Settings::values.use_vsync_new); @@ -63,7 +63,7 @@ void ConfigureGraphics::SetConfiguration() { void ConfigureGraphics::ApplyConfiguration() { Settings::values.use_hw_renderer = ui->toggle_hw_renderer->isChecked(); Settings::values.use_hw_shader = ui->toggle_hw_shader->isChecked(); - Settings::values.seperable_shader = ui->toggle_seperable_shader->isChecked(); + Settings::values.separable_shader = ui->toggle_separable_shader->isChecked(); Settings::values.shaders_accurate_mul = ui->toggle_accurate_mul->isChecked(); Settings::values.use_shader_jit = ui->toggle_shader_jit->isChecked(); Settings::values.use_vsync_new = ui->toggle_vsync_new->isChecked(); diff --git a/src/citra_qt/configuration/configure_graphics.ui b/src/citra_qt/configuration/configure_graphics.ui index 5dad2bcef..f3d169427 100644 --- a/src/citra_qt/configuration/configure_graphics.ui +++ b/src/citra_qt/configuration/configure_graphics.ui @@ -77,9 +77,9 @@ 0
- + - Seperable Shader (Intel GPUs only) + Separable Shader (Intel GPUs only) diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 707e79090..22bec6faf 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -27,7 +27,7 @@ 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_seperable_shader_enabled = values.seperable_shader; + VideoCore::g_separable_shader_enabled = values.separable_shader; VideoCore::g_hw_shader_accurate_mul = values.shaders_accurate_mul; VideoCore::g_use_disk_shader_cache = values.use_disk_shader_cache; @@ -79,7 +79,7 @@ void LogSettings() { LogSetting("Renderer_UseGLES", Settings::values.use_gles); LogSetting("Renderer_UseHwRenderer", Settings::values.use_hw_renderer); LogSetting("Renderer_UseHwShader", Settings::values.use_hw_shader); - LogSetting("Renderer_SeperableShader", Settings::values.seperable_shader); + LogSetting("Renderer_SeparableShader", Settings::values.separable_shader); LogSetting("Renderer_ShadersAccurateMul", Settings::values.shaders_accurate_mul); LogSetting("Renderer_UseShaderJit", Settings::values.use_shader_jit); LogSetting("Renderer_UseResolutionFactor", Settings::values.resolution_factor); diff --git a/src/core/settings.h b/src/core/settings.h index cf521555d..db7a20359 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -142,7 +142,7 @@ struct Values { bool use_gles; bool use_hw_renderer; bool use_hw_shader; - bool seperable_shader; + bool separable_shader; bool use_disk_shader_cache; bool shaders_accurate_mul; bool use_shader_jit; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 8722fbe1f..70c74a992 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -168,7 +168,7 @@ RasterizerOpenGL::RasterizerOpenGL(Frontend::EmuWindow& window) #ifdef __APPLE__ if (IsVendorIntel()) { shader_program_manager = std::make_unique( - VideoCore::g_seperable_shader_enabled ? GLAD_GL_ARB_separate_shader_objects : false, + VideoCore::g_separable_shader_enabled ? GLAD_GL_ARB_separate_shader_objects : false, is_amd); } else { shader_program_manager = diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index 2711c50c0..87310c5ce 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp @@ -23,7 +23,7 @@ std::unique_ptr g_renderer; ///< Renderer plugin std::atomic g_hw_renderer_enabled; std::atomic g_shader_jit_enabled; std::atomic g_hw_shader_enabled; -std::atomic g_seperable_shader_enabled; +std::atomic g_separable_shader_enabled; std::atomic g_hw_shader_accurate_mul; std::atomic g_use_disk_shader_cache; std::atomic g_renderer_bg_color_update_requested; diff --git a/src/video_core/video_core.h b/src/video_core/video_core.h index a00fd181d..9e12cfda6 100644 --- a/src/video_core/video_core.h +++ b/src/video_core/video_core.h @@ -31,7 +31,7 @@ extern std::unique_ptr g_renderer; ///< Renderer plugin 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_seperable_shader_enabled; +extern std::atomic g_separable_shader_enabled; extern std::atomic g_hw_shader_accurate_mul; extern std::atomic g_use_disk_shader_cache; extern std::atomic g_renderer_bg_color_update_requested; From ed48f8accfea326947304c74b85e747df6a5f968 Mon Sep 17 00:00:00 2001 From: B3n30 Date: Mon, 4 May 2020 12:14:40 +0200 Subject: [PATCH 3/3] clang-format fix --- src/citra/config.cpp | 3 ++- src/citra_qt/configuration/config.cpp | 5 +++-- src/citra_qt/configuration/configure_graphics.cpp | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/citra/config.cpp b/src/citra/config.cpp index 0df04e557..865f5bc85 100644 --- a/src/citra/config.cpp +++ b/src/citra/config.cpp @@ -115,7 +115,8 @@ void Config::ReadValues() { // Separable shader is broken on macos with Intel GPU thanks to poor drivers. // We still want to provide this option for test/development purposes, but disable it by // default. - Settings::values.separable_shader = sdl2_config->GetBoolean("Renderer", "separable_shader", false); + Settings::values.separable_shader = + sdl2_config->GetBoolean("Renderer", "separable_shader", false); #endif Settings::values.shaders_accurate_mul = sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false); diff --git a/src/citra_qt/configuration/config.cpp b/src/citra_qt/configuration/config.cpp index 4bc486037..068be17d6 100644 --- a/src/citra_qt/configuration/config.cpp +++ b/src/citra_qt/configuration/config.cpp @@ -433,10 +433,11 @@ void Config::ReadRendererValues() { ReadSetting(QStringLiteral("use_hw_renderer"), true).toBool(); Settings::values.use_hw_shader = ReadSetting(QStringLiteral("use_hw_shader"), true).toBool(); #ifdef __APPLE__ - // Hardware shader is broken on macos thanks to poor drivers. + // Hardware shader is broken on macos with Intel GPUs thanks to poor drivers. // We still want to provide this option for test/development purposes, but disable it by // default. - Settings::values.separable_shader = ReadSetting(QStringLiteral("separable_shader"), false).toBool(); + Settings::values.separable_shader = + ReadSetting(QStringLiteral("separable_shader"), false).toBool(); #endif Settings::values.shaders_accurate_mul = ReadSetting(QStringLiteral("shaders_accurate_mul"), false).toBool(); diff --git a/src/citra_qt/configuration/configure_graphics.cpp b/src/citra_qt/configuration/configure_graphics.cpp index f09aa474b..66c3f6e8b 100644 --- a/src/citra_qt/configuration/configure_graphics.cpp +++ b/src/citra_qt/configuration/configure_graphics.cpp @@ -37,7 +37,8 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent) if (state == Qt::Checked) { QMessageBox::warning( this, tr("Hardware Shader Warning"), - tr("Separable Shader support is broken on macOS with Intel GPUs, and will cause graphical issues " + tr("Separable Shader support is broken on macOS with Intel GPUs, and will cause " + "graphical issues " "like showing a black screen.

The option is only there for " "test/development purposes. If you experience graphical issues with Hardware " "Shader, please turn it off."));