Add flag to disable seperable shaders for osx Intel GPUs. Default is false
This commit is contained in:
parent
79a0cbbba8
commit
1e54f27cde
10 changed files with 49 additions and 12 deletions
|
@ -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);
|
||||
|
|
|
@ -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.<br><br>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();
|
||||
|
|
|
@ -76,6 +76,13 @@
|
|||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="toggle_seperable_shader">
|
||||
<property name="text">
|
||||
<string>Seperable Shader (Intel GPUs only)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="toggle_accurate_mul">
|
||||
<property name="toolTip">
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue