From 361ab62fe9f9e13ce48a99de3f120af60bb96425 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 6 Jul 2015 02:05:21 +0200 Subject: [PATCH] Added ANDROID_extension_pack_es31a extensions. Just added them to the list, nothing integrated or implemented yet. Also added some more stuff into OpenGL mapping table, as I apparently forgot some entries. --- doc/opengl-mapping.dox | 8 + doc/opengl-support.dox | 17 ++ src/Magnum/Context.cpp | 33 ++- src/Magnum/Extensions.h | 30 +- .../OpenGL/GLES2/extensions.txt | 3 + src/MagnumExternal/OpenGL/GLES2/flextGL.cpp | 20 ++ src/MagnumExternal/OpenGL/GLES2/flextGL.h | 82 ++++++ src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h | 88 ++++++ .../OpenGL/GLES2/flextGLPlatform.cpp | 22 ++ .../OpenGL/GLES3/extensions.txt | 81 +++-- src/MagnumExternal/OpenGL/GLES3/flextGL.cpp | 42 +++ src/MagnumExternal/OpenGL/GLES3/flextGL.h | 278 ++++++++++++++++++ .../OpenGL/GLES3/flextGLPlatform.cpp | 58 ++++ 13 files changed, 728 insertions(+), 34 deletions(-) diff --git a/doc/opengl-mapping.dox b/doc/opengl-mapping.dox index a315f4e1a..c5575b2bc 100644 --- a/doc/opengl-mapping.dox +++ b/doc/opengl-mapping.dox @@ -286,6 +286,7 @@ OpenGL function | Matching API @fn_gl{PointSize} | @ref Renderer::setPointSize() @fn_gl{PolygonMode} | @ref Renderer::setPolygonMode() @fn_gl{PolygonOffset} | @ref Renderer::setPolygonOffset() +@fn_gles_extension{PrimitiveBoundingBox,EXT,primitive_bounding_box} | | @fn_gl{PrimitiveRestartIndex} | | @fn_gl{ProgramBinary} | | @fn_gl{ProgramParameter} | @ref AbstractShaderProgram::setRetrievableBinary(), \n @ref AbstractShaderProgram::setSeparable() @@ -447,9 +448,12 @@ OpenGL function | Matching API @def_gl{MAX_FRAMEBUFFER_SAMPLES} | | @def_gl{MAX_FRAMEBUFFER_WIDTH} | | @def_gl{MAX_FRAGMENT_INPUT_COMPONENTS}, \n @def_gl{MAX_GEOMETRY_INPUT_COMPONENTS}, \n @def_gl{MAX_GEOMETRY_OUTPUT_COMPONENTS}, \n @def_gl{MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS}, \n @def_gl{MAX_TESS_CONTROL_INPUT_COMPONENTS}, \n @def_gl{MAX_TESS_CONTROL_OUTPUT_COMPONENTS}, \n @def_gl{MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS}, \n @def_gl{MAX_TESS_EVALUATION_INPUT_COMPONENTS}, \n @def_gl{MAX_TESS_EVALUATION_OUTPUT_COMPONENTS}, \n @def_gl{MAX_VERTEX_OUTPUT_COMPONENTS}, \n @def_gl{MAX_VARYING_VECTORS} | @ref Shader::maxFragmentInputComponents(), \n @ref Shader::maxGeometryInputComponents(), \n @ref Shader::maxGeometryOutputComponents(), \n @ref Shader::maxGeometryTotalOutputComponents(), \n @ref Shader::maxTessellationControlInputComponents(), \n @ref Shader::maxTessellationControlOutputComponents(), \n @ref Shader::maxTessellationControlTotalOutputComponents(), \n @ref Shader::maxTessellationEvaluationInputComponents(), \n @ref Shader::maxTessellationEvaluationOutputComponents(), \n @ref Shader::maxVertexOutputComponents() +@def_gl{MAX_GEOMETRY_OUTPUT_VERTICES} | | +@def_gl{MAX_GEOMETRY_SHADER_INVOCATIONS} | | @def_gl{MAX_IMAGE_SAMPLES} | @ref AbstractShaderProgram::maxImageSamples() @def_gl{MAX_IMAGE_UNITS} | @ref AbstractShaderProgram::maxImageUnits() @def_gl{MAX_LABEL_LENGTH} | @ref AbstractObject::maxLabelLength() +@def_gl{MAX_PATCH_VERTICES} | | @def_gl{MAX_RENDERBUFFER_SIZE} | @ref Renderbuffer::maxSize() @def_gl{MAX_SAMPLE_MASK_WORDS} | | @def_gl{MAX_SERVER_WAIT_TIMEOUT} | | @@ -458,6 +462,8 @@ OpenGL function | Matching API @def_gl_extension{MAX_SPARSE_TEXTURE_SIZE,ARB,sparse_texture} | | @def_gl_extension{MAX_SPARSE_3D_TEXTURE_SIZE,ARB,sparse_texture} | | @def_gl_extension{MAX_SPARSE_ARRAY_TEXTURE_LAYERS,ARB,sparse_texture} | | +@def_gl{MAX_TESS_GEN_LEVEL} | | +@def_gl{MAX_TESS_PATCH_COMPONENTS} @def_gl{MAX_TEXTURE_BUFFER_SIZE} | @ref BufferTexture::maxSize() @def_gl_extension{MAX_TEXTURE_MAX_ANISOTROPY,EXT,texture_filter_anisotropic} | @ref Sampler::maxMaxAnisotropy() @def_gl{MAX_TEXTURE_LOD_BIAS} | @ref AbstractTexture::maxLodBias() @@ -474,8 +480,10 @@ OpenGL function | Matching API @def_gl{MAX_VERTEX_ATTRIB_RELATIVE_OFFSET} | | @def_gl{MAX_VIEWPORTS} | | @def_gl{MAX_VIEWPORT_DIMS} | @ref AbstractFramebuffer::maxViewportSize() +@def_gl{MIN_FRAGMENT_INTERPOLATION_OFFSET}, \n @def_gl{MAX_FRAGMENT_INTERPOLATION_OFFSET} | | @def_gl{MIN_MAP_BUFFER_ALIGNMENT} | @ref Buffer::minMapAlignment() @def_gl{MIN_PROGRAM_TEXEL_OFFSET}, \n @def_gl{MAX_PROGRAM_TEXEL_OFFSET} | @ref AbstractShaderProgram::minTexelOffset(), \n @ref AbstractShaderProgram::maxTexelOffset() +@def_gl{MIN_SAMPLE_SHADING_VALUE} | | @def_gl{NUM_EXTENSIONS} | @ref Context::supportedExtensions() @def_gl{NUM_PROGRAM_BINARY_FORMATS}, \n @def_gl{PROGRAM_BINARY_FORMATS} | | @def_gl{NUM_SHADER_BINARY_FORMATS}, \n @def_gl{SHADER_BINARY_FORMATS} | | diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 6430aa245..bcc7e0fb3 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -344,6 +344,7 @@ Extension | Status Extension | Status ------------------------------------------- | ------ +@es_extension{ANDROID,extension_pack_es31a} | done (nothing to do) @es_extension{APPLE,texture_format_BGRA8888} | done @es_extension{CHROMIUM,map_sub} (NaCl only) | only buffer mapping @es_extension{EXT,texture_filter_anisotropic} | done @@ -359,6 +360,16 @@ Extension | Status @es_extension{EXT,texture_sRGB_decode} | done @es_extension{EXT,sRGB_write_control} | done @es_extension{EXT,shader_integer_mix} | done (shading language only) +@es_extension{EXT,copy_image} | | +@es_extension{EXT,draw_buffers_indexed} | | +@es_extension{EXT,geometry_shader} | | +@es_extension{EXT,gpu_shader5} | done (shading language only) +@es_extension{EXT,shader_io_blocks} | done (shading language only) +@es_extension{EXT,tessellation_shader} | | +@es_extension{EXT,texture_border_clamp} | | +@es_extension{EXT,texture_buffer} | | +@es_extension{EXT,texture_cube_map_array} | | +@es_extension{EXT,primitive_bounding_box} | | @es_extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | | @es_extension2{KHR,texture_compression_astc_hdr,texture_compression_astc_hdr} | | @es_extension{KHR,debug} | see above @@ -377,6 +388,12 @@ Extension | Status @es_extension{OES,mapbuffer} | done @es_extension{OES,stencil1} | done @es_extension{OES,stencil4} | done +@es_extension{OES,sample_shading} | | +@es_extension{OES,sample_variables} | done (shading language only) +@es_extension{OES,shader_image_atomic} | done (shading language only) +@es_extension{OES,shader_multisample_interpolation} | | +@es_extension{OES,texture_stencil8} | | +@es_extension{OES,texture_storage_multisample_2d_array} | | @subsection opengl-support-webgl10 WebGL 1.0 diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index 4c3a84ecc..623899d91 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -242,6 +242,9 @@ const std::vector& Extension::extensions(Version version) { #endif #else static const std::vector extensions{ + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,ANDROID,extension_pack_es31a), + #endif _extension(GL,APPLE,texture_format_BGRA8888), #ifdef CORRADE_TARGET_NACL _extension(GL,CHROMIUM,map_sub), @@ -255,6 +258,23 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,disjoint_timer_query), _extension(GL,EXT,texture_sRGB_decode), _extension(GL,EXT,sRGB_write_control), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,shader_integer_mix), + _extension(GL,EXT,copy_image), + #endif + _extension(GL,EXT,draw_buffers_indexed), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,geometry_shader), + _extension(GL,EXT,gpu_shader5), + _extension(GL,EXT,shader_io_blocks), + _extension(GL,EXT,tessellation_shader), + #endif + _extension(GL,EXT,texture_border_clamp), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,texture_buffer), + _extension(GL,EXT,texture_cube_map_array), + _extension(GL,EXT,primitive_bounding_box), + #endif _extension(GL,EXT,separate_shader_objects), _extension(GL,EXT,multisampled_render_to_texture), _extension(GL,EXT,robustness), @@ -275,7 +295,18 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,OES,depth32), _extension(GL,OES,mapbuffer), _extension(GL,OES,stencil1), - _extension(GL,OES,stencil4)}; + _extension(GL,OES,stencil4), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,OES,sample_shading), + _extension(GL,OES,sample_variables), + _extension(GL,OES,shader_image_atomic), + _extension(GL,OES,shader_multisample_interpolation), + #endif + _extension(GL,OES,texture_stencil8), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,OES,texture_storage_multisample_2d_array) + #endif + }; #ifdef MAGNUM_TARGET_GLES2 static const std::vector extensionsES300{ _extension(GL,ANGLE,framebuffer_blit), diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h index 8743105a4..68e3c66a3 100644 --- a/src/Magnum/Extensions.h +++ b/src/Magnum/Extensions.h @@ -265,7 +265,11 @@ namespace GL { } #else #line 1 - namespace ANGLE { + namespace ANDROID { + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,ANDROID,extension_pack_es31a, GLES310, None) // #187 + #endif + } namespace ANGLE { #ifdef MAGNUM_TARGET_GLES2 _extension(GL,ANGLE,framebuffer_blit, GLES200, GLES300) // #83 _extension(GL,ANGLE,framebuffer_multisample, GLES200, GLES300) // #84 @@ -332,6 +336,20 @@ namespace GL { #endif #ifndef MAGNUM_TARGET_GLES2 _extension(GL,EXT,shader_integer_mix, GLES300, None) // #161 + _extension(GL,EXT,copy_image, GLES300, None) // #175 + #endif + _extension(GL,EXT,draw_buffers_indexed, GLES200, None) // #176 + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,geometry_shader, GLES310, None) // #177 + _extension(GL,EXT,gpu_shader5, GLES310, None) // #178 + _extension(GL,EXT,shader_io_blocks, GLES310, None) // #180 + _extension(GL,EXT,tessellation_shader, GLES310, None) // #181 + #endif + _extension(GL,EXT,texture_border_clamp, GLES200, None) // #182 + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,texture_buffer, GLES310, None) // #183 + _extension(GL,EXT,texture_cube_map_array, GLES310, None) // #184 + _extension(GL,EXT,primitive_bounding_box, GLES310, None) // #186 #endif } namespace KHR { _extension(GL,KHR,texture_compression_astc_ldr, GLES200, None) // #117 @@ -391,6 +409,16 @@ namespace GL { _extension(GL,OES,required_internalformat, GLES200, GLES300) // #115 _extension(GL,OES,surfaceless_context, GLES200, GLES300) // #116 #endif + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,OES,sample_shading, GLES300, None) // #169 + _extension(GL,OES,sample_variables, GLES300, None) // #170 + _extension(GL,OES,shader_image_atomic, GLES310, None) // #171 + _extension(GL,OES,shader_multisample_interpolation, GLES300, None) // #172 + #endif + _extension(GL,OES,texture_stencil8, GLES200, None) // #173 + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,OES,texture_storage_multisample_2d_array, GLES310, None) // #174 + #endif } #endif } diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index e750227d1..585e515ee 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -58,6 +58,8 @@ extension EXT_debug_marker optional extension EXT_disjoint_timer_query optional extension EXT_texture_sRGB_decode optional extension EXT_sRGB_write_control optional +extension EXT_draw_buffers_indexed optional +extension EXT_texture_border_clamp optional extension EXT_separate_shader_objects optional extension EXT_multisampled_render_to_texture optional extension EXT_robustness optional @@ -79,3 +81,4 @@ extension OES_depth32 optional extension OES_mapbuffer optional extension OES_stencil1 optional extension OES_stencil4 optional +extension OES_texture_stencil8 optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp index da54958e9..f10cca1af 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp @@ -106,6 +106,26 @@ FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectivEXT)(GLuint, GLenum, GLint FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjecti64vEXT)(GLuint, GLenum, GLint64 *) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenum, GLuint64 *) = nullptr; +/* GL_EXT_draw_buffers_indexed */ +FLEXTGL_EXPORT void(APIENTRY *flextglEnableiEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDisableiEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationiEXT)(GLuint, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationSeparateiEXT)(GLuint, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendFunciEXT)(GLuint, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendFuncSeparateiEXT)(GLuint, GLenum, GLenum, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglColorMaskiEXT)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsEnablediEXT)(GLenum, GLuint) = nullptr; + +/* GL_EXT_texture_border_clamp */ +FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIivEXT)(GLenum, GLenum, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIuivEXT)(GLenum, GLenum, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIivEXT)(GLenum, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIuivEXT)(GLenum, GLenum, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIivEXT)(GLuint, GLenum, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIuivEXT)(GLuint, GLenum, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIivEXT)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIuivEXT)(GLuint, GLenum, GLuint *) = nullptr; + /* GL_EXT_separate_shader_objects */ FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglActiveProgramEXT)(GLuint) = nullptr; diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index 15075ee1e..df1ec0b99 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -763,6 +763,42 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +/* GL_EXT_draw_buffers_indexed */ + +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_BLEND 0x0BE2 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_SRC_ALPHA_SATURATE 0x0308 + +/* GL_EXT_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D + /* GL_EXT_separate_shader_objects */ #define GL_ACTIVE_PROGRAM_EXT 0x8259 @@ -1022,6 +1058,11 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_STENCIL_INDEX4_OES 0x8D47 +/* GL_OES_texture_stencil8 */ + +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 + /* Function prototypes */ /* GL_ES_VERSION_2_0 */ @@ -1446,6 +1487,44 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenu /* GL_EXT_sRGB_write_control */ +/* GL_EXT_draw_buffers_indexed */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableiEXT)(GLenum, GLuint); +#define glEnableiEXT flextglEnableiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableiEXT)(GLenum, GLuint); +#define glDisableiEXT flextglDisableiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationiEXT)(GLuint, GLenum); +#define glBlendEquationiEXT flextglBlendEquationiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationSeparateiEXT)(GLuint, GLenum, GLenum); +#define glBlendEquationSeparateiEXT flextglBlendEquationSeparateiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendFunciEXT)(GLuint, GLenum, GLenum); +#define glBlendFunciEXT flextglBlendFunciEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendFuncSeparateiEXT)(GLuint, GLenum, GLenum, GLenum, GLenum); +#define glBlendFuncSeparateiEXT flextglBlendFuncSeparateiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglColorMaskiEXT)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +#define glColorMaskiEXT flextglColorMaskiEXT +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsEnablediEXT)(GLenum, GLuint); +#define glIsEnablediEXT flextglIsEnablediEXT + +/* GL_EXT_texture_border_clamp */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIivEXT)(GLenum, GLenum, const GLint *); +#define glTexParameterIivEXT flextglTexParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIuivEXT)(GLenum, GLenum, const GLuint *); +#define glTexParameterIuivEXT flextglTexParameterIuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIivEXT)(GLenum, GLenum, GLint *); +#define glGetTexParameterIivEXT flextglGetTexParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIuivEXT)(GLenum, GLenum, GLuint *); +#define glGetTexParameterIuivEXT flextglGetTexParameterIuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIivEXT)(GLuint, GLenum, const GLint *); +#define glSamplerParameterIivEXT flextglSamplerParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIuivEXT)(GLuint, GLenum, const GLuint *); +#define glSamplerParameterIuivEXT flextglSamplerParameterIuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIivEXT)(GLuint, GLenum, GLint *); +#define glGetSamplerParameterIivEXT flextglGetSamplerParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIuivEXT)(GLuint, GLenum, GLuint *); +#define glGetSamplerParameterIuivEXT flextglGetSamplerParameterIuivEXT + /* GL_EXT_separate_shader_objects */ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint); @@ -1689,6 +1768,9 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, /* GL_OES_stencil4 */ +/* GL_OES_texture_stencil8 */ + + #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h index c6417751f..8a924dbac 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h @@ -738,6 +738,42 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +/* GL_EXT_draw_buffers_indexed */ + +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_BLEND 0x0BE2 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_SRC_ALPHA_SATURATE 0x0308 + +/* GL_EXT_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D + /* GL_EXT_separate_shader_objects */ #define GL_ACTIVE_PROGRAM_EXT 0x8259 @@ -997,6 +1033,11 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_STENCIL_INDEX4_OES 0x8D47 +/* GL_OES_texture_stencil8 */ + +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 + /* Function prototypes */ /* GL_ES_VERSION_2_0 */ @@ -1675,6 +1716,48 @@ GL_APICALL void GL_APIENTRY GLES2GetQueryObjectui64vEXT(GLuint, GLenum, GLuint64 #define GL_EXT_sRGB_write_control 1 #endif +/* GL_EXT_draw_buffers_indexed */ +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +GL_APICALL void GL_APIENTRY GLES2EnableiEXT(GLenum, GLuint); +#define glEnableiEXT GLES2EnableiEXT +GL_APICALL void GL_APIENTRY GLES2DisableiEXT(GLenum, GLuint); +#define glDisableiEXT GLES2DisableiEXT +GL_APICALL void GL_APIENTRY GLES2BlendEquationiEXT(GLuint, GLenum); +#define glBlendEquationiEXT GLES2BlendEquationiEXT +GL_APICALL void GL_APIENTRY GLES2BlendEquationSeparateiEXT(GLuint, GLenum, GLenum); +#define glBlendEquationSeparateiEXT GLES2BlendEquationSeparateiEXT +GL_APICALL void GL_APIENTRY GLES2BlendFunciEXT(GLuint, GLenum, GLenum); +#define glBlendFunciEXT GLES2BlendFunciEXT +GL_APICALL void GL_APIENTRY GLES2BlendFuncSeparateiEXT(GLuint, GLenum, GLenum, GLenum, GLenum); +#define glBlendFuncSeparateiEXT GLES2BlendFuncSeparateiEXT +GL_APICALL void GL_APIENTRY GLES2ColorMaskiEXT(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +#define glColorMaskiEXT GLES2ColorMaskiEXT +GL_APICALL GLboolean GL_APIENTRY GLES2IsEnablediEXT(GLenum, GLuint); +#define glIsEnablediEXT GLES2IsEnablediEXT +#endif + +/* GL_EXT_texture_border_clamp */ +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +GL_APICALL void GL_APIENTRY GLES2TexParameterIivEXT(GLenum, GLenum, const GLint *); +#define glTexParameterIivEXT GLES2TexParameterIivEXT +GL_APICALL void GL_APIENTRY GLES2TexParameterIuivEXT(GLenum, GLenum, const GLuint *); +#define glTexParameterIuivEXT GLES2TexParameterIuivEXT +GL_APICALL void GL_APIENTRY GLES2GetTexParameterIivEXT(GLenum, GLenum, GLint *); +#define glGetTexParameterIivEXT GLES2GetTexParameterIivEXT +GL_APICALL void GL_APIENTRY GLES2GetTexParameterIuivEXT(GLenum, GLenum, GLuint *); +#define glGetTexParameterIuivEXT GLES2GetTexParameterIuivEXT +GL_APICALL void GL_APIENTRY GLES2SamplerParameterIivEXT(GLuint, GLenum, const GLint *); +#define glSamplerParameterIivEXT GLES2SamplerParameterIivEXT +GL_APICALL void GL_APIENTRY GLES2SamplerParameterIuivEXT(GLuint, GLenum, const GLuint *); +#define glSamplerParameterIuivEXT GLES2SamplerParameterIuivEXT +GL_APICALL void GL_APIENTRY GLES2GetSamplerParameterIivEXT(GLuint, GLenum, GLint *); +#define glGetSamplerParameterIivEXT GLES2GetSamplerParameterIivEXT +GL_APICALL void GL_APIENTRY GLES2GetSamplerParameterIuivEXT(GLuint, GLenum, GLuint *); +#define glGetSamplerParameterIuivEXT GLES2GetSamplerParameterIuivEXT +#endif + /* GL_EXT_separate_shader_objects */ #ifndef GL_EXT_separate_shader_objects #define GL_EXT_separate_shader_objects 1 @@ -1960,6 +2043,11 @@ GL_APICALL void GL_APIENTRY GLES2GetBufferPointervOES(GLenum, GLenum, void **); #define GL_OES_stencil4 1 #endif +/* GL_OES_texture_stencil8 */ +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#endif + #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp index 968fc35fa..333d2043a 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp @@ -174,6 +174,26 @@ void flextGLInit() { /* GL_EXT_sRGB_write_control */ + /* GL_EXT_draw_buffers_indexed */ + flextglEnableiEXT = reinterpret_cast(loader.load("glEnableiEXT")); + flextglDisableiEXT = reinterpret_cast(loader.load("glDisableiEXT")); + flextglBlendEquationiEXT = reinterpret_cast(loader.load("glBlendEquationiEXT")); + flextglBlendEquationSeparateiEXT = reinterpret_cast(loader.load("glBlendEquationSeparateiEXT")); + flextglBlendFunciEXT = reinterpret_cast(loader.load("glBlendFunciEXT")); + flextglBlendFuncSeparateiEXT = reinterpret_cast(loader.load("glBlendFuncSeparateiEXT")); + flextglColorMaskiEXT = reinterpret_cast(loader.load("glColorMaskiEXT")); + flextglIsEnablediEXT = reinterpret_cast(loader.load("glIsEnablediEXT")); + + /* GL_EXT_texture_border_clamp */ + flextglTexParameterIivEXT = reinterpret_cast(loader.load("glTexParameterIivEXT")); + flextglTexParameterIuivEXT = reinterpret_cast(loader.load("glTexParameterIuivEXT")); + flextglGetTexParameterIivEXT = reinterpret_cast(loader.load("glGetTexParameterIivEXT")); + flextglGetTexParameterIuivEXT = reinterpret_cast(loader.load("glGetTexParameterIuivEXT")); + flextglSamplerParameterIivEXT = reinterpret_cast(loader.load("glSamplerParameterIivEXT")); + flextglSamplerParameterIuivEXT = reinterpret_cast(loader.load("glSamplerParameterIuivEXT")); + flextglGetSamplerParameterIivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIivEXT")); + flextglGetSamplerParameterIuivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIuivEXT")); + /* GL_EXT_separate_shader_objects */ flextglUseShaderProgramEXT = reinterpret_cast(loader.load("glUseShaderProgramEXT")); flextglActiveProgramEXT = reinterpret_cast(loader.load("glActiveProgramEXT")); @@ -305,4 +325,6 @@ void flextGLInit() { /* GL_OES_stencil1 */ /* GL_OES_stencil4 */ + + /* GL_OES_texture_stencil8 */ } diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index 15f9f3113..df54f0889 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -2,35 +2,52 @@ version 3.1 es -extension APPLE_texture_format_BGRA8888 optional -extension EXT_texture_filter_anisotropic optional -extension EXT_texture_format_BGRA8888 optional -extension EXT_read_format_bgra optional -extension EXT_multi_draw_arrays optional -extension EXT_debug_label optional -extension EXT_debug_marker optional -extension EXT_disjoint_timer_query optional -extension EXT_texture_sRGB_decode optional -extension EXT_sRGB_write_control optional -extension EXT_shader_integer_mix optional -extension EXT_separate_shader_objects optional -extension EXT_multisampled_render_to_texture optional -extension EXT_robustness optional -extension KHR_texture_compression_astc_ldr optional -extension KHR_texture_compression_astc_hdr optional -extension KHR_debug optional -extension KHR_blend_equation_advanced optional -extension KHR_blend_equation_advanced_coherent optional -extension KHR_robustness optional -extension KHR_robust_buffer_access_behavior optional -extension KHR_context_flush_control optional -extension NV_read_buffer_front optional -extension NV_read_depth optional -extension NV_read_stencil optional -extension NV_read_depth_stencil optional -extension NV_texture_border_clamp optional -extension NV_polygon_mode optional -extension OES_depth32 optional -extension OES_mapbuffer optional -extension OES_stencil1 optional -extension OES_stencil4 optional +extension ANDROID_extension_pack_es31a optional +extension APPLE_texture_format_BGRA8888 optional +extension EXT_texture_filter_anisotropic optional +extension EXT_texture_format_BGRA8888 optional +extension EXT_read_format_bgra optional +extension EXT_multi_draw_arrays optional +extension EXT_debug_label optional +extension EXT_debug_marker optional +extension EXT_disjoint_timer_query optional +extension EXT_texture_sRGB_decode optional +extension EXT_sRGB_write_control optional +extension EXT_shader_integer_mix optional +extension EXT_copy_image optional +extension EXT_draw_buffers_indexed optional +extension EXT_geometry_shader optional +extension EXT_gpu_shader5 optional +extension EXT_shader_io_blocks optional +extension EXT_tessellation_shader optional +extension EXT_texture_border_clamp optional +extension EXT_texture_buffer optional +extension EXT_texture_cube_map_array optional +extension EXT_primitive_bounding_box optional +extension EXT_separate_shader_objects optional +extension EXT_multisampled_render_to_texture optional +extension EXT_robustness optional +extension KHR_texture_compression_astc_ldr optional +extension KHR_texture_compression_astc_hdr optional +extension KHR_debug optional +extension KHR_blend_equation_advanced optional +extension KHR_blend_equation_advanced_coherent optional +extension KHR_robustness optional +extension KHR_robust_buffer_access_behavior optional +extension KHR_context_flush_control optional +extension NV_read_buffer_front optional +extension NV_read_depth optional +extension NV_read_stencil optional +extension NV_read_depth_stencil optional +extension NV_texture_border_clamp optional +extension NV_polygon_mode optional +extension OES_depth32 optional +extension OES_mapbuffer optional +extension OES_stencil1 optional +extension OES_stencil4 optional +extension OES_sample_shading optional +extension OES_sample_variables optional +extension OES_shader_image_atomic optional +extension OES_shader_multisample_interpolation optional +extension OES_texture_stencil8 optional +extension OES_texture_storage_multisample_2d_array optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp index e7fd33c01..ce39dac72 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp @@ -100,6 +100,42 @@ FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectuivEXT)(GLuint, GLenum, GLuin FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjecti64vEXT)(GLuint, GLenum, GLint64 *) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenum, GLuint64 *) = nullptr; +/* GL_EXT_copy_image */ +FLEXTGL_EXPORT void(APIENTRY *flextglCopyImageSubDataEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei) = nullptr; + +/* GL_EXT_draw_buffers_indexed */ +FLEXTGL_EXPORT void(APIENTRY *flextglEnableiEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglDisableiEXT)(GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationiEXT)(GLuint, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationSeparateiEXT)(GLuint, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendFunciEXT)(GLuint, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglBlendFuncSeparateiEXT)(GLuint, GLenum, GLenum, GLenum, GLenum) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglColorMaskiEXT)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean) = nullptr; +FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsEnablediEXT)(GLenum, GLuint) = nullptr; + +/* GL_EXT_geometry_shader */ +FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTextureEXT)(GLenum, GLenum, GLuint, GLint) = nullptr; + +/* GL_EXT_tessellation_shader */ +FLEXTGL_EXPORT void(APIENTRY *flextglPatchParameteriEXT)(GLenum, GLint) = nullptr; + +/* GL_EXT_texture_border_clamp */ +FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIivEXT)(GLenum, GLenum, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIuivEXT)(GLenum, GLenum, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIivEXT)(GLenum, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIuivEXT)(GLenum, GLenum, GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIivEXT)(GLuint, GLenum, const GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIuivEXT)(GLuint, GLenum, const GLuint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIivEXT)(GLuint, GLenum, GLint *) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIuivEXT)(GLuint, GLenum, GLuint *) = nullptr; + +/* GL_EXT_texture_buffer */ +FLEXTGL_EXPORT void(APIENTRY *flextglTexBufferEXT)(GLenum, GLenum, GLuint) = nullptr; +FLEXTGL_EXPORT void(APIENTRY *flextglTexBufferRangeEXT)(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr) = nullptr; + +/* GL_EXT_primitive_bounding_box */ +FLEXTGL_EXPORT void(APIENTRY *flextglPrimitiveBoundingBoxEXT)(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr; + /* GL_EXT_separate_shader_objects */ FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglActiveProgramEXT)(GLuint) = nullptr; @@ -206,6 +242,12 @@ FLEXTGL_EXPORT void *(APIENTRY *flextglMapBufferOES)(GLenum, GLenum) = nullptr; FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapBufferOES)(GLenum) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, void **) = nullptr; +/* GL_OES_sample_shading */ +FLEXTGL_EXPORT void(APIENTRY *flextglMinSampleShadingOES)(GLfloat) = nullptr; + +/* GL_OES_texture_storage_multisample_2d_array */ +FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage3DMultisampleOES)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean) = nullptr; + #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index 04c5a64df..60d76a445 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -947,6 +947,161 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +/* GL_EXT_draw_buffers_indexed */ + +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_BLEND 0x0BE2 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_SRC_ALPHA_SATURATE 0x0308 + +/* GL_EXT_geometry_shader */ + +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 + +/* GL_EXT_tessellation_shader */ + +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_TRIANGLES 0x0004 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_EQUAL 0x0202 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_CCW 0x0901 +#define GL_CW 0x0900 +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 + +/* GL_EXT_texture_border_clamp */ + +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D + +/* GL_EXT_texture_buffer */ + +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E + +/* GL_EXT_texture_cube_map_array */ + +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A + +/* GL_EXT_primitive_bounding_box */ + +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE + /* GL_EXT_separate_shader_objects */ #define GL_ACTIVE_PROGRAM_EXT 0x8259 @@ -1206,6 +1361,30 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_STENCIL_INDEX4_OES 0x8D47 +/* GL_OES_sample_shading */ + +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 + +/* GL_OES_shader_multisample_interpolation */ + +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D + +/* GL_OES_texture_stencil8 */ + +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 + +/* GL_OES_texture_storage_multisample_2d_array */ + +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D + /* Function prototypes */ /* GL_ES_VERSION_2_0 */ @@ -1599,6 +1778,9 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexAttribBinding)(GLuint, GLuint); GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexBindingDivisor)(GLuint, GLuint); #define glVertexBindingDivisor flextglVertexBindingDivisor +/* GL_ANDROID_extension_pack_es31a */ + + /* GL_APPLE_texture_format_BGRA8888 */ @@ -1668,6 +1850,80 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectui64vEXT)(GLuint, GLenu /* GL_EXT_shader_integer_mix */ +/* GL_EXT_copy_image */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyImageSubDataEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei); +#define glCopyImageSubDataEXT flextglCopyImageSubDataEXT + +/* GL_EXT_draw_buffers_indexed */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableiEXT)(GLenum, GLuint); +#define glEnableiEXT flextglEnableiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableiEXT)(GLenum, GLuint); +#define glDisableiEXT flextglDisableiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationiEXT)(GLuint, GLenum); +#define glBlendEquationiEXT flextglBlendEquationiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendEquationSeparateiEXT)(GLuint, GLenum, GLenum); +#define glBlendEquationSeparateiEXT flextglBlendEquationSeparateiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendFunciEXT)(GLuint, GLenum, GLenum); +#define glBlendFunciEXT flextglBlendFunciEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendFuncSeparateiEXT)(GLuint, GLenum, GLenum, GLenum, GLenum); +#define glBlendFuncSeparateiEXT flextglBlendFuncSeparateiEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglColorMaskiEXT)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean); +#define glColorMaskiEXT flextglColorMaskiEXT +GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsEnablediEXT)(GLenum, GLuint); +#define glIsEnablediEXT flextglIsEnablediEXT + +/* GL_EXT_geometry_shader */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferTextureEXT)(GLenum, GLenum, GLuint, GLint); +#define glFramebufferTextureEXT flextglFramebufferTextureEXT + +/* GL_EXT_gpu_shader5 */ + + +/* GL_EXT_shader_io_blocks */ + + +/* GL_EXT_tessellation_shader */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPatchParameteriEXT)(GLenum, GLint); +#define glPatchParameteriEXT flextglPatchParameteriEXT + +/* GL_EXT_texture_border_clamp */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIivEXT)(GLenum, GLenum, const GLint *); +#define glTexParameterIivEXT flextglTexParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexParameterIuivEXT)(GLenum, GLenum, const GLuint *); +#define glTexParameterIuivEXT flextglTexParameterIuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIivEXT)(GLenum, GLenum, GLint *); +#define glGetTexParameterIivEXT flextglGetTexParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTexParameterIuivEXT)(GLenum, GLenum, GLuint *); +#define glGetTexParameterIuivEXT flextglGetTexParameterIuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIivEXT)(GLuint, GLenum, const GLint *); +#define glSamplerParameterIivEXT flextglSamplerParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglSamplerParameterIuivEXT)(GLuint, GLenum, const GLuint *); +#define glSamplerParameterIuivEXT flextglSamplerParameterIuivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIivEXT)(GLuint, GLenum, GLint *); +#define glGetSamplerParameterIivEXT flextglGetSamplerParameterIivEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetSamplerParameterIuivEXT)(GLuint, GLenum, GLuint *); +#define glGetSamplerParameterIuivEXT flextglGetSamplerParameterIuivEXT + +/* GL_EXT_texture_buffer */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexBufferEXT)(GLenum, GLenum, GLuint); +#define glTexBufferEXT flextglTexBufferEXT +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexBufferRangeEXT)(GLenum, GLenum, GLuint, GLintptr, GLsizeiptr); +#define glTexBufferRangeEXT flextglTexBufferRangeEXT + +/* GL_EXT_texture_cube_map_array */ + + +/* GL_EXT_primitive_bounding_box */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPrimitiveBoundingBoxEXT)(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); +#define glPrimitiveBoundingBoxEXT flextglPrimitiveBoundingBoxEXT + /* GL_EXT_separate_shader_objects */ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglUseShaderProgramEXT)(GLenum, GLuint); @@ -1911,6 +2167,28 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetBufferPointervOES)(GLenum, GLenum, /* GL_OES_stencil4 */ +/* GL_OES_sample_shading */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMinSampleShadingOES)(GLfloat); +#define glMinSampleShadingOES flextglMinSampleShadingOES + +/* GL_OES_sample_variables */ + + +/* GL_OES_shader_image_atomic */ + + +/* GL_OES_shader_multisample_interpolation */ + + +/* GL_OES_texture_stencil8 */ + + +/* GL_OES_texture_storage_multisample_2d_array */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage3DMultisampleOES)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean); +#define glTexStorage3DMultisampleOES flextglTexStorage3DMultisampleOES + #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp index f40d5daa9..5e214aa1f 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -78,6 +78,8 @@ void flextGLInit() { flextglVertexAttribBinding = reinterpret_cast(loader.load("glVertexAttribBinding")); flextglVertexBindingDivisor = reinterpret_cast(loader.load("glVertexBindingDivisor")); + /* GL_ANDROID_extension_pack_es31a */ + /* GL_APPLE_texture_format_BGRA8888 */ /* GL_EXT_texture_filter_anisotropic */ @@ -118,6 +120,48 @@ void flextGLInit() { /* GL_EXT_shader_integer_mix */ + /* GL_EXT_copy_image */ + flextglCopyImageSubDataEXT = reinterpret_cast(loader.load("glCopyImageSubDataEXT")); + + /* GL_EXT_draw_buffers_indexed */ + flextglEnableiEXT = reinterpret_cast(loader.load("glEnableiEXT")); + flextglDisableiEXT = reinterpret_cast(loader.load("glDisableiEXT")); + flextglBlendEquationiEXT = reinterpret_cast(loader.load("glBlendEquationiEXT")); + flextglBlendEquationSeparateiEXT = reinterpret_cast(loader.load("glBlendEquationSeparateiEXT")); + flextglBlendFunciEXT = reinterpret_cast(loader.load("glBlendFunciEXT")); + flextglBlendFuncSeparateiEXT = reinterpret_cast(loader.load("glBlendFuncSeparateiEXT")); + flextglColorMaskiEXT = reinterpret_cast(loader.load("glColorMaskiEXT")); + flextglIsEnablediEXT = reinterpret_cast(loader.load("glIsEnablediEXT")); + + /* GL_EXT_geometry_shader */ + flextglFramebufferTextureEXT = reinterpret_cast(loader.load("glFramebufferTextureEXT")); + + /* GL_EXT_gpu_shader5 */ + + /* GL_EXT_shader_io_blocks */ + + /* GL_EXT_tessellation_shader */ + flextglPatchParameteriEXT = reinterpret_cast(loader.load("glPatchParameteriEXT")); + + /* GL_EXT_texture_border_clamp */ + flextglTexParameterIivEXT = reinterpret_cast(loader.load("glTexParameterIivEXT")); + flextglTexParameterIuivEXT = reinterpret_cast(loader.load("glTexParameterIuivEXT")); + flextglGetTexParameterIivEXT = reinterpret_cast(loader.load("glGetTexParameterIivEXT")); + flextglGetTexParameterIuivEXT = reinterpret_cast(loader.load("glGetTexParameterIuivEXT")); + flextglSamplerParameterIivEXT = reinterpret_cast(loader.load("glSamplerParameterIivEXT")); + flextglSamplerParameterIuivEXT = reinterpret_cast(loader.load("glSamplerParameterIuivEXT")); + flextglGetSamplerParameterIivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIivEXT")); + flextglGetSamplerParameterIuivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIuivEXT")); + + /* GL_EXT_texture_buffer */ + flextglTexBufferEXT = reinterpret_cast(loader.load("glTexBufferEXT")); + flextglTexBufferRangeEXT = reinterpret_cast(loader.load("glTexBufferRangeEXT")); + + /* GL_EXT_texture_cube_map_array */ + + /* GL_EXT_primitive_bounding_box */ + flextglPrimitiveBoundingBoxEXT = reinterpret_cast(loader.load("glPrimitiveBoundingBoxEXT")); + /* GL_EXT_separate_shader_objects */ flextglUseShaderProgramEXT = reinterpret_cast(loader.load("glUseShaderProgramEXT")); flextglActiveProgramEXT = reinterpret_cast(loader.load("glActiveProgramEXT")); @@ -249,4 +293,18 @@ void flextGLInit() { /* GL_OES_stencil1 */ /* GL_OES_stencil4 */ + + /* GL_OES_sample_shading */ + flextglMinSampleShadingOES = reinterpret_cast(loader.load("glMinSampleShadingOES")); + + /* GL_OES_sample_variables */ + + /* GL_OES_shader_image_atomic */ + + /* GL_OES_shader_multisample_interpolation */ + + /* GL_OES_texture_stencil8 */ + + /* GL_OES_texture_storage_multisample_2d_array */ + flextglTexStorage3DMultisampleOES = reinterpret_cast(loader.load("glTexStorage3DMultisampleOES")); }