Ryan Houdek
71681de81a
[GLExtensions] Initial code drop for GLExtensions. This drops GLEW entirely from the codebase. This has been tested on Android and Linux+ATI. Of course untested on Windows and Apple. Also untested with Linux + EGL but should be fine there. There are most likely a couple of extensions I'm missing which would result in null pointer runs but not bad for the initial commit.
...
Conflicts:
CMakeLists.txt
Externals/GLew/glew.vcxproj
Externals/GLew/glew.vcxproj.filters
Source/Core/VideoBackends/OGL/CMakeLists.txt
Source/Core/VideoBackends/OGL/GLFunctions.cpp
Source/Core/VideoBackends/OGL/GLFunctions.h
Source/Core/VideoBackends/OGL/GLUtil.h
Source/Core/VideoBackends/OGL/Render.cpp
Source/VSProps/Base.props
2014-01-17 15:50:51 +01:00
Tony Wasserka
f1adc56a56
Remove vertex streaming hack.
...
NV has buffer_storage, AMD has pinned memory.
Both are better than that hack which shouldn't ever have been introduced in the first place.
2014-01-16 00:11:12 +01:00
degasus
5e5db9fbc6
VideoCommon: cleanup of "components" usage
...
This "u32 components" is a list of flags which attributes of the vertex loader are present.
We are used to append this variable to lots of vertex generation functions, but some of them don't need it at all.
2014-01-15 16:58:36 +01:00
degasus
95aa977d81
OGL: remove masking from streambuffer
...
We used this to disable pinned memory for index buffer, but as the detection
was reworked completely, it's just unused code.
2014-01-09 18:52:05 +01:00
degasus
eb310cbd1d
VideoCommon: disable efb access + perf querys on cph thread
...
The usual way to handle this kind of request is to rise a flag which the gpu thread polls.
The gpu thread itself either generates the result or just write zeros if disabled.
After this, it rise another flag which says that this work is done.
So if disabled, we still have the cpu-gpu round trip time. This commit just returns 0 on the cpu thread
instead of playing ping pong...
2014-01-09 18:37:59 +01:00
Ryan Houdek
cdf69adcb0
Fix for previous commit. I was supposed to use GL_VERSION, not GL_RENDERER.
2014-01-07 19:35:06 -06:00
Ryan Houdek
d2e62796fc
Probe the GL_RENDERER string on Nvidia to grab the driver version.
2014-01-07 18:29:04 -06:00
degasus
c42f274e22
OpenGL: use shader 420pack if available to staticly bind ubo location
...
Bindung locations after compiling a shader stalls the driver. So if we manage not to bind anything after compilation, the lag would be reduced much.
2014-01-05 10:38:45 +01:00
degasus
4fff5ac90d
OpenGL: drop UBO-workaround usage for efb2ram shaders
...
It's just brainfuck to use this workaroung there. Just fetch the uniform location like all other util shaders.
2014-01-05 09:52:26 +01:00
degasus
0f0a3cc509
ogl: clamp to edge for out of bound efb access
...
fixes issue 6898
OpenGL defaults are GL_REPEAT, which is even more unlikely than GL_CLAMP_TO_EDGE.
As I can't test the behavoir of the real hardware, I changed it to how it works before,
but I guess just clip the texture makes more sense.
2014-01-03 08:15:19 +01:00
Ryan Houdek
0faf696be7
Merge Fail. We don't disable BaseVertex on broken pinned memory.
2014-01-01 17:20:09 -06:00
Ryan Houdek
1118226f27
Merge branch 'master' into buffer_storage
2013-12-31 19:18:30 -06:00
Ryan Houdek
8d8b0fc884
Merge branch 'master' into buffer_storage
...
Conflicts:
Source/Core/VideoBackends/OGL/Src/Render.cpp
Source/Core/VideoCommon/Src/DriverDetails.cpp
Source/Core/VideoCommon/Src/DriverDetails.h
2013-12-31 15:41:50 -06:00
Jasper St. Pierre
34692ab826
Remove unnecessary Src/ folders
2013-12-31 14:03:19 -05:00
Jasper St. Pierre
43e618682e
Convert all vcxproj files to UNIX line endings
2013-12-31 14:03:18 -05:00
Ryan Houdek
6d63db96e9
Disable primitive restart on buggy OS X Intel HD 3000 drivers.
2013-12-30 18:26:55 -06:00
Tony Wasserka
de16b7207c
D3D/OGL: Add a TODO noting that we don't support GX_CULL_ALL, most notably required for accurate zfreeze emulation.
2013-12-30 20:37:59 +01:00
Ryan Houdek
a5bfdbf6cd
Free performance for AMD+Linux. Instead of disabling BaseVertex due to pinned_memory. Just disable pinned_memory for the ELEMENT_ARRAY_BUFFER type which has issues with baseVertex(ELEMENT_ARRAY_BUFFER)+pinned_memory. In my two tests with this, I went from 5FPS to 11FPS in one test, and 2FPS to 6FPS in another.
2013-12-28 08:00:44 -06:00
Ryan Houdek
0b31fc8f52
[buffer_storage] Temporary fix for Android/GLES3 just like how everything else is. Cleanup for this will be in a new branch.
2013-12-28 05:16:39 -06:00
Ryan Houdek
8fdcba0c06
[buffer_storage] Code formatting changes suggested by Bh44L
2013-12-28 05:15:43 -06:00
Ryan Houdek
935e1fdf99
[Android] Enable shader cache.
2013-12-28 04:55:39 -06:00
Ryan Houdek
d8b7f4d73f
[Android] Support grabbing OpenGL extensions and a function for checking for support.
2013-12-28 01:08:52 -06:00
Ryan Houdek
77ba051361
[buffer_storage] Add the CLIENT_STORAGE_BIT since we access the buffer more frequently on the client side than the server side. That is exactly what the hint is for.
2013-12-27 22:58:36 -06:00
Ryan Houdek
d8ceb97a60
[buffer_storage] Require GLEW 1.10 which has the new OpenGL 4.4 methods. Fixes linux build.
2013-12-27 15:37:31 -06:00
Ryan Houdek
ce99921c20
[buffer_storage] Implement ARB_buffer_storage. Disable it for GL_ARRAY_BUFFER due to a bug in Nvidia's drivers that causes black screen with it.
2013-12-27 10:56:03 -06:00
Ryan Houdek
a87e0e7489
Remove our GLU dependency. Fix static zlib
2013-12-23 16:01:34 -07:00
Ryan Houdek
e697d7a2dd
[Android] Work around Qualcomm's broken garbage in their v53 drivers. This doesn't fix the issue, just a work around. This is the stupidest issue coming from Qualcomm. Now Dolphin Mobile won't crash immediately, but there are new SPS issues.
2013-12-19 17:30:39 -06:00
Ryan Houdek
945b903499
Work around AMD's broken Linux drivers when it comes to pinned memory and base_vertex usage. It seems that using pinned memory with base_vertex disabled is quicker than the other way around.
2013-12-19 09:40:13 -06:00
Ryan Houdek
8c264a3964
In the shader log message, say if the error came from a PS or VS.
2013-12-18 22:21:14 -06:00
Ryan Houdek
f9ff0bc55d
Have our OpenGL/ES context creation be less stupid.
2013-12-12 12:43:49 -06:00
Ryan Houdek
eb3b933dd0
Remove all instances of OpenCL in the Dolphin Project. A brief history of OpenCL in Dolphin. OpenCL was originally added to the Dolphin codebase 1 month after it was released with OS X Snow Leopard in 2009. OpenCL was one of the largest group projects that Dolphin ever has had. The OpenCL texture decoder was originally aded with version 1.0 of the OpenCL spec; This version didn't have the capability of a OpenCL-OpenGL interop which would allow for uploading textures once and have it decoded directly to a OpenGL texure. This was to be worked out when the OpenCL 1.1 spec was released and allowed the interop. This work has never been done, and no one in the team is willing to work on it for various reasons. OpenCL has had the unreasonable expectation that it increases the performance of video games that require a large amount of EFB copies like NSMBW. In reality, enabling OpenCL just put the graphics card in a higher power mode which increased the game speed. This is due to the unfortunate effect of Dolphin tending to not push GPUs out of their lower frequency power savings modes. Thanks to everyone that had contributed to the OpenCL texture decoder.
2013-12-11 15:15:55 -06:00
degasus
134c89ef98
OpenGL: disable shader cache when ShaderDebugging is enabled
...
fixes 6859
2013-12-09 16:45:20 +01:00
degasus
42619c1d2d
Merge branch 'ogl-tex2d'
...
Conflicts:
Source/Core/VideoBackends/OGL/Src/TextureConverter.cpp
2013-12-09 13:04:14 +01:00
degasus
687097d4bc
OGL: use integer uniforms for efb2ram texture converter
2013-12-09 12:33:50 +01:00
degasus
edc879ce48
OpenGL: fix crash in revision 95aeedec19
...
Real xfb didn't provide any read_stride, so there is a division by zero.
This commit calculates the correct read_stride for real_xfb, so there is also no hack for texture vs xfb needed.
2013-12-03 00:09:37 +01:00
degasus
95aeedec19
OpenGL: readback efb2ram with different strides at once
...
This is done with a pixel buffer object. We still have to stall the GPU, but
we only do it once per efb2ram call.
As the cpu can't access the vram, it has to queue a memcpy for the gpu and
wait for the gpu to finish this copy. We did this for every cache line which
is just stupid. Now we copy the complete texture into a pbo and readback this
at once. So we don't have to wait for lots of round-trip-times.
2013-11-26 20:05:49 +01:00
degasus
1138c2e155
OpenGL: reset EFB after efb2ram FB initialization
2013-11-26 04:07:59 +01:00
degasus
0b4cb2e15f
OpenGL: split real xfb + efb2ram framebuffers
2013-11-25 22:27:11 +01:00
Ryan Houdek
9dbb262aab
Fix for OpenGL ES 3.
2013-11-25 15:11:06 +00:00
degasus
6750a81972
TextureConverter: Use integer math for swizzling
...
also move int(efb_coord) -> float(ogl_fb_coord) into WriteSampleColor
2013-11-25 15:49:13 +01:00
degasus
bcb31b09d3
TextureConverter: Use gl_FragCoord instead of uv0
2013-11-25 15:01:18 +01:00
degasus
454e1dd9a2
OpenGL: attributeless rendering for efb2ram
...
This wasn't as easy as we now have to cache also the uniform locations.
2013-11-25 13:03:35 +01:00
degasus
6ed3f82aff
OpenGL: attributeless rendering for postprocessing
2013-11-25 12:36:17 +01:00
degasus
38fe05b1df
OpenGL: attributeless rendering in emulate format changes
...
only cleanup
2013-11-25 12:27:54 +01:00
degasus
dd0b74ac15
OpenGL: cleanup efb2tex
...
Also use attributeless rendering. But we need the src rect, so set it by uniform.
If there is a slowdown here (I doubt as the driver likely has a fast path to update uniforms)
then we should check if this rect changes and only then update the uniform.
2013-11-25 12:19:34 +01:00
degasus
b93756df87
OpenGL: drop texture_rect hack
...
Everything is moved to texture2d (but often in a hacky way), so we don't need this global hack any more.
2013-11-25 09:05:50 +01:00
degasus
afcf0e65d1
OpenGL: fix emulate format changes for texture2d
2013-11-25 08:59:04 +01:00
degasus
b904d56036
OpenGL: fix efb2tex for texture2d
2013-11-25 08:43:55 +01:00
degasus
1a3e790d9e
OpenGL: fix xfb for texture2d
2013-11-25 08:38:00 +01:00
degasus
e8f23af10b
OpenGL: always use texture2d as efb
2013-11-25 08:32:41 +01:00