diff options
| author | VolcaEM <63682805+VolcaEM@users.noreply.github.com> | 2020-06-25 23:34:37 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-25 23:34:37 +0200 | 
| commit | 0f4512291a0504b32fac248f73a68fec34f657fe (patch) | |
| tree | 3c69736a2ac82a9a0076ec3b79673c814e5f1abd /src/yuzu | |
| parent | a46df409397855812812e83ae3ed6ce6261b72cb (diff) | |
| parent | a980b4cbc16cf1efad077053e1bf2bbb53c3d60a (diff) | |
Merge branch 'master' into quickstart-faq
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 20 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 13 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.ui | 13 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.cpp | 45 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.ui | 40 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics_advanced.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_player.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_service.cpp | 6 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 20 | ||||
| -rw-r--r-- | src/yuzu/yuzu.rc | 2 | 
12 files changed, 66 insertions, 106 deletions
| diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 8b9404718..75c27e39e 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -208,6 +208,10 @@ if (MSVC)      copy_yuzu_unicorn_deps(yuzu)  endif() +if (NOT APPLE) +    target_compile_definitions(yuzu PRIVATE HAS_OPENGL) +endif() +  if (ENABLE_VULKAN)      target_include_directories(yuzu PRIVATE ../../externals/Vulkan-Headers/include)      target_compile_definitions(yuzu PRIVATE HAS_VULKAN) diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 1adf8932b..696da2137 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -8,13 +8,16 @@  #include <QHBoxLayout>  #include <QKeyEvent>  #include <QMessageBox> -#include <QOffscreenSurface> -#include <QOpenGLContext>  #include <QPainter>  #include <QScreen>  #include <QStringList>  #include <QWindow> +#ifdef HAS_OPENGL +#include <QOffscreenSurface> +#include <QOpenGLContext> +#endif +  #if !defined(WIN32) && HAS_VULKAN  #include <qpa/qplatformnativeinterface.h>  #endif @@ -98,6 +101,7 @@ void EmuThread::run() {  #endif  } +#ifdef HAS_OPENGL  class OpenGLSharedContext : public Core::Frontend::GraphicsContext {  public:      /// Create the original context that should be shared from @@ -106,6 +110,9 @@ public:          format.setVersion(4, 3);          format.setProfile(QSurfaceFormat::CompatibilityProfile);          format.setOption(QSurfaceFormat::FormatOption::DeprecatedFunctions); +        if (Settings::values.renderer_debug) { +            format.setOption(QSurfaceFormat::FormatOption::DebugContext); +        }          // TODO: expose a setting for buffer value (ie default/single/double/triple)          format.setSwapBehavior(QSurfaceFormat::DefaultSwapBehavior);          format.setSwapInterval(0); @@ -180,6 +187,7 @@ private:      std::unique_ptr<QOffscreenSurface> offscreen_surface{};      QSurface* surface;  }; +#endif  class DummyContext : public Core::Frontend::GraphicsContext {}; @@ -470,6 +478,7 @@ void GRenderWindow::resizeEvent(QResizeEvent* event) {  }  std::unique_ptr<Core::Frontend::GraphicsContext> GRenderWindow::CreateSharedContext() const { +#ifdef HAS_OPENGL      if (Settings::values.renderer_backend == Settings::RendererBackend::OpenGL) {          auto c = static_cast<OpenGLSharedContext*>(main_context.get());          // Bind the shared contexts to the main surface in case the backend wants to take over @@ -477,6 +486,7 @@ std::unique_ptr<Core::Frontend::GraphicsContext> GRenderWindow::CreateSharedCont          return std::make_unique<OpenGLSharedContext>(c->GetShareContext(),                                                       child_widget->windowHandle());      } +#endif      return std::make_unique<DummyContext>();  } @@ -557,6 +567,7 @@ void GRenderWindow::OnMinimalClientAreaChangeRequest(std::pair<u32, u32> minimal  }  bool GRenderWindow::InitializeOpenGL() { +#ifdef HAS_OPENGL      // TODO: One of these flags might be interesting: WA_OpaquePaintEvent, WA_NoBackground,      // WA_DontShowOnScreen, WA_DeleteOnClose      auto child = new OpenGLRenderWidget(this); @@ -568,6 +579,11 @@ bool GRenderWindow::InitializeOpenGL() {          std::make_unique<OpenGLSharedContext>(context->GetShareContext(), child->windowHandle()));      return true; +#else +    QMessageBox::warning(this, tr("OpenGL not available!"), +                         tr("yuzu has not been compiled with OpenGL support.")); +    return false; +#endif  }  bool GRenderWindow::InitializeVulkan() { diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index b08b87426..32c81dc70 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -533,6 +533,8 @@ void Config::ReadDebuggingValues() {      Settings::values.quest_flag = ReadSetting(QStringLiteral("quest_flag"), false).toBool();      Settings::values.disable_cpu_opt =          ReadSetting(QStringLiteral("disable_cpu_opt"), false).toBool(); +    Settings::values.disable_macro_jit = +        ReadSetting(QStringLiteral("disable_macro_jit"), false).toBool();      qt_config->endGroup();  } @@ -629,13 +631,11 @@ void Config::ReadRendererValues() {          static_cast<Settings::RendererBackend>(ReadSetting(QStringLiteral("backend"), 0).toInt());      Settings::values.renderer_debug = ReadSetting(QStringLiteral("debug"), false).toBool();      Settings::values.vulkan_device = ReadSetting(QStringLiteral("vulkan_device"), 0).toInt(); -    Settings::values.resolution_factor = -        ReadSetting(QStringLiteral("resolution_factor"), 1.0).toFloat();      Settings::values.aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt();      Settings::values.max_anisotropy = ReadSetting(QStringLiteral("max_anisotropy"), 0).toInt();      Settings::values.use_frame_limit =          ReadSetting(QStringLiteral("use_frame_limit"), true).toBool(); -    Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toInt(); +    Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toUInt();      Settings::values.use_disk_shader_cache =          ReadSetting(QStringLiteral("use_disk_shader_cache"), true).toBool();      const int gpu_accuracy_level = ReadSetting(QStringLiteral("gpu_accuracy"), 0).toInt(); @@ -720,8 +720,6 @@ void Config::ReadUIValues() {              .toString();      UISettings::values.enable_discord_presence =          ReadSetting(QStringLiteral("enable_discord_presence"), true).toBool(); -    UISettings::values.screenshot_resolution_factor = -        static_cast<u16>(ReadSetting(QStringLiteral("screenshot_resolution_factor"), 0).toUInt());      UISettings::values.select_user_on_boot =          ReadSetting(QStringLiteral("select_user_on_boot"), false).toBool(); @@ -1011,6 +1009,7 @@ void Config::SaveDebuggingValues() {      WriteSetting(QStringLiteral("dump_nso"), Settings::values.dump_nso, false);      WriteSetting(QStringLiteral("quest_flag"), Settings::values.quest_flag, false);      WriteSetting(QStringLiteral("disable_cpu_opt"), Settings::values.disable_cpu_opt, false); +    WriteSetting(QStringLiteral("disable_macro_jit"), Settings::values.disable_macro_jit, false);      qt_config->endGroup();  } @@ -1079,8 +1078,6 @@ void Config::SaveRendererValues() {      WriteSetting(QStringLiteral("backend"), static_cast<int>(Settings::values.renderer_backend), 0);      WriteSetting(QStringLiteral("debug"), Settings::values.renderer_debug, false);      WriteSetting(QStringLiteral("vulkan_device"), Settings::values.vulkan_device, 0); -    WriteSetting(QStringLiteral("resolution_factor"), -                 static_cast<double>(Settings::values.resolution_factor), 1.0);      WriteSetting(QStringLiteral("aspect_ratio"), Settings::values.aspect_ratio, 0);      WriteSetting(QStringLiteral("max_anisotropy"), Settings::values.max_anisotropy, 0);      WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true); @@ -1156,8 +1153,6 @@ void Config::SaveUIValues() {                   QString::fromUtf8(UISettings::themes[0].second));      WriteSetting(QStringLiteral("enable_discord_presence"),                   UISettings::values.enable_discord_presence, true); -    WriteSetting(QStringLiteral("screenshot_resolution_factor"), -                 UISettings::values.screenshot_resolution_factor, 0);      WriteSetting(QStringLiteral("select_user_on_boot"), UISettings::values.select_user_on_boot,                   false); diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index c2026763e..2c77441fd 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp @@ -39,6 +39,8 @@ void ConfigureDebug::SetConfiguration() {      ui->disable_cpu_opt->setChecked(Settings::values.disable_cpu_opt);      ui->enable_graphics_debugging->setEnabled(!Core::System::GetInstance().IsPoweredOn());      ui->enable_graphics_debugging->setChecked(Settings::values.renderer_debug); +    ui->disable_macro_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn()); +    ui->disable_macro_jit->setChecked(Settings::values.disable_macro_jit);  }  void ConfigureDebug::ApplyConfiguration() { @@ -51,6 +53,7 @@ void ConfigureDebug::ApplyConfiguration() {      Settings::values.quest_flag = ui->quest_flag->isChecked();      Settings::values.disable_cpu_opt = ui->disable_cpu_opt->isChecked();      Settings::values.renderer_debug = ui->enable_graphics_debugging->isChecked(); +    Settings::values.disable_macro_jit = ui->disable_macro_jit->isChecked();      Debugger::ToggleConsole();      Log::Filter filter;      filter.ParseFilterString(Settings::values.log_filter); diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui index e0d4c4a44..46f0208c6 100644 --- a/src/yuzu/configuration/configure_debug.ui +++ b/src/yuzu/configuration/configure_debug.ui @@ -148,6 +148,19 @@          </property>         </widget>        </item> +      <item> +       <widget class="QCheckBox" name="disable_macro_jit"> +        <property name="enabled"> +         <bool>true</bool> +        </property> +        <property name="whatsThis"> +         <string>When checked, it disables the macro Just In Time compiler. Enabled this makes games run slower</string> +        </property> +        <property name="text"> +         <string>Disable Macro JIT</string> +        </property> +       </widget> +      </item>       </layout>      </widget>     </item> diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index ea667caef..304625cd7 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -19,47 +19,6 @@  #include "video_core/renderer_vulkan/renderer_vulkan.h"  #endif -namespace { -enum class Resolution : int { -    Auto, -    Scale1x, -    Scale2x, -    Scale3x, -    Scale4x, -}; - -float ToResolutionFactor(Resolution option) { -    switch (option) { -    case Resolution::Auto: -        return 0.f; -    case Resolution::Scale1x: -        return 1.f; -    case Resolution::Scale2x: -        return 2.f; -    case Resolution::Scale3x: -        return 3.f; -    case Resolution::Scale4x: -        return 4.f; -    } -    return 0.f; -} - -Resolution FromResolutionFactor(float factor) { -    if (factor == 0.f) { -        return Resolution::Auto; -    } else if (factor == 1.f) { -        return Resolution::Scale1x; -    } else if (factor == 2.f) { -        return Resolution::Scale2x; -    } else if (factor == 3.f) { -        return Resolution::Scale3x; -    } else if (factor == 4.f) { -        return Resolution::Scale4x; -    } -    return Resolution::Auto; -} -} // Anonymous namespace -  ConfigureGraphics::ConfigureGraphics(QWidget* parent)      : QWidget(parent), ui(new Ui::ConfigureGraphics) {      vulkan_device = Settings::values.vulkan_device; @@ -99,8 +58,6 @@ void ConfigureGraphics::SetConfiguration() {      ui->api->setEnabled(runtime_lock);      ui->api->setCurrentIndex(static_cast<int>(Settings::values.renderer_backend)); -    ui->resolution_factor_combobox->setCurrentIndex( -        static_cast<int>(FromResolutionFactor(Settings::values.resolution_factor)));      ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio);      ui->use_disk_shader_cache->setEnabled(runtime_lock);      ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache); @@ -114,8 +71,6 @@ void ConfigureGraphics::SetConfiguration() {  void ConfigureGraphics::ApplyConfiguration() {      Settings::values.renderer_backend = GetCurrentGraphicsBackend();      Settings::values.vulkan_device = vulkan_device; -    Settings::values.resolution_factor = -        ToResolutionFactor(static_cast<Resolution>(ui->resolution_factor_combobox->currentIndex()));      Settings::values.aspect_ratio = ui->aspect_ratio_combobox->currentIndex();      Settings::values.use_disk_shader_cache = ui->use_disk_shader_cache->isChecked();      Settings::values.use_asynchronous_gpu_emulation = diff --git a/src/yuzu/configuration/configure_graphics.ui b/src/yuzu/configuration/configure_graphics.ui index c816d6108..6e75447a5 100644 --- a/src/yuzu/configuration/configure_graphics.ui +++ b/src/yuzu/configuration/configure_graphics.ui @@ -85,46 +85,6 @@           </widget>          </item>          <item> -         <layout class="QHBoxLayout" name="horizontalLayout_2"> -          <item> -           <widget class="QLabel" name="label"> -            <property name="text"> -             <string>Internal Resolution:</string> -            </property> -           </widget> -          </item> -          <item> -           <widget class="QComboBox" name="resolution_factor_combobox"> -            <item> -             <property name="text"> -              <string>Auto (Window Size)</string> -             </property> -            </item> -            <item> -             <property name="text"> -              <string>Native (1280x720)</string> -             </property> -            </item> -            <item> -             <property name="text"> -              <string>2x Native (2560x1440)</string> -             </property> -            </item> -            <item> -             <property name="text"> -              <string>3x Native (3840x2160)</string> -             </property> -            </item> -            <item> -             <property name="text"> -              <string>4x Native (5120x2880)</string> -             </property> -            </item> -           </widget> -          </item> -         </layout> -        </item> -        <item>           <layout class="QHBoxLayout" name="horizontalLayout_6">            <item>             <widget class="QLabel" name="ar_label"> diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index 37aadf7f8..be5006ad3 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp @@ -12,9 +12,6 @@ ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(QWidget* parent)      ui->setupUi(this); -    // TODO: Remove this after assembly shaders are fully integrated -    ui->use_assembly_shaders->setVisible(false); -      SetConfiguration();  } diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index e4eb5594b..a05fa64ba 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -480,7 +480,9 @@ void ConfigureInputPlayer::RestoreDefaults() {              SetAnalogButton(params, analogs_param[analog_id], analog_sub_buttons[sub_button_id]);          }      } +      UpdateButtonLabels(); +    ApplyConfiguration();  }  void ConfigureInputPlayer::ClearAll() { @@ -505,6 +507,7 @@ void ConfigureInputPlayer::ClearAll() {      }      UpdateButtonLabels(); +    ApplyConfiguration();  }  void ConfigureInputPlayer::UpdateButtonLabels() { diff --git a/src/yuzu/configuration/configure_service.cpp b/src/yuzu/configuration/configure_service.cpp index 06566e981..0de7a4f0b 100644 --- a/src/yuzu/configuration/configure_service.cpp +++ b/src/yuzu/configuration/configure_service.cpp @@ -68,6 +68,7 @@ void ConfigureService::SetConfiguration() {  }  std::pair<QString, QString> ConfigureService::BCATDownloadEvents() { +#ifdef YUZU_ENABLE_BOXCAT      std::optional<std::string> global;      std::map<std::string, Service::BCAT::EventStatus> map;      const auto res = Service::BCAT::Boxcat::GetStatus(global, map); @@ -105,7 +106,10 @@ std::pair<QString, QString> ConfigureService::BCATDownloadEvents() {                     .arg(QString::fromStdString(key))                     .arg(FormatEventStatusString(value));      } -    return {QStringLiteral("Current Boxcat Events"), std::move(out)}; +    return {tr("Current Boxcat Events"), std::move(out)}; +#else +    return {tr("Current Boxcat Events"), tr("There are currently no events on boxcat.")}; +#endif  }  void ConfigureService::OnBCATImplChanged() { diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index b78f81095..4810b161a 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -218,7 +218,20 @@ GMainWindow::GMainWindow()      LOG_INFO(Frontend, "yuzu Version: {} | {}-{}", yuzu_build_version, Common::g_scm_branch,               Common::g_scm_desc);  #ifdef ARCHITECTURE_x86_64 -    LOG_INFO(Frontend, "Host CPU: {}", Common::GetCPUCaps().cpu_string); +    const auto& caps = Common::GetCPUCaps(); +    std::string cpu_string = caps.cpu_string; +    if (caps.avx || caps.avx2 || caps.avx512) { +        cpu_string += " | AVX"; +        if (caps.avx512) { +            cpu_string += "512"; +        } else if (caps.avx2) { +            cpu_string += '2'; +        } +        if (caps.fma || caps.fma4) { +            cpu_string += " | FMA"; +        } +    } +    LOG_INFO(Frontend, "Host CPU: {}", cpu_string);  #endif      LOG_INFO(Frontend, "Host OS: {}", QSysInfo::prettyProductName().toStdString());      LOG_INFO(Frontend, "Host RAM: {:.2f} GB", @@ -690,10 +703,7 @@ void GMainWindow::InitializeHotkeys() {                  Settings::values.use_frame_limit = !Settings::values.use_frame_limit;                  UpdateStatusBar();              }); -    // TODO: Remove this comment/static whenever the next major release of -    // MSVC occurs and we make it a requirement (see: -    // https://developercommunity.visualstudio.com/content/problem/93922/constexprs-are-trying-to-be-captured-in-lambda-fun.html) -    static constexpr u16 SPEED_LIMIT_STEP = 5; +    constexpr u16 SPEED_LIMIT_STEP = 5;      connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Increase Speed Limit"), this),              &QShortcut::activated, this, [&] {                  if (Settings::values.frame_limit < 9999 - SPEED_LIMIT_STEP) { diff --git a/src/yuzu/yuzu.rc b/src/yuzu/yuzu.rc index 1b253653f..4a3645a71 100644 --- a/src/yuzu/yuzu.rc +++ b/src/yuzu/yuzu.rc @@ -16,4 +16,4 @@ IDI_ICON1               ICON                    "../../dist/yuzu.ico"  // RT_MANIFEST  // -1                       RT_MANIFEST             "../../dist/yuzu.manifest" +0                       RT_MANIFEST             "../../dist/yuzu.manifest" | 
