citra_qt: disable hw shader by default for macos

Also show an warning when turning it on.
This commit is contained in:
zhupengfei 2018-07-17 10:03:32 +08:00
parent fd5f71bcff
commit a398bceb93
No known key found for this signature in database
GPG key ID: 85B82A3E62174206
3 changed files with 29 additions and 0 deletions

View file

@ -95,7 +95,14 @@ void Config::ReadValues() {
// Renderer
Settings::values.use_hw_renderer = sdl2_config->GetBoolean("Renderer", "use_hw_renderer", 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);
#endif
Settings::values.shaders_accurate_gs =
sdl2_config->GetBoolean("Renderer", "shaders_accurate_gs", true);
Settings::values.shaders_accurate_mul =

View file

@ -83,7 +83,14 @@ void Config::ReadValues() {
qt_config->beginGroup("Renderer");
Settings::values.use_hw_renderer = qt_config->value("use_hw_renderer", 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 = qt_config->value("use_hw_shader", false).toBool();
#else
Settings::values.use_hw_shader = qt_config->value("use_hw_shader", true).toBool();
#endif
Settings::values.shaders_accurate_gs = qt_config->value("shaders_accurate_gs", true).toBool();
Settings::values.shaders_accurate_mul =
qt_config->value("shaders_accurate_mul", false).toBool();

View file

@ -2,6 +2,9 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#ifdef __APPLE__
#include <QMessageBox>
#endif
#include "citra_qt/configuration/configure_graphics.h"
#include "core/core.h"
#include "core/settings.h"
@ -26,6 +29,18 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent)
ui->hw_shader_group->setEnabled(ui->toggle_hw_shader->isChecked());
connect(ui->toggle_hw_shader, &QCheckBox::stateChanged, ui->hw_shader_group,
&QWidget::setEnabled);
#ifdef __APPLE__
connect(ui->toggle_hw_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 "
"like showing a black screen.<br><br>The option is only there for "
"test/development purposes. If you experience graphical issues with Hardware "
"Shader, please turn it off."));
}
});
#endif
}
ConfigureGraphics::~ConfigureGraphics() {}