فهرست منبع

config: Use simplified checkbox (from Citra) for CPU JIT.

bunnei 8 سال پیش
والد
کامیت
94f4009c3b

+ 3 - 7
src/core/core.cpp

@@ -148,19 +148,15 @@ System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) {
 
     current_process = Kernel::Process::Create("main");
 
-    switch (Settings::values.cpu_core) {
-    case Settings::CpuCore::Unicorn:
-        cpu_core = std::make_shared<ARM_Unicorn>();
-        break;
-    case Settings::CpuCore::Dynarmic:
-    default:
+    if (Settings::values.use_cpu_jit) {
 #ifdef ARCHITECTURE_x86_64
         cpu_core = std::make_shared<ARM_Dynarmic>();
 #else
         cpu_core = std::make_shared<ARM_Unicorn>();
         LOG_WARNING(Core, "CPU JIT requested, but Dynarmic not available");
 #endif
-        break;
+    } else {
+        cpu_core = std::make_shared<ARM_Unicorn>();
     }
 
     gpu_core = std::make_unique<Tegra::GPU>();

+ 1 - 1
src/core/settings.h

@@ -121,7 +121,7 @@ struct Values {
     std::string touch_device;
 
     // Core
-    CpuCore cpu_core;
+    bool use_cpu_jit;
 
     // Data Storage
     bool use_virtual_sd;

+ 3 - 2
src/core/telemetry_session.cpp

@@ -154,12 +154,13 @@ TelemetrySession::TelemetrySession() {
 #endif
 
     // Log user configuration information
-    AddField(Telemetry::FieldType::UserConfig, "Core_CpuCore",
-             static_cast<int>(Settings::values.cpu_core));
+    AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit);
     AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor",
              Settings::values.resolution_factor);
     AddField(Telemetry::FieldType::UserConfig, "Renderer_ToggleFramelimit",
              Settings::values.toggle_framelimit);
+    AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode",
+             Settings::values.use_docked_mode);
 }
 
 TelemetrySession::~TelemetrySession() {

+ 2 - 3
src/yuzu/configuration/config.cpp

@@ -77,8 +77,7 @@ void Config::ReadValues() {
     qt_config->endGroup();
 
     qt_config->beginGroup("Core");
-    Settings::values.cpu_core =
-        static_cast<Settings::CpuCore>(qt_config->value("cpu_core", 1).toInt());
+    Settings::values.use_cpu_jit = qt_config->value("use_cpu_jit", true).toBool();
     qt_config->endGroup();
 
     qt_config->beginGroup("Renderer");
@@ -175,7 +174,7 @@ void Config::SaveValues() {
     qt_config->endGroup();
 
     qt_config->beginGroup("Core");
-    qt_config->setValue("cpu_core", static_cast<int>(Settings::values.cpu_core));
+    qt_config->setValue("use_cpu_jit", Settings::values.use_cpu_jit);
     qt_config->endGroup();
 
     qt_config->beginGroup("Renderer");

+ 3 - 4
src/yuzu/configuration/configure_general.cpp

@@ -15,7 +15,7 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent)
 
     this->setConfiguration();
 
-    ui->cpu_core_combobox->setEnabled(!Core::System::GetInstance().IsPoweredOn());
+    ui->use_cpu_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn());
     ui->use_docked_mode->setEnabled(!Core::System::GetInstance().IsPoweredOn());
 }
 
@@ -24,15 +24,14 @@ ConfigureGeneral::~ConfigureGeneral() {}
 void ConfigureGeneral::setConfiguration() {
     ui->toggle_deepscan->setChecked(UISettings::values.gamedir_deepscan);
     ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing);
-    ui->cpu_core_combobox->setCurrentIndex(static_cast<int>(Settings::values.cpu_core));
+    ui->use_cpu_jit->setChecked(Settings::values.use_cpu_jit);
     ui->use_docked_mode->setChecked(Settings::values.use_docked_mode);
 }
 
 void ConfigureGeneral::applyConfiguration() {
     UISettings::values.gamedir_deepscan = ui->toggle_deepscan->isChecked();
     UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
-    Settings::values.cpu_core =
-        static_cast<Settings::CpuCore>(ui->cpu_core_combobox->currentIndex());
+    Settings::values.use_cpu_jit = ui->use_cpu_jit->isChecked();
     Settings::values.use_docked_mode = ui->use_docked_mode->isChecked();
     Settings::Apply();
 }

+ 17 - 24
src/yuzu/configuration/configure_general.ui

@@ -44,31 +44,24 @@
       </widget>
      </item>
      <item>
-       <widget class="QGroupBox" name="CpuCoreGroupBox">
-         <property name="title">
-           <string>CPU Core</string>
-         </property>
-         <layout class="QHBoxLayout" name="CpuCoreHorizontalLayout">
-           <item>
-             <layout class="QVBoxLayout" name="CpuCoreVerticalLayout">
-               <item>
-                 <widget class="QComboBox" name="cpu_core_combobox">
-                  <item>
-                   <property name="text">
-                    <string>Unicorn</string>
-                   </property>
-                  </item>
-                  <item>
-                   <property name="text">
-                    <string>Dynarmic</string>
-                   </property>
-                  </item>
-                 </widget>
-               </item>
-             </layout>
-           </item>
+      <widget class="QGroupBox" name="PerformanceGroupBox">
+       <property name="title">
+        <string>Performance</string>
+       </property>
+       <layout class="QHBoxLayout" name="PerformanceHorizontalLayout">
+        <item>
+         <layout class="QVBoxLayout" name="PerformanceVerticalLayout">
+          <item>
+           <widget class="QCheckBox" name="use_cpu_jit">
+            <property name="text">
+             <string>Enable CPU JIT</string>
+            </property>
+           </widget>
+          </item>
          </layout>
-       </widget>
+        </item>
+       </layout>
+      </widget>
      </item>
      <item>
       <widget class="QGroupBox" name="EmulationGroupBox">

+ 1 - 2
src/yuzu_cmd/config.cpp

@@ -90,8 +90,7 @@ void Config::ReadValues() {
         sdl2_config->Get("Controls", "touch_device", "engine:emu_window");
 
     // Core
-    Settings::values.cpu_core =
-        static_cast<Settings::CpuCore>(sdl2_config->GetInteger("Core", "cpu_core", 1));
+    Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true);
 
     // Renderer
     Settings::values.resolution_factor =

+ 3 - 3
src/yuzu_cmd/default_ini.h

@@ -76,9 +76,9 @@ motion_device=
 touch_device=
 
 [Core]
-# Which CPU core to use for CPU emulation
-# 0: Unicorn (slow), 1 (default): Dynarmic (faster)
-cpu_core =
+# Whether to use the Just-In-Time (JIT) compiler for CPU emulation
+# 0: Interpreter (slow), 1 (default): JIT (fast)
+use_cpu_jit =
 
 [Renderer]
 # Whether to use software or hardware rendering.