Configuration Guide

From Dolphin Emulator Wiki
(Redirected from Performance Guide)
Jump to: navigation, search

Dolphin has two performance related configuration windows: Dolphin configuration and Graphics settings, in addition to applying settings per game via their GameINI. Dolphin is a very demanding program, so configuring Dolphin the right way is very important to run titles smoothly.

System Requirements

Every game has different requirements, some titles may require a powerful computer while some other titles may not. Generally, these are the minimum recommended requirements for Dolphin.

Desktop Computers

  • OS: 64-bit edition of Windows (10 or higher), Linux, or macOS (macOS 10.14 Mojave or higher). Most modern Linux distributions should work given support for Dolphin's dependencies, and FreeBSD is unsupported but also may work.
  • Processor: A 64-bit x86-64 or AArch64 processor. Highly recommended to have 4 cores or more. Faster is better.
  • Graphics: A graphics card that supports Direct3D 11 / OpenGL 4.4 / Vulkan 1.1 is recommended. Onboard graphics may work, but drivers may vary.

Android/Mobile Devices

  • OS: 64-bit Android Operating System. Android 9 or higher recommended.
  • Processor: As powerful as possible. For Qualcomm devices, processors with 2 or more "big cores" recommended. SD700 or newer is typically recommended.
  • Graphics: RNDA2 or Snapdragon based graphics processors give the best performance. High-end Mali graphics solutions may also provide playable framerates. All other manufacturers are not generally recommended.

Dolphin Configuration

Dolphin's default configurations are centered around a mixture of performance and compatibility. Faster computers may want to disable some of the performance hacks for more stability, where as slower computers and many mobile devices may want to sacrifice stability for even more performance. In this guide, we'll go through some of the easiest ways to gain performance and note the downsides of the various performance hacks in order to help identify when they should be disabled for stability. Settings that do not pertain to performance will not be mentioned in this guide.

Main Configuration Window

Enable Dual Core: A powerful option for gaining performance that has no downsides some of the time. May cause various random issues caused by splitting the CPU and GPU threads onto different cores. The most common downside to this performance boost is the risk for random "Unknown Opcode" issues and the associated crashes. Dolphin will usually disable Dual Core in games that are especially sensitive to CPU GPU desyncs.

DSP-HLE vs DSP-LLE: Most users should never have to change between DSP-HLE and DSP-LLE. DSP-HLE is many times faster and causes no risk of issues in 99% of titles. DSP-LLE is typically used for homebrew titles and debugging. The one exception to this is a case where Dolphin will automatically use DSP-LLE - Neo-Geo Virtual Console titles. Due to a timing quirk in these games, DSP-LLE is required for proper audio.

CPU Emulation Engine: This setting should never be touched by general users. It is set to the fastest option by default regardless of whether you're using Desktop or Android Dolphin builds. Changing this option alone may slowdown your performance by tenfold or more.

Emulated CPU Clock Override: This is one of the most powerful tools for gaining performance on weak devices. By lowering the Emulated CPU Clock Rate below 100%, you can cause the game itself to lag. In many cases, games have a built-in frameskip for lagging, which will lower the requirements of running that game drastically. This setting can also break games if they are relying on specific CPU timings, and should be disabled if new problems suddenly crop up after enabling it. Raising the Emulated CPU Clock Rate makes games more demanding to run, but may cause them to run better if the emulated title was lagging internally.

Graphics Settings

While Dolphin doesn't particularly need a powerful graphics card, it does want efficient drivers that can handle things that aren't commonly used in modern games. As such, some of the Graphics Settings may have a higher impact on certain GPUs than they do on other GPUs. We'll try to cover the major cases here, but your performance will vary.

General

Video Backend

Your choice in video backend may greatly alter how much performance you get depending on your graphics card.

  • Vulkan: Generally runs great on NVIDIA and AMD graphics chips, including mobile RDNA2 devices. Not recommended for Intel devices, and Adreno (Snapdragon) graphics vary per the driver as to how well they will support Vulkan.
  • OpenGL: Typically considered Dolphin's slowest backend, but is generally very stable. Very slow on AMD based graphics on Windows, but can be usable on Linux. Not recommended on current RDNA2 Android devices as they do not ship a dedicated OpenGL driver, and instead rely on ANGLE.
  • D3D11: This backend is a middle ground between most other backends. Only available on Windows, but generally runs well on every kind of GPU.
  • D3D12: D3D12 is slightly faster than D3D11 on some onboard graphics chips, but may be slightly less stable in rare circumstances.
  • Null: This graphics backend is for debugging only and does not render any graphics.
  • Software: This graphics backend is for debugging only and is extremely slow.

