Module: Mesa
Branch: master
Commit: 9848e86af0c937a6f7609289ab2705c3535f378f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9848e86af0c937a6f7609289ab2705c3535f378f

Author: Ian Romanick <ian.d.roman...@intel.com>
Date:   Fri Jul 27 06:40:26 2012 -0700

mesa/es: Validate glTexSubImage format and type in Mesa code rather than the ES 
wrapper

v2: Add proper GLES3 filtering.

Signed-off-by: Ian Romanick <ian.d.roman...@intel.com>
Reviewed-by: Kenneth Graunke <kenn...@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>

---

 src/mesa/main/APIspec.xml |  133 ---------------------------------------------
 src/mesa/main/teximage.c  |   17 ++++++
 2 files changed, 17 insertions(+), 133 deletions(-)

diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml
index ffc384c..7b6e25e 100644
--- a/src/mesa/main/APIspec.xml
+++ b/src/mesa/main/APIspec.xml
@@ -1455,85 +1455,6 @@
                <param name="type" type="GLenum"/>
                <param name="pixels" type="const GLvoid *"/>
        </proto>
-
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-                       <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" 
category="EXT_texture_type_2_10_10_10_REV"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="OES_depth_texture">
-               <value name="GL_DEPTH_COMPONENT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_SHORT"/>
-                       <value name="GL_UNSIGNED_INT"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="OES_packed_depth_stencil">
-               <value name="GL_DEPTH_STENCIL_OES"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_INT_24_8_OES"/>
-               </desc>
-       </desc>
-
-       <desc name="format" category="EXT_texture_format_BGRA8888">
-               <value name="GL_BGRA_EXT"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="BindTexture">
@@ -1624,60 +1545,6 @@
                <param name="type" type="GLenum"/>
                <param name="pixels" type="const GLvoid *"/>
        </proto>
-
-       <desc name="format">
-               <value name="GL_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGB"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_5_6_5"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_RGBA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_UNSIGNED_SHORT_4_4_4_4"/>
-                       <value name="GL_UNSIGNED_SHORT_5_5_5_1"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-                       <value name="GL_UNSIGNED_INT_2_10_10_10_REV_EXT" 
category="EXT_texture_type_2_10_10_10_REV"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
-
-       <desc name="format">
-               <value name="GL_LUMINANCE_ALPHA"/>
-
-               <desc name="type" error="GL_INVALID_OPERATION">
-                       <value name="GL_UNSIGNED_BYTE"/>
-                       <value name="GL_FLOAT" category="OES_texture_float"/>
-                       <value name="GL_HALF_FLOAT_OES" 
category="OES_texture_half_float"/>
-               </desc>
-       </desc>
 </template>
 
 <template name="CopyTexSubImage3D">
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index e22881c..3cd9d40 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1927,6 +1927,23 @@ subtexture_error_check( struct gl_context *ctx, GLuint 
dimensions,
       return GL_TRUE;
    }
 
+   /* OpenGL ES 1.x and OpenGL ES 2.0 impose additional restrictions on the
+    * combinations of format and type that can be used.  Formats and types
+    * that require additional extensions (e.g., GL_FLOAT requires
+    * GL_OES_texture_float) are filtered elsewhere.
+    */
+   if (_mesa_is_gles(ctx) && !_mesa_is_gles3(ctx)) {
+      err = _mesa_es_error_check_format_and_type(format, type, dimensions);
+      if (err != GL_NO_ERROR) {
+         _mesa_error(ctx, err,
+                     "glTexSubImage%dD(format = %s, type = %s)",
+                     dimensions,
+                     _mesa_lookup_enum_by_nr(format),
+                     _mesa_lookup_enum_by_nr(type));
+         return GL_TRUE;
+      }
+   }
+
    err = _mesa_error_check_format_and_type(ctx, format, type);
    if (err != GL_NO_ERROR) {
       _mesa_error(ctx, err,

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to