mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 18:54:14 +01:00 
			
		
		
		
	configure_cpu: Split optimization settings off into Debug tab
This commit is contained in:
		
							parent
							
								
									da11a27f42
								
							
						
					
					
						commit
						a67d00ef31
					
				| @ -33,6 +33,9 @@ add_executable(yuzu | ||||
|     configuration/configure_cpu.cpp | ||||
|     configuration/configure_cpu.h | ||||
|     configuration/configure_cpu.ui | ||||
|     configuration/configure_cpu_debug.cpp | ||||
|     configuration/configure_cpu_debug.h | ||||
|     configuration/configure_cpu_debug.ui | ||||
|     configuration/configure_debug.cpp | ||||
|     configuration/configure_debug.h | ||||
|     configuration/configure_debug.ui | ||||
|  | ||||
| @ -83,6 +83,11 @@ | ||||
|          <string>CPU</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureCpuDebug" name="cpuDebugTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Debug</string> | ||||
|         </attribute> | ||||
|        </widget> | ||||
|        <widget class="ConfigureGraphics" name="graphicsTab"> | ||||
|         <attribute name="title"> | ||||
|          <string>Graphics</string> | ||||
| @ -169,6 +174,12 @@ | ||||
|    <header>configuration/configure_cpu.h</header> | ||||
|    <container>1</container> | ||||
|   </customwidget> | ||||
|   <customwidget> | ||||
|    <class>ConfigureCpuDebug</class> | ||||
|    <extends>QWidget</extends> | ||||
|    <header>configuration/configure_cpu_debug.h</header> | ||||
|    <container>1</container> | ||||
|   </customwidget> | ||||
|   <customwidget> | ||||
|    <class>ConfigureGraphics</class> | ||||
|    <extends>QWidget</extends> | ||||
|  | ||||
| @ -3,6 +3,7 @@ | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <QComboBox> | ||||
| #include <QMessageBox> | ||||
| 
 | ||||
| #include "common/common_types.h" | ||||
| #include "common/logging/log.h" | ||||
| @ -16,8 +17,8 @@ ConfigureCpu::ConfigureCpu(QWidget* parent) : QWidget(parent), ui(new Ui::Config | ||||
| 
 | ||||
|     SetConfiguration(); | ||||
| 
 | ||||
|     connect(ui->accuracy, qOverload<int>(&QComboBox::currentIndexChanged), this, | ||||
|             &ConfigureCpu::UpdateGroups); | ||||
|     connect(ui->accuracy, qOverload<int>(&QComboBox::activated), this, | ||||
|             &ConfigureCpu::AccuracyUpdated); | ||||
| } | ||||
| 
 | ||||
| ConfigureCpu::~ConfigureCpu() = default; | ||||
| @ -27,50 +28,24 @@ void ConfigureCpu::SetConfiguration() { | ||||
| 
 | ||||
|     ui->accuracy->setEnabled(runtime_lock); | ||||
|     ui->accuracy->setCurrentIndex(static_cast<int>(Settings::values.cpu_accuracy)); | ||||
|     UpdateGroups(static_cast<int>(Settings::values.cpu_accuracy)); | ||||
| 
 | ||||
|     ui->cpuopt_page_tables->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_page_tables->setChecked(Settings::values.cpuopt_page_tables); | ||||
|     ui->cpuopt_block_linking->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_block_linking->setChecked(Settings::values.cpuopt_block_linking); | ||||
|     ui->cpuopt_return_stack_buffer->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_return_stack_buffer->setChecked(Settings::values.cpuopt_return_stack_buffer); | ||||
|     ui->cpuopt_fast_dispatcher->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_fast_dispatcher->setChecked(Settings::values.cpuopt_fast_dispatcher); | ||||
|     ui->cpuopt_context_elimination->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_context_elimination->setChecked(Settings::values.cpuopt_context_elimination); | ||||
|     ui->cpuopt_const_prop->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_const_prop->setChecked(Settings::values.cpuopt_const_prop); | ||||
|     ui->cpuopt_misc_ir->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_misc_ir->setChecked(Settings::values.cpuopt_misc_ir); | ||||
|     ui->cpuopt_reduce_misalign_checks->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_reduce_misalign_checks->setChecked(Settings::values.cpuopt_reduce_misalign_checks); | ||||
| } | ||||
| 
 | ||||
| void ConfigureCpu::UpdateGroups(int index) { | ||||
|     switch (index) { | ||||
|     case 0: | ||||
|     default: | ||||
|         ui->group_safe->setVisible(false); | ||||
|         break; | ||||
|     case 1: | ||||
|         ui->group_safe->setVisible(true); | ||||
|         break; | ||||
| void ConfigureCpu::AccuracyUpdated(int index) { | ||||
|     if (static_cast<Settings::CPUAccuracy>(index) == Settings::CPUAccuracy::DebugMode) { | ||||
|         const auto result = QMessageBox::warning(this, tr("Setting CPU to Debug Mode"), | ||||
|                                                  tr("CPU Debug Mode is only intended for developer " | ||||
|                                                     "use. Are you sure you want to enable this?"), | ||||
|                                                  QMessageBox::Yes | QMessageBox::No); | ||||
|         if (result == QMessageBox::No) { | ||||
|             ui->accuracy->setCurrentIndex(static_cast<int>(Settings::CPUAccuracy::Accurate)); | ||||
|             return; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void ConfigureCpu::ApplyConfiguration() { | ||||
|     Settings::values.cpu_accuracy = | ||||
|         static_cast<Settings::CPUAccuracy>(ui->accuracy->currentIndex()); | ||||
| 
 | ||||
|     Settings::values.cpuopt_page_tables = ui->cpuopt_page_tables->isChecked(); | ||||
|     Settings::values.cpuopt_block_linking = ui->cpuopt_block_linking->isChecked(); | ||||
|     Settings::values.cpuopt_return_stack_buffer = ui->cpuopt_return_stack_buffer->isChecked(); | ||||
|     Settings::values.cpuopt_fast_dispatcher = ui->cpuopt_fast_dispatcher->isChecked(); | ||||
|     Settings::values.cpuopt_context_elimination = ui->cpuopt_context_elimination->isChecked(); | ||||
|     Settings::values.cpuopt_const_prop = ui->cpuopt_const_prop->isChecked(); | ||||
|     Settings::values.cpuopt_misc_ir = ui->cpuopt_misc_ir->isChecked(); | ||||
|     Settings::values.cpuopt_reduce_misalign_checks = ui->cpuopt_reduce_misalign_checks->isChecked(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureCpu::changeEvent(QEvent* event) { | ||||
|  | ||||
| @ -25,7 +25,7 @@ private: | ||||
|     void changeEvent(QEvent* event) override; | ||||
|     void RetranslateUI(); | ||||
| 
 | ||||
|     void UpdateGroups(int index); | ||||
|     void AccuracyUpdated(int index); | ||||
| 
 | ||||
|     void SetConfiguration(); | ||||
| 
 | ||||
|  | ||||
| @ -40,7 +40,7 @@ | ||||
|             </item> | ||||
|             <item> | ||||
|              <property name="text"> | ||||
|               <string>Debugging Mode (Debugging ONLY)</string> | ||||
|               <string>Enable Debug Mode</string> | ||||
|              </property> | ||||
|             </item> | ||||
|            </widget> | ||||
| @ -62,128 +62,6 @@ | ||||
|      </item> | ||||
|     </layout> | ||||
|    </item> | ||||
|    <item> | ||||
|     <layout class="QVBoxLayout"> | ||||
|      <item> | ||||
|       <widget class="QGroupBox" name="group_safe"> | ||||
|        <property name="title"> | ||||
|         <string>Safe CPU Optimizations</string> | ||||
|        </property> | ||||
|        <layout class="QVBoxLayout"> | ||||
|         <item> | ||||
|          <widget class="QLabel"> | ||||
|           <property name="wordWrap"> | ||||
|             <bool>1</bool> | ||||
|           </property> | ||||
|           <property name="text"> | ||||
|            <string>Keep all of these enabled. For debugging only.</string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_page_tables"> | ||||
|           <property name="text"> | ||||
|            <string>Enable inline page tables</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> | ||||
|             <div style="white-space: nowrap">Enabling it inlines accesses to PageTable::pointers into emitted code.</div> | ||||
|             <div style="white-space: nowrap">Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_block_linking"> | ||||
|           <property name="text"> | ||||
|            <string>Enable block linking</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_return_stack_buffer"> | ||||
|           <property name="text"> | ||||
|            <string>Enable return stack buffer</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_fast_dispatcher"> | ||||
|           <property name="text"> | ||||
|            <string>Enable fast dispatcher</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_context_elimination"> | ||||
|           <property name="text"> | ||||
|            <string>Enable context elimination</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_const_prop"> | ||||
|           <property name="text"> | ||||
|            <string>Enable constant propagation</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enables IR optimizations that involve constant propagation.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_misc_ir"> | ||||
|           <property name="text"> | ||||
|            <string>Enable miscellaneous optimizations</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enables miscellaneous IR optimizations.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_reduce_misalign_checks"> | ||||
|           <property name="text"> | ||||
|            <string>Enable misalignment check reduction</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> | ||||
|             <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|        </layout> | ||||
|       </widget> | ||||
|      </item> | ||||
|     </layout> | ||||
|    </item> | ||||
|    <item> | ||||
|     <spacer name="verticalSpacer"> | ||||
|      <property name="orientation"> | ||||
|  | ||||
							
								
								
									
										65
									
								
								src/yuzu/configuration/configure_cpu_debug.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								src/yuzu/configuration/configure_cpu_debug.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,65 @@ | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include <QComboBox> | ||||
| 
 | ||||
| #include "common/common_types.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "core/core.h" | ||||
| #include "core/settings.h" | ||||
| #include "ui_configure_cpu_debug.h" | ||||
| #include "yuzu/configuration/configure_cpu_debug.h" | ||||
| 
 | ||||
| ConfigureCpuDebug::ConfigureCpuDebug(QWidget* parent) | ||||
|     : QWidget(parent), ui(new Ui::ConfigureCpuDebug) { | ||||
|     ui->setupUi(this); | ||||
| 
 | ||||
|     SetConfiguration(); | ||||
| } | ||||
| 
 | ||||
| ConfigureCpuDebug::~ConfigureCpuDebug() = default; | ||||
| 
 | ||||
| void ConfigureCpuDebug::SetConfiguration() { | ||||
|     const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); | ||||
| 
 | ||||
|     ui->cpuopt_page_tables->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_page_tables->setChecked(Settings::values.cpuopt_page_tables); | ||||
|     ui->cpuopt_block_linking->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_block_linking->setChecked(Settings::values.cpuopt_block_linking); | ||||
|     ui->cpuopt_return_stack_buffer->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_return_stack_buffer->setChecked(Settings::values.cpuopt_return_stack_buffer); | ||||
|     ui->cpuopt_fast_dispatcher->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_fast_dispatcher->setChecked(Settings::values.cpuopt_fast_dispatcher); | ||||
|     ui->cpuopt_context_elimination->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_context_elimination->setChecked(Settings::values.cpuopt_context_elimination); | ||||
|     ui->cpuopt_const_prop->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_const_prop->setChecked(Settings::values.cpuopt_const_prop); | ||||
|     ui->cpuopt_misc_ir->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_misc_ir->setChecked(Settings::values.cpuopt_misc_ir); | ||||
|     ui->cpuopt_reduce_misalign_checks->setEnabled(runtime_lock); | ||||
|     ui->cpuopt_reduce_misalign_checks->setChecked(Settings::values.cpuopt_reduce_misalign_checks); | ||||
| } | ||||
| 
 | ||||
| void ConfigureCpuDebug::ApplyConfiguration() { | ||||
|     Settings::values.cpuopt_page_tables = ui->cpuopt_page_tables->isChecked(); | ||||
|     Settings::values.cpuopt_block_linking = ui->cpuopt_block_linking->isChecked(); | ||||
|     Settings::values.cpuopt_return_stack_buffer = ui->cpuopt_return_stack_buffer->isChecked(); | ||||
|     Settings::values.cpuopt_fast_dispatcher = ui->cpuopt_fast_dispatcher->isChecked(); | ||||
|     Settings::values.cpuopt_context_elimination = ui->cpuopt_context_elimination->isChecked(); | ||||
|     Settings::values.cpuopt_const_prop = ui->cpuopt_const_prop->isChecked(); | ||||
|     Settings::values.cpuopt_misc_ir = ui->cpuopt_misc_ir->isChecked(); | ||||
|     Settings::values.cpuopt_reduce_misalign_checks = ui->cpuopt_reduce_misalign_checks->isChecked(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureCpuDebug::changeEvent(QEvent* event) { | ||||
|     if (event->type() == QEvent::LanguageChange) { | ||||
|         RetranslateUI(); | ||||
|     } | ||||
| 
 | ||||
|     QWidget::changeEvent(event); | ||||
| } | ||||
| 
 | ||||
| void ConfigureCpuDebug::RetranslateUI() { | ||||
|     ui->retranslateUi(this); | ||||
| } | ||||
							
								
								
									
										31
									
								
								src/yuzu/configuration/configure_cpu_debug.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/yuzu/configuration/configure_cpu_debug.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| // Copyright 2020 yuzu Emulator Project
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <memory> | ||||
| #include <QWidget> | ||||
| #include "core/settings.h" | ||||
| 
 | ||||
| namespace Ui { | ||||
| class ConfigureCpuDebug; | ||||
| } | ||||
| 
 | ||||
| class ConfigureCpuDebug : public QWidget { | ||||
|     Q_OBJECT | ||||
| 
 | ||||
| public: | ||||
|     explicit ConfigureCpuDebug(QWidget* parent = nullptr); | ||||
|     ~ConfigureCpuDebug() override; | ||||
| 
 | ||||
|     void ApplyConfiguration(); | ||||
| 
 | ||||
| private: | ||||
|     void changeEvent(QEvent* event) override; | ||||
|     void RetranslateUI(); | ||||
| 
 | ||||
|     void SetConfiguration(); | ||||
| 
 | ||||
|     std::unique_ptr<Ui::ConfigureCpuDebug> ui; | ||||
| }; | ||||
							
								
								
									
										174
									
								
								src/yuzu/configuration/configure_cpu_debug.ui
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								src/yuzu/configuration/configure_cpu_debug.ui
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,174 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <ui version="4.0"> | ||||
|  <class>ConfigureCpuDebug</class> | ||||
|  <widget class="QWidget" name="ConfigureCpuDebug"> | ||||
|   <property name="geometry"> | ||||
|    <rect> | ||||
|     <x>0</x> | ||||
|     <y>0</y> | ||||
|     <width>400</width> | ||||
|     <height>321</height> | ||||
|    </rect> | ||||
|   </property> | ||||
|   <property name="windowTitle"> | ||||
|    <string>Form</string> | ||||
|   </property> | ||||
|   <layout class="QVBoxLayout"> | ||||
|    <item> | ||||
|     <layout class="QVBoxLayout"> | ||||
|      <item> | ||||
|       <widget class="QGroupBox"> | ||||
|        <property name="title"> | ||||
|         <string>Toggle CPU Optimizations</string> | ||||
|        </property> | ||||
|        <layout class="QVBoxLayout"> | ||||
|         <item> | ||||
|          <widget class="QLabel"> | ||||
|           <property name="wordWrap"> | ||||
|             <bool>1</bool> | ||||
|           </property> | ||||
|           <property name="text"> | ||||
|            <string> | ||||
|             <div> | ||||
|             <b>For debugging only.</b> | ||||
|             <br> | ||||
|             If you're not sure what these do, keep all of these enabled. | ||||
|             <br> | ||||
|             These settings only take effect when CPU Accuracy is "Debug Mode". | ||||
|             </div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_page_tables"> | ||||
|           <property name="text"> | ||||
|            <string>Enable inline page tables</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> | ||||
|             <div style="white-space: nowrap">Enabling it inlines accesses to PageTable::pointers into emitted code.</div> | ||||
|             <div style="white-space: nowrap">Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_block_linking"> | ||||
|           <property name="text"> | ||||
|            <string>Enable block linking</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_return_stack_buffer"> | ||||
|           <property name="text"> | ||||
|            <string>Enable return stack buffer</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_fast_dispatcher"> | ||||
|           <property name="text"> | ||||
|            <string>Enable fast dispatcher</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_context_elimination"> | ||||
|           <property name="text"> | ||||
|            <string>Enable context elimination</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_const_prop"> | ||||
|           <property name="text"> | ||||
|            <string>Enable constant propagation</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enables IR optimizations that involve constant propagation.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_misc_ir"> | ||||
|           <property name="text"> | ||||
|            <string>Enable miscellaneous optimizations</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div>Enables miscellaneous IR optimizations.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|         <item> | ||||
|          <widget class="QCheckBox" name="cpuopt_reduce_misalign_checks"> | ||||
|           <property name="text"> | ||||
|            <string>Enable misalignment check reduction</string> | ||||
|           </property> | ||||
|           <property name="toolTip"> | ||||
|            <string> | ||||
|             <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> | ||||
|             <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> | ||||
|            </string> | ||||
|           </property> | ||||
|          </widget> | ||||
|         </item> | ||||
|        </layout> | ||||
|       </widget> | ||||
|      </item> | ||||
|     </layout> | ||||
|    </item> | ||||
|    <item> | ||||
|     <spacer name="verticalSpacer"> | ||||
|      <property name="orientation"> | ||||
|       <enum>Qt::Vertical</enum> | ||||
|      </property> | ||||
|      <property name="sizeHint" stdset="0"> | ||||
|       <size> | ||||
|        <width>20</width> | ||||
|        <height>40</height> | ||||
|       </size> | ||||
|      </property> | ||||
|     </spacer> | ||||
|    </item> | ||||
|    <item> | ||||
|     <widget class="QLabel" name="label_disable_info"> | ||||
|      <property name="text"> | ||||
|       <string>CPU settings are available only when game is not running.</string> | ||||
|      </property> | ||||
|      <property name="wordWrap"> | ||||
|       <bool>true</bool> | ||||
|      </property> | ||||
|     </widget> | ||||
|    </item> | ||||
|   </layout> | ||||
|  </widget> | ||||
|  <resources/> | ||||
|  <connections/> | ||||
| </ui> | ||||
| @ -43,6 +43,7 @@ void ConfigureDialog::ApplyConfiguration() { | ||||
|     ui->inputTab->ApplyConfiguration(); | ||||
|     ui->hotkeysTab->ApplyConfiguration(registry); | ||||
|     ui->cpuTab->ApplyConfiguration(); | ||||
|     ui->cpuDebugTab->ApplyConfiguration(); | ||||
|     ui->graphicsTab->ApplyConfiguration(); | ||||
|     ui->graphicsAdvancedTab->ApplyConfiguration(); | ||||
|     ui->audioTab->ApplyConfiguration(); | ||||
| @ -80,7 +81,7 @@ void ConfigureDialog::PopulateSelectionList() { | ||||
|     const std::array<std::pair<QString, QList<QWidget*>>, 6> items{ | ||||
|         {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->uiTab}}, | ||||
|          {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, | ||||
|          {tr("CPU"), {ui->cpuTab}}, | ||||
|          {tr("CPU"), {ui->cpuTab, ui->cpuDebugTab}}, | ||||
|          {tr("Graphics"), {ui->graphicsTab, ui->graphicsAdvancedTab}}, | ||||
|          {tr("Audio"), {ui->audioTab}}, | ||||
|          {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, | ||||
| @ -110,6 +111,7 @@ void ConfigureDialog::UpdateVisibleTabs() { | ||||
|         {ui->inputTab, tr("Input")}, | ||||
|         {ui->hotkeysTab, tr("Hotkeys")}, | ||||
|         {ui->cpuTab, tr("CPU")}, | ||||
|         {ui->cpuDebugTab, tr("Debug")}, | ||||
|         {ui->graphicsTab, tr("Graphics")}, | ||||
|         {ui->graphicsAdvancedTab, tr("Advanced")}, | ||||
|         {ui->audioTab, tr("Audio")}, | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user