diff options
| -rw-r--r-- | src/common/settings.cpp | 3 | ||||
| -rw-r--r-- | src/common/settings.h | 3 | ||||
| -rw-r--r-- | src/core/core.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/buffer_cache/buffer_cache.h | 2 | ||||
| -rw-r--r-- | src/video_core/buffer_cache/memory_tracker_base.h | 6 | ||||
| -rw-r--r-- | src/video_core/texture_cache/texture_cache.h | 2 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.cpp | 9 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.ui | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.cpp | 10 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_system.ui | 7 | ||||
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu_cmd/default_ini.h | 4 | ||||
| -rw-r--r-- | vcpkg.json | 2 | 
18 files changed, 44 insertions, 36 deletions
| diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 77ff21128..cb1bca467 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -45,6 +45,7 @@ void LogSettings() {      log_setting("System_LanguageIndex", values.language_index.GetValue());      log_setting("System_RegionIndex", values.region_index.GetValue());      log_setting("System_TimeZoneIndex", values.time_zone_index.GetValue()); +    log_setting("System_UnsafeMemoryLayout", values.use_unsafe_extended_memory_layout.GetValue());      log_setting("Core_UseMultiCore", values.use_multi_core.GetValue());      log_setting("CPU_Accuracy", values.cpu_accuracy.GetValue());      log_setting("Renderer_UseResolutionScaling", values.resolution_setup.GetValue()); @@ -191,7 +192,7 @@ void RestoreGlobalState(bool is_powered_on) {      // Core      values.use_multi_core.SetGlobal(true); -    values.use_extended_memory_layout.SetGlobal(true); +    values.use_unsafe_extended_memory_layout.SetGlobal(true);      // CPU      values.cpu_accuracy.SetGlobal(true); diff --git a/src/common/settings.h b/src/common/settings.h index 5379d0dd5..adebb0ca7 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -388,7 +388,8 @@ struct Values {      // Core      SwitchableSetting<bool> use_multi_core{true, "use_multi_core"}; -    SwitchableSetting<bool> use_extended_memory_layout{false, "use_extended_memory_layout"}; +    SwitchableSetting<bool> use_unsafe_extended_memory_layout{false, +                                                              "use_unsafe_extended_memory_layout"};      // Cpu      SwitchableSetting<CPUAccuracy, true> cpu_accuracy{CPUAccuracy::Auto, CPUAccuracy::Auto, diff --git a/src/core/core.cpp b/src/core/core.cpp index caa6a77be..ac0fb7872 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -137,7 +137,7 @@ struct System::Impl {          device_memory = std::make_unique<Core::DeviceMemory>();          is_multicore = Settings::values.use_multi_core.GetValue(); -        extended_memory_layout = Settings::values.use_extended_memory_layout.GetValue(); +        extended_memory_layout = Settings::values.use_unsafe_extended_memory_layout.GetValue();          core_timing.SetMulticore(is_multicore);          core_timing.Initialize([&system]() { system.RegisterHostThread(); }); @@ -169,7 +169,7 @@ struct System::Impl {      void ReinitializeIfNecessary(System& system) {          const bool must_reinitialize =              is_multicore != Settings::values.use_multi_core.GetValue() || -            extended_memory_layout != Settings::values.use_extended_memory_layout.GetValue(); +            extended_memory_layout != Settings::values.use_unsafe_extended_memory_layout.GetValue();          if (!must_reinitialize) {              return; @@ -178,7 +178,7 @@ struct System::Impl {          LOG_DEBUG(Kernel, "Re-initializing");          is_multicore = Settings::values.use_multi_core.GetValue(); -        extended_memory_layout = Settings::values.use_extended_memory_layout.GetValue(); +        extended_memory_layout = Settings::values.use_unsafe_extended_memory_layout.GetValue();          Initialize(system);      } diff --git a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp index 36d0d20d2..49bdc671e 100644 --- a/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp +++ b/src/core/hle/kernel/board/nintendo/nx/k_system_control.cpp @@ -35,12 +35,13 @@ namespace {  using namespace Common::Literals;  u32 GetMemorySizeForInit() { -    return Settings::values.use_extended_memory_layout ? Smc::MemorySize_8GB : Smc::MemorySize_4GB; +    return Settings::values.use_unsafe_extended_memory_layout ? Smc::MemorySize_8GB +                                                              : Smc::MemorySize_4GB;  }  Smc::MemoryArrangement GetMemoryArrangeForInit() { -    return Settings::values.use_extended_memory_layout ? Smc::MemoryArrangement_8GB -                                                       : Smc::MemoryArrangement_4GB; +    return Settings::values.use_unsafe_extended_memory_layout ? Smc::MemoryArrangement_8GB +                                                              : Smc::MemoryArrangement_4GB;  }  } // namespace diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index 7975564b5..e534e1e9c 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -1426,7 +1426,7 @@ bool BufferCache<P>::SynchronizeBufferNoModified(Buffer& buffer, VAddr cpu_addr,                  .size = sub_size,              });              total_size_bytes += sub_size; -            largest_copy = std::max(largest_copy, sub_size); +            largest_copy = std::max<u64>(largest_copy, sub_size);          }          const std::span<BufferCopy> copies_span(copies.data(), copies.size());          UploadMemory(buffer, total_size_bytes, largest_copy, copies_span); diff --git a/src/video_core/buffer_cache/memory_tracker_base.h b/src/video_core/buffer_cache/memory_tracker_base.h index 4bc59017f..dc4ebfcaa 100644 --- a/src/video_core/buffer_cache/memory_tracker_base.h +++ b/src/video_core/buffer_cache/memory_tracker_base.h @@ -170,7 +170,8 @@ private:          std::size_t page_index{cpu_address >> HIGHER_PAGE_BITS};          u64 page_offset{cpu_address & HIGHER_PAGE_MASK};          while (remaining_size > 0) { -            const std::size_t copy_amount{std::min(HIGHER_PAGE_SIZE - page_offset, remaining_size)}; +            const std::size_t copy_amount{ +                std::min<std::size_t>(HIGHER_PAGE_SIZE - page_offset, remaining_size)};              auto* manager{top_tier[page_index]};              if (manager) {                  if constexpr (BOOL_BREAK) { @@ -206,7 +207,8 @@ private:          u64 begin = std::numeric_limits<u64>::max();          u64 end = 0;          while (remaining_size > 0) { -            const std::size_t copy_amount{std::min(HIGHER_PAGE_SIZE - page_offset, remaining_size)}; +            const std::size_t copy_amount{ +                std::min<std::size_t>(HIGHER_PAGE_SIZE - page_offset, remaining_size)};              auto* manager{top_tier[page_index]};              const auto execute = [&] {                  auto [new_begin, new_end] = func(manager, page_offset, copy_amount); diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index e601f8446..f335009d0 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -888,7 +888,7 @@ void TextureCache<P>::DownloadImageIntoBuffer(typename TextureCache<P>::Image* i              buffer,              download_map.buffer,          }; -        std::array buffer_offsets{ +        std::array<u64, 2> buffer_offsets{              buffer_offset,              download_map.offset,          }; diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 6f288b3f8..6ffca2af2 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -617,7 +617,9 @@ bool Device::ShouldBoostClocks() const {      const bool is_steam_deck = vendor_id == 0x1002 && device_id == 0x163F; -    return validated_driver && !is_steam_deck; +    const bool is_debugging = this->HasDebuggingToolAttached(); + +    return validated_driver && !is_steam_deck && !is_debugging;  }  bool Device::GetSuitability(bool requires_swapchain) { diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 305891d18..be33e4d79 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -497,7 +497,7 @@ void Config::ReadCoreValues() {      qt_config->beginGroup(QStringLiteral("Core"));      ReadGlobalSetting(Settings::values.use_multi_core); -    ReadGlobalSetting(Settings::values.use_extended_memory_layout); +    ReadGlobalSetting(Settings::values.use_unsafe_extended_memory_layout);      qt_config->endGroup();  } @@ -1162,7 +1162,7 @@ void Config::SaveCoreValues() {      qt_config->beginGroup(QStringLiteral("Core"));      WriteGlobalSetting(Settings::values.use_multi_core); -    WriteGlobalSetting(Settings::values.use_extended_memory_layout); +    WriteGlobalSetting(Settings::values.use_unsafe_extended_memory_layout);      qt_config->endGroup();  } diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index 207bcdc4d..26258d744 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp @@ -35,9 +35,6 @@ void ConfigureGeneral::SetConfiguration() {      ui->use_multi_core->setEnabled(runtime_lock);      ui->use_multi_core->setChecked(Settings::values.use_multi_core.GetValue()); -    ui->use_extended_memory_layout->setEnabled(runtime_lock); -    ui->use_extended_memory_layout->setChecked( -        Settings::values.use_extended_memory_layout.GetValue());      ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing.GetValue());      ui->toggle_user_on_boot->setChecked(UISettings::values.select_user_on_boot.GetValue()); @@ -79,9 +76,6 @@ void ConfigureGeneral::ResetDefaults() {  void ConfigureGeneral::ApplyConfiguration() {      ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_multi_core, ui->use_multi_core,                                               use_multi_core); -    ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_extended_memory_layout, -                                             ui->use_extended_memory_layout, -                                             use_extended_memory_layout);      if (Settings::IsConfiguringGlobal()) {          UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked(); @@ -141,9 +135,6 @@ void ConfigureGeneral::SetupPerGameUI() {                                              Settings::values.use_speed_limit, use_speed_limit);      ConfigurationShared::SetColoredTristate(ui->use_multi_core, Settings::values.use_multi_core,                                              use_multi_core); -    ConfigurationShared::SetColoredTristate(ui->use_extended_memory_layout, -                                            Settings::values.use_extended_memory_layout, -                                            use_extended_memory_layout);      connect(ui->toggle_speed_limit, &QCheckBox::clicked, ui->speed_limit, [this]() {          ui->speed_limit->setEnabled(ui->toggle_speed_limit->isChecked() && diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h index a090c1a3f..7ff63f425 100644 --- a/src/yuzu/configuration/configure_general.h +++ b/src/yuzu/configuration/configure_general.h @@ -47,7 +47,6 @@ private:      ConfigurationShared::CheckState use_speed_limit;      ConfigurationShared::CheckState use_multi_core; -    ConfigurationShared::CheckState use_extended_memory_layout;      const Core::System& system;  }; diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui index add110bb0..986a1625b 100644 --- a/src/yuzu/configuration/configure_general.ui +++ b/src/yuzu/configuration/configure_general.ui @@ -62,13 +62,6 @@             </widget>            </item>            <item> -           <widget class="QCheckBox" name="use_extended_memory_layout"> -            <property name="text"> -             <string>Extended memory layout (8GB DRAM)</string> -            </property> -           </widget> -          </item> -          <item>             <widget class="QCheckBox" name="toggle_check_exit">              <property name="text">               <string>Confirm exit while emulation is running</string> diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 6af34f793..286ccc5cd 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp @@ -111,6 +111,9 @@ void ConfigureSystem::SetConfiguration() {      ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time));      ui->device_name_edit->setText(          QString::fromUtf8(Settings::values.device_name.GetValue().c_str())); +    ui->use_unsafe_extended_memory_layout->setEnabled(enabled); +    ui->use_unsafe_extended_memory_layout->setChecked( +        Settings::values.use_unsafe_extended_memory_layout.GetValue());      if (Settings::IsConfiguringGlobal()) {          ui->combo_language->setCurrentIndex(Settings::values.language_index.GetValue()); @@ -160,6 +163,9 @@ void ConfigureSystem::ApplyConfiguration() {      ConfigurationShared::ApplyPerGameSetting(&Settings::values.region_index, ui->combo_region);      ConfigurationShared::ApplyPerGameSetting(&Settings::values.time_zone_index,                                               ui->combo_time_zone); +    ConfigurationShared::ApplyPerGameSetting(&Settings::values.use_unsafe_extended_memory_layout, +                                             ui->use_unsafe_extended_memory_layout, +                                             use_unsafe_extended_memory_layout);      if (Settings::IsConfiguringGlobal()) {          // Guard if during game and set to game-specific value @@ -215,6 +221,10 @@ void ConfigureSystem::SetupPerGameUI() {          Settings::values.rng_seed.GetValue().has_value(),          Settings::values.rng_seed.GetValue(true).has_value(), use_rng_seed); +    ConfigurationShared::SetColoredTristate(ui->use_unsafe_extended_memory_layout, +                                            Settings::values.use_unsafe_extended_memory_layout, +                                            use_unsafe_extended_memory_layout); +      ui->custom_rtc_checkbox->setVisible(false);      ui->custom_rtc_edit->setVisible(false);  } diff --git a/src/yuzu/configuration/configure_system.h b/src/yuzu/configuration/configure_system.h index ec28724a1..ce1a91601 100644 --- a/src/yuzu/configuration/configure_system.h +++ b/src/yuzu/configuration/configure_system.h @@ -41,6 +41,7 @@ private:      bool enabled = false;      ConfigurationShared::CheckState use_rng_seed; +    ConfigurationShared::CheckState use_unsafe_extended_memory_layout;      Core::System& system;  }; diff --git a/src/yuzu/configuration/configure_system.ui b/src/yuzu/configuration/configure_system.ui index 9e7bc3b93..e0caecd5e 100644 --- a/src/yuzu/configuration/configure_system.ui +++ b/src/yuzu/configuration/configure_system.ui @@ -478,6 +478,13 @@              </property>             </widget>            </item> +          <item row="7" column="0"> +           <widget class="QCheckBox" name="use_unsafe_extended_memory_layout"> +            <property name="text"> +             <string>Unsafe extended memory layout (8GB DRAM)</string> +            </property> +           </widget> +          </item>           </layout>          </item>         </layout> diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index fa347fb8c..e4f91d07c 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -274,7 +274,7 @@ void Config::ReadValues() {      // Core      ReadSetting("Core", Settings::values.use_multi_core); -    ReadSetting("Core", Settings::values.use_extended_memory_layout); +    ReadSetting("Core", Settings::values.use_unsafe_extended_memory_layout);      // Cpu      ReadSetting("Cpu", Settings::values.cpu_accuracy); diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h index c0c89fbb9..f714eae17 100644 --- a/src/yuzu_cmd/default_ini.h +++ b/src/yuzu_cmd/default_ini.h @@ -163,9 +163,9 @@ keyboard_enabled =  # 0: Disabled, 1 (default): Enabled  use_multi_core = -# Enable extended guest system memory layout (8GB DRAM) +# Enable unsafe extended guest system memory layout (8GB DRAM)  # 0 (default): Disabled, 1: Enabled -use_extended_memory_layout = +use_unsafe_extended_memory_layout =  [Cpu]  # Adjusts various optimizations. diff --git a/vcpkg.json b/vcpkg.json index 0352dab77..19f99e89e 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -49,7 +49,7 @@      "overrides": [          {              "name": "catch2", -            "version": "3.0.1" +            "version": "3.3.1"          },          {              "name": "fmt", | 
