[Mesa-dev] [PATCH 2/2] mesa: move _mesa_es_error_check_format_and_type() to glformats.c

Brian Paul brian.e.paul at gmail.com
Sat Sep 22 08:35:48 PDT 2012


From: Brian Paul <brianp at vmware.com>

Where the non-ES _mesa_error_check_format_and_type() function lives.
---
 src/mesa/main/glformats.c |   69 +++++++++++++++++++++++++++++++++++++++++++++
 src/mesa/main/glformats.h |    4 ++
 src/mesa/main/readpix.c   |    1 -
 src/mesa/main/teximage.c  |   65 ------------------------------------------
 src/mesa/main/teximage.h  |    3 --
 5 files changed, 73 insertions(+), 69 deletions(-)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index 047a613..04029c0 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -1372,3 +1372,72 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
    }
    return GL_NO_ERROR;
 }
+
+
+/**
+ * Do error checking of format/type combinations for OpenGL ES glReadPixels
+ * and glTex[Sub]Image.
+ * \return error code, or GL_NO_ERROR.
+ */
+GLenum
+_mesa_es_error_check_format_and_type(GLenum format, GLenum type,
+                                     unsigned dimensions)
+{
+   GLboolean type_valid = GL_TRUE;
+
+   switch (format) {
+   case GL_ALPHA:
+   case GL_LUMINANCE:
+   case GL_LUMINANCE_ALPHA:
+      type_valid = (type == GL_UNSIGNED_BYTE
+                    || type == GL_FLOAT
+                    || type == GL_HALF_FLOAT_OES);
+      break;
+
+   case GL_RGB:
+      type_valid = (type == GL_UNSIGNED_BYTE
+                    || type == GL_UNSIGNED_SHORT_5_6_5
+                    || type == GL_FLOAT
+                    || type == GL_HALF_FLOAT_OES);
+      break;
+
+   case GL_RGBA:
+      type_valid = (type == GL_UNSIGNED_BYTE
+                    || type == GL_UNSIGNED_SHORT_4_4_4_4
+                    || type == GL_UNSIGNED_SHORT_5_5_5_1
+                    || type == GL_FLOAT
+                    || type == GL_HALF_FLOAT_OES
+                    || type == GL_UNSIGNED_INT_2_10_10_10_REV);
+      break;
+
+   case GL_DEPTH_COMPONENT:
+      /* This format is filtered against invalid dimensionalities elsewhere.
+       */
+      type_valid = (type == GL_UNSIGNED_SHORT
+                    || type == GL_UNSIGNED_INT);
+      break;
+
+   case GL_DEPTH_STENCIL:
+      /* This format is filtered against invalid dimensionalities elsewhere.
+       */
+      type_valid = (type == GL_UNSIGNED_INT_24_8);
+      break;
+
+   case GL_BGRA_EXT:
+      type_valid = (type == GL_UNSIGNED_BYTE);
+
+      /* This feels like a bug in the EXT_texture_format_BGRA8888 spec, but
+       * the format does not appear to be allowed for 3D textures in OpenGL
+       * ES.
+       */
+      if (dimensions != 2)
+         return GL_INVALID_VALUE;
+
+      break;
+
+   default:
+      return GL_INVALID_VALUE;
+   }
+
+   return type_valid ? GL_NO_ERROR : GL_INVALID_OPERATION;
+}
diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h
index 24fbda9..e5b63a9 100644
--- a/src/mesa/main/glformats.h
+++ b/src/mesa/main/glformats.h
@@ -98,6 +98,10 @@ extern GLenum
 _mesa_error_check_format_and_type(const struct gl_context *ctx,
                                   GLenum format, GLenum type);
 
+extern GLenum
+_mesa_es_error_check_format_and_type(GLenum format, GLenum type,
+                                     unsigned dimensions);
+
 
 #ifdef __cplusplus
 }
diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c
index 1793095..f6680c9 100644
--- a/src/mesa/main/readpix.c
+++ b/src/mesa/main/readpix.c
@@ -38,7 +38,6 @@
 #include "state.h"
 #include "glformats.h"
 #include "fbobject.h"
-#include "teximage.h"
 
 
 /**
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 90d64c7..0770445 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1681,71 +1681,6 @@ mutable_tex_object(struct gl_context *ctx, GLenum target)
 }
 
 
-GLenum
-_mesa_es_error_check_format_and_type(GLenum format, GLenum type,
-                                     unsigned dimensions)
-{
-   bool type_valid = true;
-
-   switch (format) {
-   case GL_ALPHA:
-   case GL_LUMINANCE:
-   case GL_LUMINANCE_ALPHA:
-      type_valid = (type == GL_UNSIGNED_BYTE
-                    || type == GL_FLOAT
-                    || type == GL_HALF_FLOAT_OES);
-      break;
-
-   case GL_RGB:
-      type_valid = (type == GL_UNSIGNED_BYTE
-                    || type == GL_UNSIGNED_SHORT_5_6_5
-                    || type == GL_FLOAT
-                    || type == GL_HALF_FLOAT_OES);
-      break;
-
-   case GL_RGBA:
-      type_valid = (type == GL_UNSIGNED_BYTE
-                    || type == GL_UNSIGNED_SHORT_4_4_4_4
-                    || type == GL_UNSIGNED_SHORT_5_5_5_1
-                    || type == GL_FLOAT
-                    || type == GL_HALF_FLOAT_OES
-                    || type == GL_UNSIGNED_INT_2_10_10_10_REV);
-      break;
-
-   case GL_DEPTH_COMPONENT:
-      /* This format is filtered against invalid dimensionalities elsewhere.
-       */
-      type_valid = (type == GL_UNSIGNED_SHORT
-                    || type == GL_UNSIGNED_INT);
-      break;
-
-   case GL_DEPTH_STENCIL:
-      /* This format is filtered against invalid dimensionalities elsewhere.
-       */
-      type_valid = (type == GL_UNSIGNED_INT_24_8);
-      break;
-
-   case GL_BGRA_EXT:
-      type_valid = (type == GL_UNSIGNED_BYTE);
-
-      /* This feels like a bug in the EXT_texture_format_BGRA8888 spec, but
-       * the format does not appear to be allowed for 3D textures in OpenGL
-       * ES.
-       */
-      if (dimensions != 2)
-         return GL_INVALID_VALUE;
-
-      break;
-
-   default:
-      return GL_INVALID_VALUE;
-   }
-
-   return type_valid ? GL_NO_ERROR : GL_INVALID_OPERATION;
-}
-
-
-
 /**
  * Return expected size of a compressed texture.
  */
diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
index c7c32d8..e1b15d2 100644
--- a/src/mesa/main/teximage.h
+++ b/src/mesa/main/teximage.h
@@ -138,9 +138,6 @@ _mesa_tex_target_to_face(GLenum target);
 extern GLint
 _mesa_get_texture_dimensions(GLenum target);
 
-extern GLenum
-_mesa_es_error_check_format_and_type(GLenum format, GLenum type,
-                                     unsigned dimensions);
 
 extern GLboolean
 _mesa_legal_texture_dimensions(struct gl_context *ctx, GLenum target,
-- 
1.7.4.1



More information about the mesa-dev mailing list