A Note on V-Sync

Dolphin does not support asynchronous presentation, so users on Laptops and other devices that may limit the screen to 30Hz or lower may want to disable V-Sync to prevent additional lag. If for some reason your game is running at exactly half speed on powerful hardware, V-Sync might be the cause on a 30Hz screen.

Shader Compilation

Your shader compilation settings can greatly influence performance. Ubershaders are gigantic shaders that allow Dolphin to handle the GameCube's TEV pipeline without having to generate specialized shaders, but come at the cost of being much slower than specialized shaders. Specialized shaders are much faster, however they must be generated on demand and if it takes more than a frame to generate them, the game will stutter while they are generated.

  • Specialized (Default) is the default setting and can suffer from shader compilation stuttering when too many new shaders are generated at once. These stutters will disappear as you play more of the game, as Dolphin caches the shaders to reuse if they come up again. Recommended on lower-end GPUs, or GPUs that have issues with other settings.
  • Hybrid Ubershaders greatly reduces Shader Compilation stuttering by swapping in Ubershaders when a specialized shader is not generated, and then generating the specialized shader in the background. When that specialized shader is finished, it is used instead of the Ubershader. By using Ubershaders only for objects without specialized shaders, this keeps the performance impact of Ubershaders at a minimum. Due to Pipeline Swaps in the current version of Vulkan, this option is less effective in the Vulkan backend.
  • Exclusive Ubershaders completely eliminates shader compilation stutter by generating a set of monolithic shaders that can completely simulate the entire TEV pipeline and all of its configurations. Is incredibly demanding at higher resolutions, and can only be recommended for users with powerful desktop class GPUs. Is best served when using the "Compile Shaders Before Starting" option to generate all of the Ubershaders immediately instead of as each one is seen.
  • Skip Drawing is a powerful option to completely eliminate Shader Compilation Stutter by simply not waiting for shaders to be generated. This means that even if the shaders aren't ready, Dolphin will continue to emulate the game. This may result in temporarily missing objects in most cases. In rare cases, such as with Mii faces or other time-sensitive EFB Copies, it may result in graphics missing until they are re-generated a second time.
  • Compile Shaders Before Starting will compile cached UIDs at boot. May result in a lengthy wait to boot a game if you have a huge number of shaders cached for a game, but reduces stutter by having everything already generated in a from that GPU can use ahead of time.

Enhancements

Enhancements are powerful tools that can push the visual quality far above that of the original hardware. With these enhancements comes substantial risk to reduce performance.

  • Internal Resolution: Depending on how powerful your graphics processor is, and the quality of your drivers, you may want to increase the internal resolution of the game. On powerful graphics cards, this setting may have almost no impact on maximum performance. With onboard graphics and mobile devices, even setting the Internal Resolution to 2x may result in noticeable slowdown. Results will vary based on the power of your device. We recommend you find a happy medium between visual fidelity and performance.
  • Anisotropic Filtering: Does not usually impact performance. May make textures look better in some games, but may break certain effects in rare cases.
  • Anti-Aliasing: MSAA and SSAA are dangerous options to enable in Dolphin. Setting them too high will quickly cause a bandwidth bottleneck on your GPU. Worse yet, these settings may cause various graphical effects in games to be sampled incorrectly. If possible, instead of using SSAA/MSAA, simply increase the internal resolution higher as it is less likely to cause graphical issues.

Hacks

