GSdx

From PCSX2 Wiki
Jump to navigation Jump to search

GSdx is the most well-known graphics (GS) plugin for PCSX2, dating back to 2007 and initially developed by Gabest. GSdx is able to use both Direct3D10/11 and OpenGL APIs. It also can switch between hardware and software rendering. Some of many of the impressive features of GSdx are high resolution rendering, anti-aliasing, texture filtering, many deinterlacing modes, et cetera..

Hardware requirements

The minimum hardware requirements are a graphics card with Direct3D10 and SSE2 CPU. As rendering accuracy has improved over the years, GPU requirements have also increased in emulation so good/decent GU will most certainly be required.
Don't forget to update your DirectX (Web installer, Runtime package) specifically if your PCSX2 does not want to work demanding to update DirectX or complaining about some missing dlls.
You will also need to update your system with Microsoft Visual C++ Redistributable Packages for Visual Studio 2019.

In most cases you'll have several DLLs for each GSdx version. SSE2, SSE4 and AVX2. Which one to choose depends on your CPU installed. Most of the time this will be selected automatically, otherwise users should select the proper plugin supported by their CPUs. If an user selects a plugin not supported by the CPU then they will be asked to select a different plugin.

  • SSE2 -- is Intel 2001 CPU extension features many additional instructions for 64-bit and floating point operations. AMD adopted these instructions from Athlon 64 CPUs in 2003. Your CPU will surely support SSE2 and thus this dll will be your safe choice.
  • SSE4 -- is Intel 2006 CPU extension consists of two subsets 4.1 and 4.2. GSdx only uses 4.1 set so you'll need Intel CPU with codename Penryn or newer (E7xxx and higher for Code 2 Duos and Q9xxx and higher for quads). AMD Bulldozer and later support SSE4.
  • AVX2 -- is an extension supported by Intel Haswell series CPUs and newer, and AMD Excavator and Zen (Ryzen) CPUs.

The difference between these versions is not immediately apparent to the user. You won't see large FPS gains when switching from SSE2 to SSE4 but there are some parts in games that do benefit from these optimizations. The AVX versions only provide speed ups for the software renderer of GSdx.

Quick guide to the settings

Familiarize yourself with the following terms used by GSdx:

  • Renderer -- A choice between, DirectX 11 and OpenGL. There are two subtypes for each API:
    • Hardware renderer -- Uses your graphics card to render the picture. This is the fastest and preferred mode.
    • Software renderer -- Uses your CPU to render the picture. There will be ONLY native internal resolution available (thus original PS2 visuals). In some cases this mode may produce the best images with the least amount of graphical artifacts. Unfortunately GSdx requires quite a bit of CPU power to render with the software renderer even in internal resolution (without anti-aliasing or anything else applied) so you may end up with a correctly rendered game but which only runs at an unplayable 3-10 fps. Note also that PCSX2 is very CPU hungry but currently supports only 2 cores (the third core may also help a wee when used by different system processes leaving first two exclusively to PCSX2) thus if you have a 3+ core CPU you may consider using them for GSdx working in this mode increasing the render speed dramatically with every additional core (see SW renderer threads). You can also switch between hardware renderer and software renderer during runtime, see List of ingame hotkeys-F9.
  • Adapter -- Specifies which of the available adapters to use when using Direct3D API.
  • Interlacing (F5) -- Is used to choose the default deinterlacing mode when starting the emulation process. For more detailed explanation see List of ingame hotkeys-F5.
  • Texture Filtering -- Default option: PS2. The nearest option will look blocky but is the fastest. The PS2 option will make GSdx only apply filtering to textures when the game's code calls for it, just like the PS2. The forced option will filter ALL textures (reducing shimmering) but may also cause texture glitches.

