From 6110ba09220c10daa69511995f2a2a3764a5993d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 11 Aug 2015 16:43:36 +0200 Subject: [PATCH] Pixel storage support, part 3: EXT_unpack_subimage and NV_pack_subimage. ES 2.0 extensions to match ES3/desktop functionality. The enums from NV_pack_subimage are not available in gl.xml from Khronos, I would need to use hardcoded value. --- doc/opengl-support.dox | 2 ++ src/Magnum/Context.cpp | 2 ++ src/Magnum/Extensions.h | 2 ++ src/MagnumExternal/OpenGL/GLES2/extensions.txt | 2 ++ src/MagnumExternal/OpenGL/GLES2/flextGL.h | 6 ++++++ src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h | 11 +++++++++++ 6 files changed, 25 insertions(+) diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 151cc5ce9..3b4196dec 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -301,6 +301,7 @@ Extension | Status @es_extension{EXT,discard_framebuffer} | done @es_extension2{EXT,blend_minmax,blend_minmax} | done @es_extension{EXT,shader_texture_lod} | done (shading language only) +@es_extension{EXT,unpack_subimage} | | @es_extension{EXT,occlusion_query_boolean} | done @es_extension{EXT,shadow_samplers} | done @es_extension{EXT,texture_rg} | done @@ -313,6 +314,7 @@ Extension | Status @es_extension{NV,draw_buffers} | done @es_extension{NV,fbo_color_attachments} | done @es_extension{NV,read_buffer} | done +@es_extension{NV,pack_subimage} | | @es_extension{NV,draw_instanced} | done @es_extension{NV,framebuffer_blit} | done @es_extension{NV,framebuffer_multisample} | done diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index b960e6c5c..25191efc3 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -326,6 +326,7 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,discard_framebuffer), _extension(GL,EXT,blend_minmax), _extension(GL,EXT,shader_texture_lod), + _extension(GL,EXT,unpack_subimage), _extension(GL,EXT,occlusion_query_boolean), _extension(GL,EXT,shadow_samplers), _extension(GL,EXT,texture_rg), @@ -338,6 +339,7 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,NV,draw_buffers), _extension(GL,NV,fbo_color_attachments), _extension(GL,NV,read_buffer), + _extension(GL,NV,pack_subimage), _extension(GL,NV,draw_instanced), _extension(GL,NV,framebuffer_blit), _extension(GL,NV,framebuffer_multisample), diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h index 68faf5058..78de2c84b 100644 --- a/src/Magnum/Extensions.h +++ b/src/Magnum/Extensions.h @@ -308,6 +308,7 @@ namespace GL { _extension(GL,EXT,multi_draw_arrays, GLES200, None) // #67 #ifdef MAGNUM_TARGET_GLES2 _extension(GL,EXT,shader_texture_lod, GLES200, GLES300) // #77 + _extension(GL,EXT,unpack_subimage, GLES200, GLES300) // #90 #endif _extension(GL,EXT,debug_label, GLES200, None) // #98 _extension(GL,EXT,debug_marker, GLES200, None) // #99 @@ -374,6 +375,7 @@ namespace GL { _extension(GL,NV,read_stencil, GLES200, None) // #94 _extension(GL,NV,read_depth_stencil, GLES200, None) // #94 #ifdef MAGNUM_TARGET_GLES2 + _extension(GL,NV,pack_subimage, GLES200, GLES300) // #132 _extension(GL,NV,draw_instanced, GLES200, GLES300) // #141 _extension(GL,NV,framebuffer_blit, GLES200, GLES300) // #142 _extension(GL,NV,framebuffer_multisample, GLES200, GLES300) // #143 diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index ab328b416..7fdaedd20 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -13,6 +13,7 @@ extension EXT_texture_type_2_10_10_10_REV optional extension EXT_discard_framebuffer optional extension EXT_blend_minmax optional extension EXT_shader_texture_lod optional +extension EXT_unpack_subimage optional extension EXT_occlusion_query_boolean optional extension EXT_shadow_samplers optional extension EXT_texture_rg optional @@ -25,6 +26,7 @@ extension EXT_draw_instanced optional extension NV_draw_buffers optional extension NV_fbo_color_attachments optional extension NV_read_buffer optional +extension NV_pack_subimage optional extension NV_draw_instanced optional extension NV_framebuffer_blit optional extension NV_framebuffer_multisample optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index 08f63607d..b7162711e 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -443,6 +443,12 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 +/* GL_EXT_unpack_subimage */ + +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 + /* GL_EXT_occlusion_query_boolean */ #define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h index dd08e4e4e..d711c9d21 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h @@ -418,6 +418,12 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 +/* GL_EXT_unpack_subimage */ + +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 + /* GL_EXT_occlusion_query_boolean */ #define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F @@ -1667,6 +1673,11 @@ GL_APICALL void GL_APIENTRY GLES2TextureStorage3DEXT(GLuint, GLenum, GLsizei, GL #define GL_EXT_texture_type_2_10_10_10_REV 1 #endif +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#endif + /* GL_KHR_blend_equation_advanced */ #ifndef GL_KHR_blend_equation_advanced #define GL_KHR_blend_equation_advanced 1