From e253fafe4258fa0e6cdca63cec1f92bcece06a2c Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sun, 14 Feb 2016 20:16:33 -0600 Subject: [PATCH] Add support for GL 4.4 --- Source/Core/Common/Common.vcxproj | 1 + Source/Core/Common/Common.vcxproj.filters | 3 + .../Common/GL/GLExtensions/GLExtensions.cpp | 25 ++++++- .../Common/GL/GLExtensions/GLExtensions.h | 1 + Source/Core/Common/GL/GLExtensions/gl_4_4.h | 70 +++++++++++++++++++ 5 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 Source/Core/Common/GL/GLExtensions/gl_4_4.h diff --git a/Source/Core/Common/Common.vcxproj b/Source/Core/Common/Common.vcxproj index be49c3258b..0900affa99 100644 --- a/Source/Core/Common/Common.vcxproj +++ b/Source/Core/Common/Common.vcxproj @@ -97,6 +97,7 @@ + diff --git a/Source/Core/Common/Common.vcxproj.filters b/Source/Core/Common/Common.vcxproj.filters index 9a6ae8d63d..4cb24985bb 100644 --- a/Source/Core/Common/Common.vcxproj.filters +++ b/Source/Core/Common/Common.vcxproj.filters @@ -189,6 +189,9 @@ GL\GLExtensions + + GL\GLExtensions + GL\GLExtensions diff --git a/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp b/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp index e18d512ff0..ddf488ccbd 100644 --- a/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp +++ b/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp @@ -661,6 +661,16 @@ PFNDOLTEXSTORAGE3DPROC dolTexStorage3D; PFNDOLDRAWTRANSFORMFEEDBACKINSTANCEDPROC dolDrawTransformFeedbackInstanced; PFNDOLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC dolDrawTransformFeedbackStreamInstanced; +// gl_4_4 +PFNDOLCLEARTEXIMAGEPROC dolClearTexImage; +PFNDOLCLEARTEXSUBIMAGEPROC dolClearTexSubImage; +PFNDOLBINDBUFFERSBASEPROC dolBindBuffersBase; +PFNDOLBINDBUFFERSRANGEPROC dolBindBuffersRange; +PFNDOLBINDTEXTURESPROC dolBindTextures; +PFNDOLBINDSAMPLERSPROC dolBindSamplers; +PFNDOLBINDIMAGETEXTURESPROC dolBindImageTextures; +PFNDOLBINDVERTEXBUFFERSPROC dolBindVertexBuffers; + // gl_4_5 PFNDOLCREATETRANSFORMFEEDBACKSPROC dolCreateTransformFeedbacks; PFNDOLTRANSFORMFEEDBACKBUFFERBASEPROC dolTransformFeedbackBufferBase; @@ -1616,6 +1626,17 @@ const GLFunc gl_function_array[] = GLFUNC_REQUIRES(glDrawTransformFeedbackInstanced, "VERSION_4_2"), GLFUNC_REQUIRES(glDrawTransformFeedbackStreamInstanced, "VERSION_4_2"), + // gl_4_4 + GLFUNC_REQUIRES(glBufferStorage, "VERSION_4_4"), + GLFUNC_REQUIRES(glClearTexImage, "VERSION_4_4"), + GLFUNC_REQUIRES(glClearTexSubImage, "VERSION_4_4"), + GLFUNC_REQUIRES(glBindBuffersBase, "VERSION_4_4"), + GLFUNC_REQUIRES(glBindBuffersRange, "VERSION_4_4"), + GLFUNC_REQUIRES(glBindTextures, "VERSION_4_4"), + GLFUNC_REQUIRES(glBindSamplers, "VERSION_4_4"), + GLFUNC_REQUIRES(glBindImageTextures, "VERSION_4_4"), + GLFUNC_REQUIRES(glBindVertexBuffers, "VERSION_4_4"), + // gl_4_5 GLFUNC_REQUIRES(glClipControl, "VERSION_4_5"), GLFUNC_REQUIRES(glCreateTransformFeedbacks, "VERSION_4_5"), @@ -1911,11 +1932,11 @@ const GLFunc gl_function_array[] = GLFUNC_REQUIRES(glPushDebugGroup, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"), // ARB_buffer_storage - GLFUNC_REQUIRES(glBufferStorage, "GL_ARB_buffer_storage"), + GLFUNC_REQUIRES(glBufferStorage, "GL_ARB_buffer_storage !VERSION_4_4"), GLFUNC_REQUIRES(glNamedBufferStorage, "GL_ARB_buffer_storage GL_EXT_direct_state_access !VERSION_4_5"), // EXT_buffer_storage - GLFUNC_SUFFIX(glBufferStorage, EXT, "GL_EXT_buffer_storage !GL_ARB_buffer_storage"), + GLFUNC_SUFFIX(glBufferStorage, EXT, "GL_EXT_buffer_storage !GL_ARB_buffer_storage !VERSION_4_4"), // EXT_geometry_shader GLFUNC_SUFFIX(glFramebufferTexture, EXT, "GL_EXT_geometry_shader !VERSION_3_2"), diff --git a/Source/Core/Common/GL/GLExtensions/GLExtensions.h b/Source/Core/Common/GL/GLExtensions/GLExtensions.h index 51242f27c2..2b4876ea28 100644 --- a/Source/Core/Common/GL/GLExtensions/GLExtensions.h +++ b/Source/Core/Common/GL/GLExtensions/GLExtensions.h @@ -40,6 +40,7 @@ #include "Common/GL/GLExtensions/gl_3_1.h" #include "Common/GL/GLExtensions/gl_3_2.h" #include "Common/GL/GLExtensions/gl_4_2.h" +#include "Common/GL/GLExtensions/gl_4_4.h" #include "Common/GL/GLExtensions/gl_4_5.h" #include "Common/GL/GLExtensions/HP_occlusion_test.h" #include "Common/GL/GLExtensions/KHR_debug.h" diff --git a/Source/Core/Common/GL/GLExtensions/gl_4_4.h b/Source/Core/Common/GL/GLExtensions/gl_4_4.h new file mode 100644 index 0000000000..4f30731543 --- /dev/null +++ b/Source/Core/Common/GL/GLExtensions/gl_4_4.h @@ -0,0 +1,70 @@ +/* +** Copyright (c) 2013-2015 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#include "Common/GL/GLExtensions/gl_common.h" + +#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_TEXTURE_BUFFER_BINDING 0x8C2A +#define GL_DYNAMIC_STORAGE_BIT 0x0100 +#define GL_CLIENT_STORAGE_BIT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F +#define GL_BUFFER_STORAGE_FLAGS 0x8220 +#define GL_CLEAR_TEXTURE 0x9365 +#define GL_LOCATION_COMPONENT 0x934A +#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B +#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C +#define GL_QUERY_BUFFER 0x9192 +#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000 +#define GL_QUERY_BUFFER_BINDING 0x9193 +#define GL_QUERY_RESULT_NO_WAIT 0x9194 +#define GL_MIRROR_CLAMP_TO_EDGE 0x8743 + +typedef void (APIENTRYP PFNDOLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +typedef void (APIENTRYP PFNDOLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNDOLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +typedef void (APIENTRYP PFNDOLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers); +typedef void (APIENTRYP PFNDOLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes); +typedef void (APIENTRYP PFNDOLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNDOLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers); +typedef void (APIENTRYP PFNDOLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures); +typedef void (APIENTRYP PFNDOLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides); + +extern PFNDOLCLEARTEXIMAGEPROC dolClearTexImage; +extern PFNDOLCLEARTEXSUBIMAGEPROC dolClearTexSubImage; +extern PFNDOLBINDBUFFERSBASEPROC dolBindBuffersBase; +extern PFNDOLBINDBUFFERSRANGEPROC dolBindBuffersRange; +extern PFNDOLBINDTEXTURESPROC dolBindTextures; +extern PFNDOLBINDSAMPLERSPROC dolBindSamplers; +extern PFNDOLBINDIMAGETEXTURESPROC dolBindImageTextures; +extern PFNDOLBINDVERTEXBUFFERSPROC dolBindVertexBuffers; + +#define glClearTexImage dolClearTexImage +#define glClearTexSubImage dolClearTexSubImage +#define glBindBuffersBase dolBindBuffersBase +#define glBindBuffersRange dolBindBuffersRange +#define glBindTextures dolBindTextures +#define glBindSamplers dolBindSamplers +#define glBindImageTextures dolBindImageTextures +#define glBindVertexBuffers dolBindVertexBuffers