mesa/es: Validate glTexParameter targets in Mesa code rather than the ES wrapper
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 25 Jul 2012 23:03:44 +0000 (16:03 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Thu, 23 Aug 2012 17:15:30 +0000 (10:15 -0700)
Ditto for glGetTexParameter targets.

v2: Add proper core-profile and GLES3 filtering.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
src/mesa/main/APIspec.xml
src/mesa/main/es1_conversion.c
src/mesa/main/texparam.c

index 6d7dbfdc535109e0b3a15bd86ea049c19e72d8ed..7acade2ce11d8184dcdb315b65cfb4af23383047 100644 (file)
                </vector>
        </proto>
 
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-               <value name="GL_TEXTURE_EXTERNAL_OES" category="OES_EGL_image_external"/>
-       </desc>
-
        <desc name="pname">
                <value name="GL_TEXTURE_WRAP_S"/>
                <value name="GL_TEXTURE_WRAP_T"/>
                <vector name="params" type="GLtype *" size="dynamic"/>
        </proto>
 
-       <desc name="target">
-               <value name="GL_TEXTURE_2D"/>
-               <value name="GL_TEXTURE_CUBE_MAP" category="GLES2.0"/>
-               <value name="GL_TEXTURE_CUBE_MAP_OES" category="OES_texture_cube_map"/>
-               <value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
-               <value name="GL_TEXTURE_EXTERNAL_OES" category="OES_EGL_image_external"/>
-       </desc>
-
        <desc name="pname">
                <value name="GL_TEXTURE_WRAP_S"/>
                <value name="GL_TEXTURE_WRAP_T"/>
index 0d9f5b4d58022494792c3c5c7279bb70004d0633..247a038dc8d40d3176c9217d109700b5ffb041ee 100644 (file)
@@ -1240,16 +1240,6 @@ _es_TexParameterx(GLenum target, GLenum pname, GLfixed param)
    GLfloat converted_param;
    bool convert_param_value = true;
 
-   switch(target) {
-   case GL_TEXTURE_2D:
-   case GL_TEXTURE_CUBE_MAP:
-   case GL_TEXTURE_EXTERNAL_OES:
-      break;
-   default:
-      _mesa_error(_mesa_get_current_context(), GL_INVALID_ENUM,
-                  "glTexParameterx(target=0x%x)", target);
-      return;
-   }
    switch(pname) {
    case GL_TEXTURE_WRAP_S:
    case GL_TEXTURE_WRAP_T:
index a0f736cd9138392433f112ec49005357c2bd322f..bb16228ee2ccdf0d8777375a1528a857a793735d 100644 (file)
@@ -131,35 +131,42 @@ get_texobj(struct gl_context *ctx, GLenum target, GLboolean get)
 
    switch (target) {
    case GL_TEXTURE_1D:
-      return texUnit->CurrentTex[TEXTURE_1D_INDEX];
+      if (_mesa_is_desktop_gl(ctx))
+         return texUnit->CurrentTex[TEXTURE_1D_INDEX];
+      break;
    case GL_TEXTURE_2D:
       return texUnit->CurrentTex[TEXTURE_2D_INDEX];
    case GL_TEXTURE_3D:
-      return texUnit->CurrentTex[TEXTURE_3D_INDEX];
+      if (ctx->API != API_OPENGLES)
+         return texUnit->CurrentTex[TEXTURE_3D_INDEX];
+      break;
    case GL_TEXTURE_CUBE_MAP:
       if (ctx->Extensions.ARB_texture_cube_map) {
          return texUnit->CurrentTex[TEXTURE_CUBE_INDEX];
       }
       break;
    case GL_TEXTURE_RECTANGLE_NV:
-      if (ctx->Extensions.NV_texture_rectangle) {
+      if (_mesa_is_desktop_gl(ctx)
+          && ctx->Extensions.NV_texture_rectangle) {
          return texUnit->CurrentTex[TEXTURE_RECT_INDEX];
       }
       break;
    case GL_TEXTURE_1D_ARRAY_EXT:
-      if (ctx->Extensions.MESA_texture_array ||
-          ctx->Extensions.EXT_texture_array) {
+      if (_mesa_is_desktop_gl(ctx)
+          && (ctx->Extensions.MESA_texture_array ||
+              ctx->Extensions.EXT_texture_array)) {
          return texUnit->CurrentTex[TEXTURE_1D_ARRAY_INDEX];
       }
       break;
    case GL_TEXTURE_2D_ARRAY_EXT:
-      if (ctx->Extensions.MESA_texture_array ||
-          ctx->Extensions.EXT_texture_array) {
+      if ((_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx))
+          && (ctx->Extensions.MESA_texture_array ||
+              ctx->Extensions.EXT_texture_array)) {
          return texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX];
       }
       break;
    case GL_TEXTURE_EXTERNAL_OES:
-      if (ctx->Extensions.OES_EGL_image_external) {
+      if (_mesa_is_gles(ctx) && ctx->Extensions.OES_EGL_image_external) {
          return texUnit->CurrentTex[TEXTURE_EXTERNAL_INDEX];
       }
       break;