On 12/10/2013 06:13 AM, Pi Tabred wrote:
  - change storage class from static to extern
  - rename validate_texbuffer_format to _mesa_validate_texbuffer_format
---
  src/mesa/main/teximage.c | 398 ++++++++++++++++++++++++-----------------------
  src/mesa/main/teximage.h |   4 +
  2 files changed, 206 insertions(+), 196 deletions(-)

diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 7ec3e20..6e04ba5 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -1519,6 +1519,207 @@ _mesa_legal_texture_dimensions(struct gl_context *ctx, 
GLenum target,
  }


+static gl_format
+get_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
+{
+   switch (internalFormat) {
+   case GL_ALPHA8:
+      return MESA_FORMAT_A8;
+   case GL_ALPHA16:
+      return MESA_FORMAT_A16;
+   case GL_ALPHA16F_ARB:
+      return MESA_FORMAT_ALPHA_FLOAT16;
+   case GL_ALPHA32F_ARB:
+      return MESA_FORMAT_ALPHA_FLOAT32;
+   case GL_ALPHA8I_EXT:
+      return MESA_FORMAT_ALPHA_INT8;
+   case GL_ALPHA16I_EXT:
+      return MESA_FORMAT_ALPHA_INT16;
+   case GL_ALPHA32I_EXT:
+      return MESA_FORMAT_ALPHA_INT32;
+   case GL_ALPHA8UI_EXT:
+      return MESA_FORMAT_ALPHA_UINT8;
+   case GL_ALPHA16UI_EXT:
+      return MESA_FORMAT_ALPHA_UINT16;
+   case GL_ALPHA32UI_EXT:
+      return MESA_FORMAT_ALPHA_UINT32;
+   case GL_LUMINANCE8:
+      return MESA_FORMAT_L8;
+   case GL_LUMINANCE16:
+      return MESA_FORMAT_L16;
+   case GL_LUMINANCE16F_ARB:
+      return MESA_FORMAT_LUMINANCE_FLOAT16;
+   case GL_LUMINANCE32F_ARB:
+      return MESA_FORMAT_LUMINANCE_FLOAT32;
+   case GL_LUMINANCE8I_EXT:
+      return MESA_FORMAT_LUMINANCE_INT8;
+   case GL_LUMINANCE16I_EXT:
+      return MESA_FORMAT_LUMINANCE_INT16;
+   case GL_LUMINANCE32I_EXT:
+      return MESA_FORMAT_LUMINANCE_INT32;
+   case GL_LUMINANCE8UI_EXT:
+      return MESA_FORMAT_LUMINANCE_UINT8;
+   case GL_LUMINANCE16UI_EXT:
+      return MESA_FORMAT_LUMINANCE_UINT16;
+   case GL_LUMINANCE32UI_EXT:
+      return MESA_FORMAT_LUMINANCE_UINT32;
+   case GL_LUMINANCE8_ALPHA8:
+      return MESA_FORMAT_AL88;
+   case GL_LUMINANCE16_ALPHA16:
+      return MESA_FORMAT_AL1616;
+   case GL_LUMINANCE_ALPHA16F_ARB:
+      return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16;
+   case GL_LUMINANCE_ALPHA32F_ARB:
+      return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32;
+   case GL_LUMINANCE_ALPHA8I_EXT:
+      return MESA_FORMAT_LUMINANCE_ALPHA_INT8;
+   case GL_LUMINANCE_ALPHA16I_EXT:
+      return MESA_FORMAT_LUMINANCE_ALPHA_INT8;
+   case GL_LUMINANCE_ALPHA32I_EXT:
+      return MESA_FORMAT_LUMINANCE_ALPHA_INT16;
+   case GL_LUMINANCE_ALPHA8UI_EXT:
+      return MESA_FORMAT_LUMINANCE_ALPHA_UINT8;
+   case GL_LUMINANCE_ALPHA16UI_EXT:
+      return MESA_FORMAT_LUMINANCE_ALPHA_UINT16;
+   case GL_LUMINANCE_ALPHA32UI_EXT:
+      return MESA_FORMAT_LUMINANCE_ALPHA_UINT32;
+   case GL_INTENSITY8:
+      return MESA_FORMAT_I8;
+   case GL_INTENSITY16:
+      return MESA_FORMAT_I16;
+   case GL_INTENSITY16F_ARB:
+      return MESA_FORMAT_INTENSITY_FLOAT16;
+   case GL_INTENSITY32F_ARB:
+      return MESA_FORMAT_INTENSITY_FLOAT32;
+   case GL_INTENSITY8I_EXT:
+      return MESA_FORMAT_INTENSITY_INT8;
+   case GL_INTENSITY16I_EXT:
+      return MESA_FORMAT_INTENSITY_INT16;
+   case GL_INTENSITY32I_EXT:
+      return MESA_FORMAT_INTENSITY_INT32;
+   case GL_INTENSITY8UI_EXT:
+      return MESA_FORMAT_INTENSITY_UINT8;
+   case GL_INTENSITY16UI_EXT:
+      return MESA_FORMAT_INTENSITY_UINT16;
+   case GL_INTENSITY32UI_EXT:
+      return MESA_FORMAT_INTENSITY_UINT32;
+   case GL_RGBA8:
+      return MESA_FORMAT_RGBA8888_REV;
+   case GL_RGBA16:
+      return MESA_FORMAT_RGBA_16;
+   case GL_RGBA16F_ARB:
+      return MESA_FORMAT_RGBA_FLOAT16;
+   case GL_RGBA32F_ARB:
+      return MESA_FORMAT_RGBA_FLOAT32;
+   case GL_RGBA8I_EXT:
+      return MESA_FORMAT_RGBA_INT8;
+   case GL_RGBA16I_EXT:
+      return MESA_FORMAT_RGBA_INT16;
+   case GL_RGBA32I_EXT:
+      return MESA_FORMAT_RGBA_INT32;
+   case GL_RGBA8UI_EXT:
+      return MESA_FORMAT_RGBA_UINT8;
+   case GL_RGBA16UI_EXT:
+      return MESA_FORMAT_RGBA_UINT16;
+   case GL_RGBA32UI_EXT:
+      return MESA_FORMAT_RGBA_UINT32;
+
+   case GL_RG8:
+      return MESA_FORMAT_GR88;
+   case GL_RG16:
+      return MESA_FORMAT_GR1616;
+   case GL_RG16F:
+      return MESA_FORMAT_RG_FLOAT16;
+   case GL_RG32F:
+      return MESA_FORMAT_RG_FLOAT32;
+   case GL_RG8I:
+      return MESA_FORMAT_RG_INT8;
+   case GL_RG16I:
+      return MESA_FORMAT_RG_INT16;
+   case GL_RG32I:
+      return MESA_FORMAT_RG_INT32;
+   case GL_RG8UI:
+      return MESA_FORMAT_RG_UINT8;
+   case GL_RG16UI:
+      return MESA_FORMAT_RG_UINT16;
+   case GL_RG32UI:
+      return MESA_FORMAT_RG_UINT32;
+
+   case GL_R8:
+      return MESA_FORMAT_R8;
+   case GL_R16:
+      return MESA_FORMAT_R16;
+   case GL_R16F:
+      return MESA_FORMAT_R_FLOAT16;
+   case GL_R32F:
+      return MESA_FORMAT_R_FLOAT32;
+   case GL_R8I:
+      return MESA_FORMAT_R_INT8;
+   case GL_R16I:
+      return MESA_FORMAT_R_INT16;
+   case GL_R32I:
+      return MESA_FORMAT_R_INT32;
+   case GL_R8UI:
+      return MESA_FORMAT_R_UINT8;
+   case GL_R16UI:
+      return MESA_FORMAT_R_UINT16;
+   case GL_R32UI:
+      return MESA_FORMAT_R_UINT32;
+
+   case GL_RGB32F:
+      return MESA_FORMAT_RGB_FLOAT32;
+   case GL_RGB32UI:
+      return MESA_FORMAT_RGB_UINT32;
+   case GL_RGB32I:
+      return MESA_FORMAT_RGB_INT32;
+
+   default:
+      return MESA_FORMAT_NONE;
+   }
+}
+
+
+/**
+ * Check if the chosen internalformat is supported.
+ * The target and level parameters will have already been validated.
+ * \return the corresponding gl_format if yes, MESA_FORMAT_NONE otherwise.
+ */
+gl_format
+_mesa_validate_texbuffer_format(const struct gl_context *ctx, GLenum 
internalFormat)
+{
+   gl_format format = get_texbuffer_format(ctx, internalFormat);
+   GLenum datatype;
+
+   if (format == MESA_FORMAT_NONE)
+      return MESA_FORMAT_NONE;
+
+   datatype = _mesa_get_format_datatype(format);
+   if (datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float)
+      return MESA_FORMAT_NONE;
+
+   if (datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel)
+      return MESA_FORMAT_NONE;
+
+   /* The GL_ARB_texture_rg and GL_ARB_texture_buffer_object specs don't make
+    * any mention of R/RG formats, but they appear in the GL 3.1 core
+    * specification.
+    */
+   if (ctx->Version <= 30) {
+      GLenum base_format = _mesa_get_format_base_format(format);
+
+      if (base_format == GL_R || base_format == GL_RG)
+        return MESA_FORMAT_NONE;
+   }
+
+   if (!ctx->Extensions.ARB_texture_buffer_object_rgb32) {
+      GLenum base_format = _mesa_get_format_base_format(format);
+      if (base_format == GL_RGB)
+         return MESA_FORMAT_NONE;
+   }
+   return format;
+}
+
+
  /**
   * Do error checking of xoffset, yoffset, zoffset, width, height and depth
   * for glTexSubImage, glCopyTexSubImage and glCompressedTexSubImage.
@@ -3876,201 +4077,6 @@ _mesa_CompressedTexSubImage3D(GLenum target, GLint 
level, GLint xoffset,
                              width, height, depth, format, imageSize, data);
  }

-static gl_format
-get_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
-{
-   switch (internalFormat) {
-   case GL_ALPHA8:
-      return MESA_FORMAT_A8;
-   case GL_ALPHA16:
-      return MESA_FORMAT_A16;
-   case GL_ALPHA16F_ARB:
-      return MESA_FORMAT_ALPHA_FLOAT16;
-   case GL_ALPHA32F_ARB:
-      return MESA_FORMAT_ALPHA_FLOAT32;
-   case GL_ALPHA8I_EXT:
-      return MESA_FORMAT_ALPHA_INT8;
-   case GL_ALPHA16I_EXT:
-      return MESA_FORMAT_ALPHA_INT16;
-   case GL_ALPHA32I_EXT:
-      return MESA_FORMAT_ALPHA_INT32;
-   case GL_ALPHA8UI_EXT:
-      return MESA_FORMAT_ALPHA_UINT8;
-   case GL_ALPHA16UI_EXT:
-      return MESA_FORMAT_ALPHA_UINT16;
-   case GL_ALPHA32UI_EXT:
-      return MESA_FORMAT_ALPHA_UINT32;
-   case GL_LUMINANCE8:
-      return MESA_FORMAT_L8;
-   case GL_LUMINANCE16:
-      return MESA_FORMAT_L16;
-   case GL_LUMINANCE16F_ARB:
-      return MESA_FORMAT_LUMINANCE_FLOAT16;
-   case GL_LUMINANCE32F_ARB:
-      return MESA_FORMAT_LUMINANCE_FLOAT32;
-   case GL_LUMINANCE8I_EXT:
-      return MESA_FORMAT_LUMINANCE_INT8;
-   case GL_LUMINANCE16I_EXT:
-      return MESA_FORMAT_LUMINANCE_INT16;
-   case GL_LUMINANCE32I_EXT:
-      return MESA_FORMAT_LUMINANCE_INT32;
-   case GL_LUMINANCE8UI_EXT:
-      return MESA_FORMAT_LUMINANCE_UINT8;
-   case GL_LUMINANCE16UI_EXT:
-      return MESA_FORMAT_LUMINANCE_UINT16;
-   case GL_LUMINANCE32UI_EXT:
-      return MESA_FORMAT_LUMINANCE_UINT32;
-   case GL_LUMINANCE8_ALPHA8:
-      return MESA_FORMAT_AL88;
-   case GL_LUMINANCE16_ALPHA16:
-      return MESA_FORMAT_AL1616;
-   case GL_LUMINANCE_ALPHA16F_ARB:
-      return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16;
-   case GL_LUMINANCE_ALPHA32F_ARB:
-      return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32;
-   case GL_LUMINANCE_ALPHA8I_EXT:
-      return MESA_FORMAT_LUMINANCE_ALPHA_INT8;
-   case GL_LUMINANCE_ALPHA16I_EXT:
-      return MESA_FORMAT_LUMINANCE_ALPHA_INT8;
-   case GL_LUMINANCE_ALPHA32I_EXT:
-      return MESA_FORMAT_LUMINANCE_ALPHA_INT16;
-   case GL_LUMINANCE_ALPHA8UI_EXT:
-      return MESA_FORMAT_LUMINANCE_ALPHA_UINT8;
-   case GL_LUMINANCE_ALPHA16UI_EXT:
-      return MESA_FORMAT_LUMINANCE_ALPHA_UINT16;
-   case GL_LUMINANCE_ALPHA32UI_EXT:
-      return MESA_FORMAT_LUMINANCE_ALPHA_UINT32;
-   case GL_INTENSITY8:
-      return MESA_FORMAT_I8;
-   case GL_INTENSITY16:
-      return MESA_FORMAT_I16;
-   case GL_INTENSITY16F_ARB:
-      return MESA_FORMAT_INTENSITY_FLOAT16;
-   case GL_INTENSITY32F_ARB:
-      return MESA_FORMAT_INTENSITY_FLOAT32;
-   case GL_INTENSITY8I_EXT:
-      return MESA_FORMAT_INTENSITY_INT8;
-   case GL_INTENSITY16I_EXT:
-      return MESA_FORMAT_INTENSITY_INT16;
-   case GL_INTENSITY32I_EXT:
-      return MESA_FORMAT_INTENSITY_INT32;
-   case GL_INTENSITY8UI_EXT:
-      return MESA_FORMAT_INTENSITY_UINT8;
-   case GL_INTENSITY16UI_EXT:
-      return MESA_FORMAT_INTENSITY_UINT16;
-   case GL_INTENSITY32UI_EXT:
-      return MESA_FORMAT_INTENSITY_UINT32;
-   case GL_RGBA8:
-      return MESA_FORMAT_RGBA8888_REV;
-   case GL_RGBA16:
-      return MESA_FORMAT_RGBA_16;
-   case GL_RGBA16F_ARB:
-      return MESA_FORMAT_RGBA_FLOAT16;
-   case GL_RGBA32F_ARB:
-      return MESA_FORMAT_RGBA_FLOAT32;
-   case GL_RGBA8I_EXT:
-      return MESA_FORMAT_RGBA_INT8;
-   case GL_RGBA16I_EXT:
-      return MESA_FORMAT_RGBA_INT16;
-   case GL_RGBA32I_EXT:
-      return MESA_FORMAT_RGBA_INT32;
-   case GL_RGBA8UI_EXT:
-      return MESA_FORMAT_RGBA_UINT8;
-   case GL_RGBA16UI_EXT:
-      return MESA_FORMAT_RGBA_UINT16;
-   case GL_RGBA32UI_EXT:
-      return MESA_FORMAT_RGBA_UINT32;
-
-   case GL_RG8:
-      return MESA_FORMAT_GR88;
-   case GL_RG16:
-      return MESA_FORMAT_GR1616;
-   case GL_RG16F:
-      return MESA_FORMAT_RG_FLOAT16;
-   case GL_RG32F:
-      return MESA_FORMAT_RG_FLOAT32;
-   case GL_RG8I:
-      return MESA_FORMAT_RG_INT8;
-   case GL_RG16I:
-      return MESA_FORMAT_RG_INT16;
-   case GL_RG32I:
-      return MESA_FORMAT_RG_INT32;
-   case GL_RG8UI:
-      return MESA_FORMAT_RG_UINT8;
-   case GL_RG16UI:
-      return MESA_FORMAT_RG_UINT16;
-   case GL_RG32UI:
-      return MESA_FORMAT_RG_UINT32;
-
-   case GL_R8:
-      return MESA_FORMAT_R8;
-   case GL_R16:
-      return MESA_FORMAT_R16;
-   case GL_R16F:
-      return MESA_FORMAT_R_FLOAT16;
-   case GL_R32F:
-      return MESA_FORMAT_R_FLOAT32;
-   case GL_R8I:
-      return MESA_FORMAT_R_INT8;
-   case GL_R16I:
-      return MESA_FORMAT_R_INT16;
-   case GL_R32I:
-      return MESA_FORMAT_R_INT32;
-   case GL_R8UI:
-      return MESA_FORMAT_R_UINT8;
-   case GL_R16UI:
-      return MESA_FORMAT_R_UINT16;
-   case GL_R32UI:
-      return MESA_FORMAT_R_UINT32;
-
-   case GL_RGB32F:
-      return MESA_FORMAT_RGB_FLOAT32;
-   case GL_RGB32UI:
-      return MESA_FORMAT_RGB_UINT32;
-   case GL_RGB32I:
-      return MESA_FORMAT_RGB_INT32;
-
-   default:
-      return MESA_FORMAT_NONE;
-   }
-}
-
-
-static gl_format
-validate_texbuffer_format(const struct gl_context *ctx, GLenum internalFormat)
-{
-   gl_format format = get_texbuffer_format(ctx, internalFormat);
-   GLenum datatype;
-
-   if (format == MESA_FORMAT_NONE)
-      return MESA_FORMAT_NONE;
-
-   datatype = _mesa_get_format_datatype(format);
-   if (datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float)
-      return MESA_FORMAT_NONE;
-
-   if (datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel)
-      return MESA_FORMAT_NONE;
-
-   /* The GL_ARB_texture_rg and GL_ARB_texture_buffer_object specs don't make
-    * any mention of R/RG formats, but they appear in the GL 3.1 core
-    * specification.
-    */
-   if (ctx->Version <= 30) {
-      GLenum base_format = _mesa_get_format_base_format(format);
-
-      if (base_format == GL_R || base_format == GL_RG)
-        return MESA_FORMAT_NONE;
-   }
-
-   if (!ctx->Extensions.ARB_texture_buffer_object_rgb32) {
-      GLenum base_format = _mesa_get_format_base_format(format);
-      if (base_format == GL_RGB)
-         return MESA_FORMAT_NONE;
-   }
-   return format;
-}
-

  static void
  texbufferrange(struct gl_context *ctx, GLenum target, GLenum internalFormat,
@@ -4087,7 +4093,7 @@ texbufferrange(struct gl_context *ctx, GLenum target, 
GLenum internalFormat,
        return;
     }

-   format = validate_texbuffer_format(ctx, internalFormat);
+   format = _mesa_validate_texbuffer_format(ctx, internalFormat);
     if (format == MESA_FORMAT_NONE) {
        _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(internalFormat 0x%x)",
                    internalFormat);
diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h
index 792383d..0fa8649 100644
--- a/src/mesa/main/teximage.h
+++ b/src/mesa/main/teximage.h
@@ -147,6 +147,10 @@ _mesa_legal_texture_dimensions(struct gl_context *ctx, 
GLenum target,
                                 GLint level, GLint width, GLint height,
                                 GLint depth, GLint border);

+extern gl_format
+_mesa_validate_texbuffer_format(const struct gl_context *ctx,
+                                GLenum internalFormat);
+
  /**
   * Lock a texture for updating.  See also _mesa_lock_context_textures().
   */


AFAICT, this is just renaming validate_texbuffer_format() to _mesa_validate_texbuffer_format(), plus a lot of code movement. Why the code movement?

-Brian

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

Reply via email to