Add flag to disable seperable shaders for osx Intel GPUs. Default is false

This commit is contained in:
B3n30 2020-04-18 13:37:58 +02:00
parent 79a0cbbba8
commit 1e54f27cde
10 changed files with 49 additions and 12 deletions

View file

@ -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();