Commit Graph

107 Commits

Author SHA1 Message Date
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