mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	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