
This branch has been a long time in the making. I think I started this somewhere around two years ago at this point and it is nearly done.
First I'll explain what this branch is for.
In the master branch, we currently are taking advantage of a library from Nvidia called CG. This is a do it all library that takes our CG shaders and compiles them in to "ARB" shader that the OpenGL backend can understand. The advantage of this library is it makes most operations "just work" on any form of GPU, and it is stupidly quick at it. Our OpenGL backend is basically garbage code at this point, and Nvidia CG is able to chew through all of it and provide amazing framerates considering.
Now the disadvantage of using Nvidia CG is it locks you down to using their proprietary library and shaders that aren't supported on other platforms, eg Android, *BSD, ARM Linux. We only get it on hardware and software that Nvidia provides binary blobs for. Another issue is that it compiles down in to ARB shaders, which is grossly outdated at this point as the world has moved on to GLSL shaders.
This is where the GLSL-master branch comes in. This branch was first started by me, then a lot of work was put it by Degasus (Markus Wick) to really clean it up.
Others have also contributed a fair bit to it. So the GLSL-master branch isn't just about switching from ARB to GLSL shaders, there is a lot more work that has been done to it.
Basically any feature that has relied on GLSL getting merged in to master has been merged in to this final branch for the upcoming merge. This includes but isn't limited to
Supported GPUs are as followsNote on Geforce 6/7 series graphics, support for those may be restored in the future once we support GLES3 devices.
A couple currently known bugs already.
Update here. A option has been added to the video options.
This option is called, "Hacked Buffer Upload." This is basically a option that may or may not work depending on hardware/software configurations.
This option is only needed for non-ATI/AMD based cards.
Basically this option works around drivers not providing a "Pinned Memory" extension that AMD offers.
This /could/ potentially cause quite a few speed ups, but isn't technically allowed by OpenGL spec without the extension support.
If you could, and own non-ATI hardware, try this option out and see if it works or not, that would be great.
The new download links are below.
21-02-2013
724 update which will improve the speed on Nvidia hardware without using the hacked buffer upload.
22-02-2013
728 update which fixes some rendering issues most noticeable in starfox
26-02-13
Support for Geforce 6 and 7 devices were re-added with version 737
06-03-2013
OSX support has been recently "fixed." It's working, but not all that great.
07-03-2013
Post Processing shaders have been fixed and translated to GLSL in 942
14-03-2013
OSX creating multiple windows has been fixed.
19-03-2013
MSAA inaccuracies have been fixed.
[/Edit]
Here are the binaries for Windows.
x64: http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056-x64.7z
x86: http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056-x86.7z
Binary for OSX.
http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056.dmg
Binary for x64 Ubuntu 12.10.
http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056_amd64.deb
For other Linux, check out the latest Master branch since it has been merged now.
When you give us your results, make sure to give Operating System, Graphics card make and model, and driver version.
First I'll explain what this branch is for.
In the master branch, we currently are taking advantage of a library from Nvidia called CG. This is a do it all library that takes our CG shaders and compiles them in to "ARB" shader that the OpenGL backend can understand. The advantage of this library is it makes most operations "just work" on any form of GPU, and it is stupidly quick at it. Our OpenGL backend is basically garbage code at this point, and Nvidia CG is able to chew through all of it and provide amazing framerates considering.
Now the disadvantage of using Nvidia CG is it locks you down to using their proprietary library and shaders that aren't supported on other platforms, eg Android, *BSD, ARM Linux. We only get it on hardware and software that Nvidia provides binary blobs for. Another issue is that it compiles down in to ARB shaders, which is grossly outdated at this point as the world has moved on to GLSL shaders.
This is where the GLSL-master branch comes in. This branch was first started by me, then a lot of work was put it by Degasus (Markus Wick) to really clean it up.
Others have also contributed a fair bit to it. So the GLSL-master branch isn't just about switching from ARB to GLSL shaders, there is a lot more work that has been done to it.
Basically any feature that has relied on GLSL getting merged in to master has been merged in to this final branch for the upcoming merge. This includes but isn't limited to
- Speed increases everywhere.
- Speed decreases everywhere.
- Virtual XFB speed ups
- Using GLSL shaders instead of Nvidia CG obviously
- Bunch of other things.
Supported GPUs are as follows
- Intel HD series Graphics (Clarkdale, Arrandale, Sandy/Ivy Bridge)
- ATI Radeon HD 2000 or above
- Nvidia Geforce 6 or above
A couple currently known bugs already.
- AMD/ATI Pinned memory seems to be causing some issues recently. [19-03-13]
AA inaccuracies(Appear in master, but not in OGL) [22-02-13]Post-processing shaders are broken. We are working on revamping post-processing.[07-03-13]OSX support is currently broken. We don't have a OSX dev, but we are working on it.There is a bug on Mesa9 + Intel architectures of a dithering bug that is noticeable in rendering. Fixed inMesa 9.1 or9.1.1Pixel lighting seems to darken things. [22-02-13]Running multiple games causes weird EFB problems, probably due to some missing cleanup [22-02-13]
wx creates the common rendering window, but the agl glinterface creates a new one, so the input would be fetched from wx one, the gl context draws on the agl one
Vertex Loader Jit crashes sometimes- Disabled due to instability, didn't really cause any speed increases anyway.Slow performance on hd3000 with ubo- Intel HD3000 drivers don't provide support so it falls back on to software, can't be fixed.Dropping OSX 10.6 support.- Won't be "fixed"
Update here. A option has been added to the video options.
This option is called, "Hacked Buffer Upload." This is basically a option that may or may not work depending on hardware/software configurations.
This option is only needed for non-ATI/AMD based cards.
Basically this option works around drivers not providing a "Pinned Memory" extension that AMD offers.
This /could/ potentially cause quite a few speed ups, but isn't technically allowed by OpenGL spec without the extension support.
If you could, and own non-ATI hardware, try this option out and see if it works or not, that would be great.
The new download links are below.
21-02-2013
724 update which will improve the speed on Nvidia hardware without using the hacked buffer upload.
22-02-2013
728 update which fixes some rendering issues most noticeable in starfox
26-02-13
Support for Geforce 6 and 7 devices were re-added with version 737
06-03-2013
OSX support has been recently "fixed." It's working, but not all that great.
07-03-2013
Post Processing shaders have been fixed and translated to GLSL in 942
14-03-2013
OSX creating multiple windows has been fixed.
19-03-2013
MSAA inaccuracies have been fixed.
[/Edit]
Here are the binaries for Windows.
x64: http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056-x64.7z
x86: http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056-x86.7z
Binary for OSX.
http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056.dmg
Binary for x64 Ubuntu 12.10.
http://dl.dolphin-emu.org/builds/dolphin-master-3.5-1056_amd64.deb
For other Linux, check out the latest Master branch since it has been merged now.
When you give us your results, make sure to give Operating System, Graphics card make and model, and driver version.