GSDX

From PCSX2 Wiki
Jump to: navigation, search

GSDX is the most known graphics plugin for PCSX2 dating back to 2007 and initially developed by Gabest, who still remains as the main contributor. GSDX uses DirectX and is currently able to utilize DirectX 9 and DirectX 10 APIs. It also can switch between hardware and software rendering. Some of many of the impressive features of GSDX are high rendering resolution, anti-aliasing filtering, many deinterlacing modes, full screen mode, correctable aspect ratio, et cetera. DirectX 10 mode is confirmed by many to be the most compatible (in contrast with DirectX 9) but some games will still be working better under DirectX 9. You can find the official GSDX thread here.

Hardware requirements

The minimum hardware requirements are a graphics card with pixel shader 3.0 (ATi Radeon 9500 series and later and the NVIDIA GeForce FX series) and SSE2 CPU (non-SSE2 CPUs cannot run PCSX2, however they are quite old so this shouldn't be a problem). Most PCSX2 emulated games are not hungry for GPU power but are dependent on the CPU. However, certain scenes in some games can be slowed down significantly if your graphics card is weak. Care must also be taken when running PCSX2 on laptops. Some of them are not designed to work on constant 100% load and can suffer damage from overheating. Investing on a decent laptop cooler is a good idea.
For DirectX 10 mode you will need a DirectX 10 capable card (NVIDIA GeForce 8000 series or ATi Radeon HD 2000 series at the least) running under Windows Vista or Windows 7.
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++ 2008 SP1 Redistributable Package (x86, x64).

In most cases you'll have several dlls for each GSdx version. SSE2, SSSE3, SSE4 and AVX. Which one to choose depends on your CPU installed.

  • 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.
  • SSSE3 -- is Intel 2006 revision to SSE3 CPU extension supported Intel Core 2 processors and higher as well as AMD Bobcat processors and higher. Warning: If you will try to use SSSE3 optimized dll on Pentium 4 CPU you will encounter a crash whenever the code reaches SSSE3 optimized part (it may not happen for some time but it will occur eventually).
  • 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. Warning: If you will try to use SSE4 optimized dll on unsupported CPU you will encounter a crash whenever the code reaches SSE4 optimized part (it may not happen for some time but it will occur eventually).
  • AVX -- is an Intel and AMD CPU extension. Intel Sandy Bridge and Ivy Bridge CPUs and the AMD Bulldozer CPUs support this extension.

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:

  • Resolution is the default resolution. It affects both windows and full screen modes. Higher resolution have minimal performance impact because the picture is actually resized to this resolution from the internal resolution.
  • Renderer -- A choice between DirectX 9 and DirectX 10 (when you have met the requirement for DirectX 10 otherwise DirectX 9 will be the only choice here). 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 keys-F9.
  • Interlacing -- is used to choose the default deinterlacing mode when starting the emulation process. For more detailed explanation see List of ingame keys-F5.
  • Aspect ratio -- is used to choose the default aspect ratio mode when starting the emulation process. For more detailed explanation see List of ingame keys-F6.
  • D3D 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.
    • Native resolution. In contrast with the higher extrapolated D3D internal resolutions, this is a more compatible mode because it uses the original PS2 display resolution. It should be used first before you attempt to upscale your resolution.
  • Enable Shade Boost -- is used to manually adjust Saturation/Brightness/Contrast levels.
  • Enable FXAA -- check this to enable Fast approximate anti-aliasing. This method of anti-aliasing does not require as much compute power as MSAA, however textures may not appear as sharp compared to MSAA.
  • Enable FX Shader -- check this to enable custom shaders. In order to use a custom shader, the shader file must be named "shader.fx" and placed in the same directory as the main executable ("pcsx2.exe"). A list of custom shaders can be found here.
  • Texture filtering -- filters textures when resizing them (like cubic or linear filtering). The resulting visuals may look better with this option but you will loose some FPS. Apart from ON and OFF there's the third GRAYED option. GSDX will apply filtering only for "3D textures" when this option is selected so some 2D sprite games may look better. Leave this option ON by default unless noted otherwise for a certain game you're going to play.
  • Logarithmic Z -- changes the way the third (depth) coordinate is treated (logatithmic or linear). This option should be left ON unless you experience some weirdness in the objects (like seeing through them).
  • 8-bit textures -- Typically GSdx converts 8-bit textures to 32 bit textures internally, which bloats the texture memory usage when they're uploaded to your video card memory. But it's faster for the video card to render from 32 bit textures, because 8-bit textures require an inline shader decoder. So if a game uses a lot of 8-bit textures, it can flood video memory and run very slow; such games will run much faster with allowed 8-bit textures because extra shader work is less invasive than running out of video memory. But if a game only uses a few 8-bit textures and you allow 8-bit textures for use, it can slow things down because of extra shader work. There are two options:
    • Unchecked: -- Processes 8-bit textures (256 color mode) as 32-bit textures. This is the default method GSdx uses and is easier for the video card to render, but takes up more VRAM. Good for games with few 8 bit textures.
    • Checked: -- Allows 8 bit textures to be processed natively, using less VRAM, but adding more work for the inline shader. Good for games that use very many 8-bit textures, to prevent running out of Video Memory.

The benefits of this option are very hardware and game dependant and can vary from scene to scene, that's why it's an option and is disabled by default. The best way to test the benefit of using this option on your hardware is to have a savestate prepared, disable the framelimiter and benchmark the game with Allow 8-bit Textures enabled and disabled.

It seems mainly 2D games that are helped by this option, and it would be safe to assume that games with lots of heavy 2D overlays would reap some benefit too.

List of games known to benefit from enabling 8-bit textures (incomplete): Guilty Gear X2, Fight Night Round 3, Grand Theft Auto: Vice City Stories, Xenosaga 2 and Odin Sphere.

Source: PCSX2 forum

  • Alpha correction (FBA) -- is a correction to make some textures partly or fully transparent (as required by the emulation) but may cause unusual slowness in some games. Should be ON by default unless your game is slowed down buy this option (This, for example, may help games like Super Robot Taisen Original Generations).
  • SW renderer 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.
  • Edge anti-aliasing (AA1) -- can be used in software renderer modes only. This can improve the resulting visuals by applying an anti-aliasing algorithm (required by emulation in some games) but will also reduce performance.


Hardware hacks

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

  • MSAA -- is used to specify multisample anti-aliasing mode for hardware renderers. This may dramatically improve the quality of visuals but requires some additional processing power from your video card. You can set this to 2,4,8 or 16. The plugin will automatically choose and use only the supported mode.
  • Skipdraw -- Skips drawing n surfaces completely. Use it to get rid of bad post-processing effects.
  • Alpha -- Can fix shadow issues.
  • Half-pixel Offset -- Can fix misaligned fog, bloom, or blend effects.
  • Sprite -- Gets rid of black inner lines in sprites. Half option is recommended.
  • WildArmsOffset -- Lowers GS precision to avoid gaps in pixels when upscaling.
  • Aggressive-CRC -- Can remove effects to make image clearer.
  • Alpha Stencil -- Improves shadows which are normally overdrawn in parts. This setting will disable partial transparency or prevent drawing some elements altogether.
  • NVIDIA Hack -- Fixes odd stretching issues in recent NVIDIA drivers when upscaling (using DirectX 11). Try not to use this unless your game Videos or 2D screens are stretching outside the frame.
  • Disable CRC -- For testing only! Disable all CRC hacks and will not work in many games.
  • TC Offset X/Y -- Can fix texture issues and bad post-processing alignment.

Options appear in older version of GSDX (obsolete options)

  • NLOOP hack -- is used to fix some problems in Final Fantasy games. Useless for any other purpose.
  • Pixel shader -- is used to manually specify the shaders version. (2.0 or 3.0 for DirectX 9 only). Though changing version can theoretically make some difference usually it really doesn't matter which one to choose. For cards without 3.0 shader support (older ones) this dialog is quite useless. For DirectX 10 modes plugin will use 4.0 shaders.
  • Enable tv-out -- is used to display the output on your TV.

Hidden GSDX settings in GSdx.ini

  • pixoff_x=0, pixoff_y=0

Use these two settings (one for either axis) to lessen the ghosting and maybe the overbloom effect significantly. You will have to experiment the values as they seem to be game and resolution dependent.

pixoff_x=x
pixoff_y=y

possible settings:

0 = off
-n = shifting left(x) or down(y) depending on the axis
n = shifting right(x) or up(y) depending on axis

  • Accurate scaled Resolution (as of SVN revision 2055)

accurateScaleMulti = x

Overwrites the internal res if set to 2,3 or 4 with 2, 3, or 4 times native res - works with the hardware renderer only.

If set to other values then the setting will be ignored.

List of ingame keys

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.
  • DEL -- toggles Software Edge Anti-Aliasing (AA1) on/off
  • END -- (?)
  • HOME -- toggles FX shader on/off
  • Page Up -- toggles FXAA on/off