From 3e710be07273000561bce0512e25ee81527be6d4 Mon Sep 17 00:00:00 2001 From: camdenorrb Date: Mon, 16 Dec 2024 19:36:44 -0600 Subject: [PATCH 1/2] Better flags --- Readme.md | 150 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 142 insertions(+), 8 deletions(-) diff --git a/Readme.md b/Readme.md index 456fb88078..51897b25e3 100644 --- a/Readme.md +++ b/Readme.md @@ -1,17 +1,151 @@ # Dolphin - A GameCube and Wii Emulator +--- + ### Debug Build steps -1. `mkdir build` -2. `cd build` -3. `cmake .. -G Ninja -DENABLE_NOGUI=ON -DENABLE_QT=OFF -DENABLE_HEADLESS=ON -DENABLE_ALSA=OFF -DENABLE_PULSEAUDIO=OFF -DENABLE_VULKAN=ON -DFASTLOG=ON -DENABLE_AUTOUPDATE=OFF -DENABLE_SDL=OFF -DENCODE_FRAMEDUMPS=OFF -DENABLE_LLVM=OFF -DENABLE_X11=OFF -DENABLE_ANALYTICS=OFF -DCMAKE_BUILD_TYPE=Debug -DENABLE_EGL=OFF -DUSE_RETRO_ACHIEVEMENTS=OFF -DUSE_DISCORD_PRESENCE=OFF` -4. `ninja -j $(nproc)` +```bash +mkdir build +cd build + +cmake .. -G Ninja \ +-DENABLE_NOGUI=ON \ +-DENABLE_QT=OFF \ +-DENABLE_HEADLESS=ON \ +-DENABLE_ALSA=OFF \ +-DENABLE_PULSEAUDIO=OFF \ +-DENABLE_VULKAN=ON \ +-DFASTLOG=OFF \ +-DENABLE_AUTOUPDATE=OFF \ +-DENABLE_SDL=OFF \ +-DENCODE_FRAMEDUMPS=ON \ +-DENABLE_LLVM=OFF \ +-DENABLE_X11=OFF \ +-DCMAKE_BUILD_TYPE=Release \ +-DENABLE_EGL=OFF \ +-DENABLE_ANALYTICS=OFF \ +-DUSE_RETRO_ACHIEVEMENTS=OFF \ +-DUSE_DISCORD_PRESENCE=OFF \ +-DCMAKE_CXX_FLAGS="-pipe" \ +-DCMAKE_C_FLAGS="-pipe" \ +-DCMAKE_EXE_LINKER_FLAGS="-pipe" \ +-DCMAKE_SHARED_LINKER_FLAGS="-pipe" \ +-DCMAKE_MODULE_LINKER_FLAGS="-pipe" \ +-DCMAKE_STATIC_LINKER_FLAGS="-pipe" + +ninja -j $(nproc) +``` +--- ### Performance Build steps -1. `mkdir build` -2. `cd build` -3. `cmake .. -G Ninja -DENABLE_NOGUI=ON -DENABLE_QT=OFF -DENABLE_HEADLESS=ON -DENABLE_ALSA=OFF -DENABLE_PULSEAUDIO=OFF -DENABLE_VULKAN=ON -DFASTLOG=OFF -DENABLE_AUTOUPDATE=OFF -DENABLE_SDL=OFF -DENCODE_FRAMEDUMPS=ON -DENABLE_LLVM=OFF -DENABLE_X11=OFF -DCMAKE_BUILD_TYPE=Release -DENABLE_EGL=OFF -DENABLE_ANALYTICS=OFF -DUSE_RETRO_ACHIEVEMENTS=OFF -DUSE_DISCORD_PRESENCE=OFF -DCMAKE_CXX_FLAGS="-march=native -mtune=native -flto -O3" -DCMAKE_C_FLAGS="-march=native -mtune=native -flto -O3"` -4. `ninja -j $(nproc)` +```bash +mkdir build +cd build + +cmake .. -G Ninja \ +-DENABLE_NOGUI=ON \ +-DENABLE_QT=OFF \ +-DENABLE_HEADLESS=ON \ +-DENABLE_ALSA=OFF \ +-DENABLE_PULSEAUDIO=OFF \ +-DENABLE_VULKAN=ON \ +-DFASTLOG=OFF \ +-DENABLE_AUTOUPDATE=OFF \ +-DENABLE_SDL=OFF \ +-DENCODE_FRAMEDUMPS=ON \ +-DENABLE_LLVM=OFF \ +-DENABLE_X11=OFF \ +-DCMAKE_BUILD_TYPE=Release \ +-DENABLE_EGL=OFF \ +-DENABLE_ANALYTICS=OFF \ +-DUSE_RETRO_ACHIEVEMENTS=OFF \ +-DUSE_DISCORD_PRESENCE=OFF \ +-DCMAKE_CXX_FLAGS="-march=native -mtune=native -flto -O3 -pipe" \ +-DCMAKE_C_FLAGS="-march=native -mtune=native -flto -O3 -pipe" \ +-DCMAKE_EXE_LINKER_FLAGS="-flto -O3 -pipe" \ +-DCMAKE_SHARED_LINKER_FLAGS="-flto -O3 -pipe" \ +-DCMAKE_MODULE_LINKER_FLAGS="-flto -O3 -pipe" \ +-DCMAKE_STATIC_LINKER_FLAGS="-flto -O3 -pipe" \ +-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON + +ninja -j $(nproc) +``` +--- + +### PGO Build (Ultra optimized build) + +#### Part 1 (generate profile data) +```bash + +mkdir build +cd build + +cmake .. -G Ninja \ +-DENABLE_NOGUI=ON \ +-DENABLE_QT=OFF \ +-DENABLE_HEADLESS=ON \ +-DENABLE_ALSA=OFF \ +-DENABLE_PULSEAUDIO=OFF \ +-DENABLE_VULKAN=ON \ +-DFASTLOG=OFF \ +-DENABLE_AUTOUPDATE=OFF \ +-DENABLE_SDL=OFF \ +-DENCODE_FRAMEDUMPS=ON \ +-DENABLE_LLVM=OFF \ +-DENABLE_X11=OFF \ +-DCMAKE_BUILD_TYPE=Release \ +-DENABLE_EGL=OFF \ +-DENABLE_ANALYTICS=OFF \ +-DUSE_RETRO_ACHIEVEMENTS=OFF \ +-DUSE_DISCORD_PRESENCE=OFF \ +-DCMAKE_CXX_FLAGS="-march=native -mtune=native -flto -O3 -pipe -fprofile-generate" \ +-DCMAKE_C_FLAGS="-march=native -mtune=native -flto -O3 -pipe -fprofile-generate" \ +-DCMAKE_EXE_LINKER_FLAGS="-flto -fprofile-generate" \ +-DCMAKE_SHARED_LINKER_FLAGS="-flto -fprofile-generate" \ +-DCMAKE_MODULE_LINKER_FLAGS="-flto -fprofile-generate" \ +-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON + +ninja -j $(nproc) +``` + +**After building this version, run for a bit and play to generate profiling data, the more, the better.** + +#### Part 2 (Merge profile data) +```bash +llvm-profdata merge -output=default.profdata *.profraw +``` + +#### Part 3 (Build with profile data) +```bash +cd build + +cmake .. -G Ninja \ + -DENABLE_NOGUI=ON \ + -DENABLE_QT=OFF \ + -DENABLE_HEADLESS=ON \ + -DENABLE_ALSA=OFF \ + -DENABLE_PULSEAUDIO=OFF \ + -DENABLE_VULKAN=ON \ + -DFASTLOG=OFF \ + -DENABLE_AUTOUPDATE=OFF \ + -DENABLE_SDL=OFF \ + -DENCODE_FRAMEDUMPS=ON \ + -DENABLE_LLVM=OFF \ + -DENABLE_X11=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_EGL=OFF \ + -DENABLE_ANALYTICS=OFF \ + -DUSE_RETRO_ACHIEVEMENTS=OFF \ + -DUSE_DISCORD_PRESENCE=OFF \ + -DCMAKE_CXX_FLAGS="-march=native -mtune=native -flto -O3 -pipe -fprofile-use=default.profdata -fprofile-correction" \ + -DCMAKE_C_FLAGS="-march=native -mtune=native -flto -O3 -pipe -fprofile-use=default.profdata -fprofile-correction" \ + -DCMAKE_EXE_LINKER_FLAGS="-flto -O3 -pipe -fprofile-use=default.profdata -fprofile-correction" \ + -DCMAKE_SHARED_LINKER_FLAGS="-flto -O3 -pipe -fprofile-use=default.profdata -fprofile-correction" \ + -DCMAKE_MODULE_LINKER_FLAGS="-flto -O3 -pipe -fprofile-use=default.profdata -fprofile-correction" \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON + +ninja -j $(nproc) +``` [Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Buildbot](https://dolphin.ci/) | [Forums](https://forums.dolphin-emu.org/) | [Wiki](https://wiki.dolphin-emu.org/) | [GitHub Wiki](https://github.com/dolphin-emu/dolphin/wiki) | [Issue Tracker](https://bugs.dolphin-emu.org/projects/emulator/issues) | [Coding Style](https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md) | [Transifex Page](https://app.transifex.com/dolphinemu/dolphin-emu/dashboard/) From 7a8be39633bfeccd6e02478c55464ac6f6f93ebf Mon Sep 17 00:00:00 2001 From: camdenorrb Date: Mon, 16 Dec 2024 19:37:33 -0600 Subject: [PATCH 2/2] Better flags --- Readme.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Readme.md b/Readme.md index 51897b25e3..c1cb3f7054 100644 --- a/Readme.md +++ b/Readme.md @@ -31,7 +31,6 @@ cmake .. -G Ninja \ -DCMAKE_EXE_LINKER_FLAGS="-pipe" \ -DCMAKE_SHARED_LINKER_FLAGS="-pipe" \ -DCMAKE_MODULE_LINKER_FLAGS="-pipe" \ --DCMAKE_STATIC_LINKER_FLAGS="-pipe" ninja -j $(nproc) ``` @@ -65,7 +64,6 @@ cmake .. -G Ninja \ -DCMAKE_EXE_LINKER_FLAGS="-flto -O3 -pipe" \ -DCMAKE_SHARED_LINKER_FLAGS="-flto -O3 -pipe" \ -DCMAKE_MODULE_LINKER_FLAGS="-flto -O3 -pipe" \ --DCMAKE_STATIC_LINKER_FLAGS="-flto -O3 -pipe" \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON ninja -j $(nproc)