From 8a47e7e49361180498094ae5e41aa1f75958c025 Mon Sep 17 00:00:00 2001 From: N00byKing Date: Thu, 19 Apr 2018 20:22:26 +0200 Subject: [PATCH] Implement Pull #3528 from citra: use nvidia graphics automatically on laptops with optimus (with AMD support) (#271) * Port 3528: use nvidia graphics automatically on laptops with optimus * Force dedicated AMD Card for switchable Graphics * Ran clang-format --- src/yuzu/main.cpp | 9 +++++++++ src/yuzu_cmd/yuzu.cpp | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 534145f7e5..20796e92c3 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -44,6 +44,15 @@ Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin); #endif +#ifdef _WIN32 +extern "C" { +// tells Nvidia and AMD drivers to use the dedicated GPU by default on laptops with switchable +// graphics +__declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001; +__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; +} +#endif + /** * "Callouts" are one-time instructional messages shown to the user. In the config settings, there * is a bitfield "callout_flags" options, used to track if a message has already been shown to the diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index 261312f628..a911404475 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -37,6 +37,15 @@ #include "yuzu_cmd/config.h" #include "yuzu_cmd/emu_window/emu_window_sdl2.h" +#ifdef _WIN32 +extern "C" { +// tells Nvidia and AMD drivers to use the dedicated GPU by default on laptops with switchable +// graphics +__declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001; +__declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; +} +#endif + static void PrintHelp(const char* argv0) { std::cout << "Usage: " << argv0 << " [options] \n"