summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/GLExtensions
AgeCommit message (Collapse)Author
2015-05-28Pass strings by const reference where possibleLioncash
2015-05-25Set copyright year to when a file was createdTillmann Karras
2015-05-25Update license headers to GPLv2+Tillmann Karras
2015-05-22OGL: Add glClipControl support.Jules Blok
2015-03-15quiet some warnings which appear on vs2015.Shawn Hoffman
quieted warnings include shadowed variable names and integer extensions.
2015-03-08Merge pull request #2092 from Sonicadvance1/gles_occlusion_queriesRyan Houdek
Implement full occlusion queries for the Nexus 9.
2015-02-25Formatting/Whitespace CleanupStevoisiak
Various fixes to formatting and whitespace
2015-02-21[GLExtensions] Add support for NV_occlusion_query_samples.Ryan Houdek
2015-01-18Add support for two new OpenGL ES extensions.Ryan Houdek
This adds support for OES_draw_elements_base_vertex and EXT_buffer_storage.
2014-12-20Work around broken Android garbage.Ryan Houdek
This fixes running Dolphin on the Nexus 9. Android's EGL stack has internal arrays that they use for tracking OpenGL function usage. Probably has something to do with their OpenGL profiling garbage that used to be in ADT. Android has three of these arrays, each statically allocated. One array is for all GLES 1.x functions One array is for all GLES 2.0/3.0/3.1 and a couple of extensions they deem worthy of being in this array. The last array is for all function pointers grabbed via eglGetProcAddress that isn't in the other two arrays. The last array is the issue that we are having problems with. This array is 256 members in length. So if you are pulling more than 256 function pointers that Google doesn't track in their internal array, the function will return NULL and yell at you in logcat. The Nvidia Shield Tablet gets around this by replacing part of the EGL stack with their own implementation that doesn't have this garbage. The Nexus 9 on the other hand doesn't get away with this. So we pull >100 more function pointers than the array can handle, and some of those we need to use. The workaround for this is to grab OpenGL 1.1 functions last because we won't actually be using those functions, so we get away with not grabbing the function pointers.
2014-12-07Enables stereo rendering with OpenGL ES 3.1 + AEP.Ryan Houdek
If the host device supports GLES 3.1 and AEP we can have stereo rendering. Just need to make sure to grab the correct function pointer that GL_EXT_geometry_shader provides, and enable AEP in the shaders. We can't just check if AEP is in the extension list for support because Qualcomm has failed once more. With the Nexus 6 it reports support for AEP but doesn't support OpenGL ES 3.1, which is an impossible combination. From reports on their forum it seems that attempting to use any AEP things results in nothing happening, seems like a stub implementation.
2014-11-21Adds support for OpenGL ES draw_elements_base_vertex.Ryan Houdek
This is the same extension that we all know and love but under a different name with some different requirements. In regular OpenGL fashion, you can't just move a desktop OpenGL extension to OpenGL ES without ratifying a new extension, which is why this falls under a EXT extension, which in turn causes it to have suffixes attached to their function names. This is the first step in our way towards conquering all mobile GPUs that don't support desktop OpenGL, hopefully we also can add support for buffer_storage to OpenGL ES as well so we can make full use of this extension.
2014-11-16Fixes GLExtensions for GL 2.1 or GLES 2 devices.Ryan Houdek
This wasn't too much of a concern since we normally don't care about this feature set, but it is nice when testing on new devices and they don't support the higher feature sets but want to run under software renderer. The Mesa softpipe and PowerVR 5xx drivers don't support higher GL versions, but they shouldn't exit out just because they couldn't get a GL3 function pointer that isn't even going to be used at that point.
2014-10-21Add missing includes where headers depend on other headers having been ↵comex
included first. This is good hygiene, and also happens to be required to build Dolphin using Clang modules. (Under this setup, each header file becomes a module, and each #include is automatically translated to a module import. Recursive includes still leak through (by default), but modules are compiled independently, and can't depend on defines or types having previously been set up. The main reason to retrofit it onto Dolphin is compilation performance - no more textual includes whatsoever, rather than putting a few blessed common headers into a PCH. Unfortunately, I found multiple Clang bugs while trying to build Dolphin this way, so it's not ready yet, but I can start with this prerequisite.)
2014-09-29Add OpenGL 4.0-4.5 core extensions.comex
This noticeably includes GL_ARB_get_program_binary, which was previously thought unsupported on OS X. Well, actually, the OS X implementation is trivial and reports 0 binary formats (as of 10.10; this is hardcoded in GLEngine, by the way), but at least it'll work if it's fixed someday.
2014-08-02Move GLInterface around to remove VideoBackends dependency on DolphinWXPierre Bourdon
2014-07-11mark all local variables as staticdegasus
2014-07-11mark all local functions as staticdegasus
2014-06-25Centralize the logging code into its own folder in Common.Lioncash
2014-05-19ogl: add ARB_texture_multisampledegasus
2014-05-19ogl: drop NV_framebuffer_multisample_coveragedegasus
2014-04-30Fixes glVertexAttribIPointer on GLES.Ryan Houdek
We need to pull in function pointers for OpenGL 3.0 in order to use glAttribIPointer. This isn't too big of an issue, and this code will be gone in the future when we change over to libepoxy. Just need to push code upstream to libepoxy to support Android with GLES and GL first.
2014-03-29Remove all trailing whitespaces from our codebase.Pierre Bourdon
2014-03-14Kill off some usages of c_str.Lioncash
Also changes some function params, but this is ok. Some simplifications were also able to be made (ie. killing off strcmps with ==, etc).
2014-03-09clang-modernize -use-nullptrTillmann Karras
and s/\bNULL\b/nullptr/g for *.cpp/h/mm files not compiled on my machine
2014-02-20Fix more header sorting issues in VideoBackends/ (now check-includes clean).Pierre Bourdon
2014-02-18Convert all includes to relative paths.Lioncash
2014-02-17Second and final pass of clearing out tabs.Lioncash
2014-02-16Change OpenGL extension initialization in to a big arrayRyan Houdek
This is a reasonable chunk of changes and moves from multiple initialization functions in to an array initialization.
2014-02-08Cleanup GLExtensions on how it fails.Ryan Houdek
If there is an issue with a reported extension, disable it instead of failing out entirely. Fixes an issue with buffer_storage that I had overlooked as well.
2014-02-08Improve GLExtensions compile time.Ryan Houdek
This changes from using logical and to bitwise and, which causes the compile time to drop from an absurd amount of time to around five seconds on my crappy laptop.
2014-01-23Fix OpenGL 2.1 devices that support everything we need.Ryan Houdek
The only two devices that do this are Mesa software rasterizer and Intel Ironlake(With a few hacks). Basically since it doesn't support OpenGL 3.0, it can't grab the version the new way. So failing that, it sets to GL 2.1, and continues. Further along, on Ironlake at least, it tries grabbing the extensions the new GL 3.0 way and fails. So have a fallback that grabs the extensions string the old way, in probably the most elegant way possible.
2014-01-23[GLExt-Cleanup] This cleans up some extra bits unneeded in the extension headersRyan Houdek
gl.h and glext.h provide most of the function pointer typedefs and defines for extensions and core features. The only one it doesn't provide is GL 1.1 function typedefs, but this is to be expected. If anything needs defines or typedefs in their header in the future, that's as easy as before.
2014-01-20Move GLInterface.h into GLInterface directoryScott Moreau
2014-01-18Rename our GLInterface class function 'GetProcAddress' in order to not have ↵Ryan Houdek
clashing function names due to Windows.
2014-01-18Move Win32 specific function grabbing fallback to WGL.cpp. Fixes issue 6964.Ryan Houdek
2014-01-17[GLExtensions] Rename internal GetProcAddress function since it clashes with ↵Ryan Houdek
the global Windows function. Fix Windows function pointer grabbing.
2014-01-17[GLExtensions] OpenGL 3.0 also added GL_ARB_map_buffer_range to core.Ryan Houdek
2014-01-17[GLExtensions] Future proof ourself by putting the default: instance on the ↵Ryan Houdek
top, so we'll grab extensions if they support something newer. Handle older GLVersions in the case they get that far.
2014-01-17[GLExtensions] Populate the extension list for OpenGL implementations that ↵Ryan Houdek
don't show core extensions.
2014-01-17[GLExtensions] Fix OS X build.Ryan Houdek
2014-01-17[GLExtensions] Remove AGL GetProcAddress. Change dlsym to using RTLD_NEXT. ↵Ryan Houdek
Enable dlsym fallback for OS X
2014-01-17[GLExtensions] Pull in all the function pointers for OpenGL 1.1, This ↵Ryan Houdek
removes the need for a couple compile time differences between GL and GLES3 mode.
2014-01-17[GLExtensions] Don't fail out loading funciton pointers in both ES2 and ES3 ↵Ryan Houdek
modes.
2014-01-17fix windows buildJack Frost
add the GL include (back) to Base.props use a similar technique to GLX.cpp (by Sonic) in WGL.cpp to get wglSwapIntervalEXT without the WGLEW check Conflicts: Source/Core/VideoBackends/OGL/OGL.vcxproj Source/Core/VideoBackends/OGL/OGL.vcxproj.filters Source/VSProps/Base.props
2014-01-17[GLExtensions] Dynamically pull in the GL 1.3 and 1.4 functions as well.Ryan Houdek
2014-01-17[GLExtensions] KHR_debug on OpenGL ES 3 has a KHR suffix on their function ↵Ryan Houdek
pointers. In Desktop OpenGL there is no suffix. So handle this correctly. Make the GrabFunction macro slightly less evil, so update the init_* to reflect it. Thanks Bh44L for the suggestion.
2014-01-17[GLExtensions] Fix a typo in KHR_debugRyan Houdek
2014-01-17[GLExtensions] Add ARB_buffer_storage to negate at least one null pointer ↵Ryan Houdek
instance.
2014-01-17[GLExtensions] Initial code drop for GLExtensions. This drops GLEW entirely ↵Ryan Houdek
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