The hacks window is where you'll find a ton of options that can increase performance when leveraged correctly, or break games completely if they're enabled erroneously. Dolphin will usually enable/disable these settings automatically for games that need them, so it is not recommended to change these settings unless you know what you are doing.

  • Skip EFB Access from CPU - Provides a significant speedboost with games that read the screen. Example: In F-Zero GX in Sand Ocean, it reads and writes pixels to screen to create a heat blur. This heat blur is incredibly demanding, but if you force enable "Skip EFB Access from CPU," you can disable the effect and increase performance. If the game reads these pixels for game logic then disabling this setting may make the game unplayable. An example of this is the Pull Stars in Super Mario Galaxy, which the game uses EFB Peeks in order to see what the pointer is hovering over.
  • Ignore Format Changes - This setting is most notable because disabling it causes broken graphics in Mario Kart Wii and The Legend of Zelda: Skyward Sword. You should not need to touch this setting, and the performance boost it gives is very little to none on modern graphics cards.
  • Store EFB Copies to Texture Only - Enabled by default. Many games need this setting, but Dolphin will enable it by default. If you're seeing blacked out/missing graphics, odds are you might need to disable this. Unfortunately, this is a fairly demanding setting, especially on less efficient graphics drivers. Refer this page for a list of titles that require disabling it.
  • Defer EFB Copies to RAM - Provides a significant performance boost for games that cannot use Store EFB Copies to Texture Only and Store XFB Copies to Texture Only but may cause significant issues if the game uses the textures immediately.
  • Texture Cache - Setting the slider on the "Fast" position can improve performance greatly, but it may cause graphical glitches in some games (Most commonly missing text).
  • Immediately Present XFB Copies - Skips part of the frame presentation pipeline on the GameCube in order to slightly reduce input latency. If the game edits XFB copies, this setting may cause visual issues. Does not impact performance in most cases, only input latency.
  • Skip Presenting Duplicate Frames - On incredibly weak devices running 30/25 FPS titles, it may be advantageous for Dolphin to not render duplicate frames. On more powerful graphics cards, you want this unchecked as rendering the duplicate frames will give better frame pacing.
  • Store XFB Copies to Texture Only - Works essentially the same as Store EFB Copies to Texture Only but with XFB Copies. Missing XFB copies are rendered in Magenta when this is enabled, if you're seeing Magenta frames, you may want to disable this setting. Performance impact is usually not as high as Store EFB Copies to Texture Only being disabled.
  • Fast Depth Calculation - Despite its name, Fast Depth is more accurate in modern Dolphin builds. It does require GPUs to support specific API extensions in order to do this, so on Android (GLES) you may see texture flickering with this enabled. Slow Depth may also show flickering/Z-Fighting in titles as it is less accurate at this point in time.
  • Disable Bounding Box - Five games use Bounding Box emulation, and Dolphin automatically enables this setting for all of those games. You do not need to enable this setting, as it should have no effect in other titles. On certain older AMD cards, enabling this setting (even on games that do not use bounding box) causes a performance hit. On most modern graphics cards, whether it is enabled or not does not impact performance outside of Bounding Box titles. Most commonly used in the Paper Mario titles.
  • Vertex Rounding - Does not impact performance, but can be used in conjunction with higher internal resolutions to round 2D vertices to whole pixels. In many games, this can fix minor issues at higher resolutions, but only enable it when necessary, as this can also cause issues in games that don't need it.

Advanced

The Advanced settings aren't typically for casual users, but there are a few settings that can be leveraged here if you are careful. In this guide, we will ignore most debug/non-performance related options and just focus on the options a user may turn on for various reasons and what they do.

  • Disable EFB VRAM Copies - This is a more aggressive version of unchecking Store EFB Copies to Texture Only and Store XFB Copies to Texture Only. Enabling this option means that Dolphin will only use the slowpath for every single copy. Because raising the Internal Resolution relies on VRAM copies, enabling this means that increasing the IR will have no effect. This is incredibly slow and should only be used as a last resort when trying to resolve a graphical issue.
  • Defer EFB Cache Invalidation - A rather aggressive hack that increases the performance of games that need "Skip EFB Access to CPU" unchecked. May result in a significant performance boost in some cases, but also may result in crashes, which is why it is in advanced. Use at your own discretion.
  • Manual Texture Sampling - This is an incredibly powerful option that can remove graphical glitches in hundreds of games. Unfortunately, its performance impact is similar to that of enabling full Ubershaders, especially at higher internal resolutions. This is currently enabled for a couple of games that use mostly 2D graphics that suffer from lines through them, but because of the performance impact this is not forced on in most games. Not recommended at higher Internal Resolutions, unless you have a very powerful GPU.