Hardware Mode Options

  • Allow 8-Bit Textures -- When checked 4/8 bits texture will be send to the GPU with a palette. GPU will be in charge of the conversion. When unchecked the CPU will convert directly the texture to 32 bits.It is basically a trade-off between GPU/CPU.
  • Large Framebuffer -- Allocate a large framebuffer to be compliant with GS memory (Prevents FMV flickering when upscaling). It increases GPU/memory requirements. It should be disabled for Armored Core, Destroy All Humans, and Gran Turismo as it will amplify VRAM usage by a lot.
  • Internal Resolution -- Is used to set the render resolution target. The higher resolution you choose here the bigger picture will be rendered before being resized into your screen resolution thus you'll see more clear and crisp visuals. Unfortunately all those game you'll be playing were created and tested for lower native resolution (~500 x ~450) so some picture parts or objects may look wrong (displaced/framed/no image/invalid colors, etc.) when rendered in higher resolution. These artifacts you may eliminate only by using native resolution. Increasing internal resolution will impact the rendering speed so the higher resolution you set the more powerful graphics card you'll need to have.
  • Custom Resolution -- Not recommended. It is used to set custom resolution for the rendering target, will cause issues and many features do not work properly with it. It is better to use the resolution multipliers instead.
  • Anisotropic Filtering -- Reduces texture aliasing at extreme viewing angles. Automatic option is recommended.
  • Mipmapping (Ins) -- Control the accuracy level of the mipmapping emulation. Automatic option is recommended.
  • CRC Hack Level -- Control the number of Auto-CRC fixes and hacks applied to games.
  • DATE Accuracy -- Implement a more accurate algorithm to compute GS destination alpha testing. It improves shadow and transparency rendering.
  • Blending Accuracy -- Control the accuracy level of the GS blending unit emulation.
  • Enable HW Hacks -- Enables the use of HW Hacks which can be toggled in Advanced Settings and Hacks.

Software Mode Options

  • Auto Flush -- Force a primitive flush when a framebuffer is also an input texture. Fixes some processing effects such as the shadows in the Jak series and radiosity in GTA:SA.
  • Mipmapping -- Enables mipmapping, which some games require to render correctly.
  • Edge anti-aliasing (Del) -- A feature of the actual GS on the PS2. It can only be used in software renderer modes. This can improve the resulting visuals (provided that the game supports it and is calling for it to be applied on the current scene) by applying an anti-aliasing algorithm. It will cause a very minor performance drop. This feature is required to emulate some games.
  • Rendering threads -- chooses the number of threads (pipes) to render the picture in software mode. Every additional thread here means one additional CPU core will be used in the rendering process. You're still going to need at least one core left for the PCSX2 itself so if you, for instance, have 4 cores (quad core CPU) you may want to set this field to 3.

Hardware hacks

These settings require that you are using the hardware renderer and have Enable HW hacks checked.

  • Rendering Hacks
    • Alpha Stencil -- Improves shadows/transparency rendering in games such as Amagami. It will break transparency rendering in many games, avoid using it. DATE Accuracy does the same job accurately.
    • Auto Flush -- Force a primitive flush when a framebuffer is also an input texture. Fixes some processing effects such as the shadows in the Jak series and radiosity in GTA:SA. It's very costly on the performance.
    • Disable Depth Emulation -- Disable the support of Depth buffer in the texture cache. It can help to increase speed but it will likely create various glitches.
    • Disable Safe Features -- This option disables multiple safe features. Disables accurate Unscale Point and Line rendering (it can help Xenosaga games), disables accurate GS Memory Clearing to be done on the CPU, and let only the GPU handle it (it can help Kingdom Hearts games), disables special Nvidia hack (it can help SOTC, Fatal Frame games and possibly others too).
    • Fast Texture Invalidation -- By default, the texture cache handles partial invalidations. Unfortunately it is very costly to compute CPU wise. This hack replaces the partial invalidation with a complete deletion of the texture to reduce the CPU load. It helps snowblind engine games.
    • Frame Buffer Conversion -- Convert 4-bit and 8-bit frame buffer on the CPU instead of the GPU. The hack can fix glitches in some games (Harry Potter games and Stuntman for example). This hack has an impact on performance.
    • Memory Wrapping -- Emulates GS memory wrapping accurately. This fixes issues where part of the image is cut-off by block shaped sections such as the FMVs in Wallace & Gromit: The Curse of the Were-Rabbit and Thrillville. This hack can have a small impact on performance.
    • Preload Frame Data -- Uploads GS data when rendering a new frame to reproduce some effects accurately. Fixes black screen issues in games like Armored Core: Last Raven.
    • Half-screen Fix -- Control the half-screen fix detection on texture shuffling.
    • Trilinear Filtering -- Control the texture tri-filtering of the emulation.
    • Skipdraw Range -- Completely skips drawing surfaces from the surface in the left box up to the surface specified in the box on the right. Use it, for example, to try and get rid of bad post processing effects.
  • Upscaling Hacks
    • Align Sprite -- Fixes issues with upscaling(vertical lines) in Namco games like Ace Combat, Tekken, Soul Calibur, etc.
    • Merge Sprite -- Replaces post-processing multiple paving sprites by a single fat sprite. It reduces various upscaling lines.
    • Wild Arms Offset -- Lowers the GS precision to avoid gaps between pixels when upscaling. Fixes the text on Wild Arms games.
    • Half-pixel Offset -- Might fix some misaligned fog, bloom, or blend effect. The preferred option is Normal (Vertex) as it is most likely to resolve misalignment issues.
    • Round Sprite -- Corrects the sampling of 2D sprite textures when upscaling. Fixes lines in sprites of games like Ar tonelico when upscaling. Half option is for flat sprites, Full is for all sprites.
    • Texture Offsets X, Y -- Offset for the ST/UV texture coordinates. Fixes some odd texture issues and might fix some post processing alignment too.
  • OpenGL Advanced Settings
    • Geometry Shader -- Allows the GPU instead of just the CPU to transform lines into sprites. This reduces CPU load and bandwidth requirement, but it is heavier on the GPU. Automatic detection is recommended. Allows advanced atomic operations to speed up Accurate Date. Only disable this if using Accurate Date causes (GPU driver) issues.
    • Image Load Store
    • Sparse Texture -- Allows to reduce VRAM usage on the GPU. Feature is currently experimental and works only on Nvidia GPUs.

OSD Configuration

  • Enable Monitor -- Continuously prints the FPS and the EE, GS and VU(if the MTVU speedhack is enabled) percentages onscreen.
  • Enable Log -- Shows display information such as when savestates are used in any way, memory card saves and some other settings when they are toggled via hotkeys.
  • Font -- Allows users to configure the OSD font (color, size, opacity).
  • Log Messages -- Allows users to configure Log Monitoring such as timeout and maximum log messages that can display on a screen.

Shader Configuration

  • Texture Filtering of Display -- Use bilinear filtering when Upscaling/Downscaling the image to the screen. Disable it if you want a sharper/pixelated output.
  • FXAA Shader (PgUp) -- Enables fast approximate anti-aliasing. Small performance impact.
  • Shade Boost -- Allows brightness, contrast and saturation to be manually adjusted.
  • External Shader (Home) -- Enables external shader for additional post-processing effects. External shaders can be found/downloaded from here.
  • TV Shader (F7)

Hidden GSdx settings in GSdx.ini

There are some hidden ini options that can be also toggled, however the average user wouldn't need to touch these.

List of ingame hotkeys

The information on hotkeys usable by GSdx is scarce and hard to find. All shortcuts listed here are accessible when the emulated game is running.

  • F5 -- cycle-switches through deinterlacing modes. Those modes are useful when you're playing NTSC games or game having some "lining" artifacts (or shaking screen). On the real PS2 those "artifacts" are used to present the picture in the most smooth way possible but they can become quite noticeable and bothersome when you play your game on the PC. This feature tries to help solve the problem but it doesn't always work as intended. If you would like to read more on deinterlacing try the Wikipedia article. Note that some modes can slightly decrease performance while the others can blur the whole picture, decreasing the amount of details thus deinterlacing is to be used only when it's necessary. GSdx supports the following modes:
    • None -- no deinterlacing is applied (default)
    • Weave tff
    • Weave bff
    • Bob tff
    • Bob bff
    • Blend tff
    • Blend bff
  • F6 -- cycles through different aspect ratios. Includes 4:3, 16:9 and "stretch to screen".
  • F8 -- takes the screenshot of the current screen. Screenshots are taken in the current rendering resolution (not the resolution of your GSdx window) and stored in the emulator's snaps folder.
  • F9 -- switches from the Hardware rendering into Software rendering which is always in native resolution. Software render and native resolution can both be used to avoid some severe graphics glitches occurring in some games in video or special sequences when they are rendered in non-native resolutions or when the hardware render has bugs like with "Tales of Legendia". Some 2D objects can also suffer from wrong rendering in non-native resolution modes. You can switch runtime to software render finish the critical game section and then switch back to hardware afterwards.
  • F12 -- will start to record a video. Note that some versions may have a bug (?) preventing video capture from happening. If your version supports this you'll see the dialog "Capture settings" after pressing F12. You must choose the filename, codec and resolution before you may continue. Note that lossless or uncompressed video may produce VERY large file so your HDD must have enough free space to contain it. Audio capture file "recording.wav" may also be created along with video. This is the result of work of your audio plugin (SPU-X) which will record the audio simultaneously with GSdx.
    • To finish the capture simply press F12 again.
    • Note that if you simply wish to capture audio (e.g. you like a particular level's music) and you don't want to mess with the plugin or emulator - or you simply prefer a more general solution - you can use Audacity to record while the emulator is running - simply configure it to accept audio input from "stereo mix". By the way, if you are running Windows and do not see "stereo mix" in the list of available sources please google for several available solutions (it is a known issue with certain soundcard/motherboard models). Or you could try this instead.
  • Insert -- Toggles HW mipmapping.
  • Home -- Toggles FX shader on/off.
  • Page Up -- Toggles FXAA on/off.
  • Del -- Toggles Software Edge Anti-Aliasing (AA1) on/off.