Add support for OES_read_format. As soon as glext.h is updated with the
authorIan Romanick <idr@us.ibm.com>
Sat, 16 Oct 2004 01:16:54 +0000 (01:16 +0000)
committerIan Romanick <idr@us.ibm.com>
Sat, 16 Oct 2004 01:16:54 +0000 (01:16 +0000)
enums for this extension, the changes to gl.h can be removed.

include/GL/gl.h
progs/demos/readpix.c
src/mesa/main/context.c
src/mesa/main/extensions.c
src/mesa/main/get.c
src/mesa/main/mtypes.h

index 3f3f310f855eaaf024bbf9b2257d1b79b643e4b3..0bf4cd8097d85dd5ff14fea1a1813b54ec22e62d 100644 (file)
@@ -2226,6 +2226,17 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLen
 #endif /* GL_ATI_blend_equation_separate */
 
 
+/* As soon as the official glext.h is updated to include this, it will be 
+ * removed from here.
+ */
+#ifndef GL_OES_read_format
+#define GL_OES_read_format 1
+
+#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES   0x8B9A
+#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B
+
+#endif /* GL_OES_read_format */
+
 /**
  ** NOTE!!!!!  If you add new functions to this file, or update
  ** glext.h be sure to regenerate the gl_mangle.h file.  See comments
index 784e4c88d7b81c39112217cac8d35c602810d526..fc322f2e81124a09bef870fd09f489aa2c26c6f7 100644 (file)
@@ -207,6 +207,8 @@ Key( unsigned char key, int x, int y )
 static void
 Init( GLboolean ciMode )
 {
+   GLboolean have_read_format = GL_FALSE;
+
    printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
    printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
 
@@ -234,6 +236,20 @@ Init( GLboolean ciMode )
       }
    }
 
+#ifdef GL_OES_read_format
+   if ( glutExtensionSupported( "GL_OES_read_format" ) ) {
+      glGetIntegerv( GL_IMPLEMENTATION_COLOR_READ_TYPE_OES,   & ReadType );
+      glGetIntegerv( GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES, & ReadFormat );
+
+      have_read_format = GL_TRUE;
+   }
+#endif
+
+   printf( "GL_OES_read_format %ssupported.  "
+          "Using type / format = 0x%04x / 0x%04x\n",
+          (have_read_format) ? "" : "not ",
+          ReadType, ReadFormat );
+
    printf("Loaded %d by %d image\n", ImgWidth, ImgHeight );
 
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
index 44e3fcb9adc4724dbd9573b3fca6d9f2ddc0ee2a..f90751fd0926eb840c24bf83701588511655cb83 100644 (file)
@@ -1114,6 +1114,9 @@ _mesa_init_constants( GLcontext *ctx )
 
    ctx->Const.MaxDrawBuffers = MAX_DRAW_BUFFERS;
 
+   ctx->Const.ColorReadFormat = GL_RGBA;
+   ctx->Const.ColorReadType = GL_UNSIGNED_BYTE;
+
    /* sanity checks */
    ASSERT(ctx->Const.MaxTextureUnits == MAX2(ctx->Const.MaxTextureImageUnits, ctx->Const.MaxTextureCoordUnits));
 }
index a8003116fadb8b65273c1c443df34ede29c29da4..11c7ae553849027ce2f5d610c9fde627e1dbf9df 100644 (file)
@@ -141,6 +141,7 @@ static const struct {
    { ON,  "GL_NV_texgen_reflection",           F(NV_texgen_reflection) },
    { OFF, "GL_NV_vertex_program",              F(NV_vertex_program) },
    { OFF, "GL_NV_vertex_program1_1",           F(NV_vertex_program1_1) },
+   { ON,  "GL_OES_read_format",                F(OES_read_format) },
    { OFF, "GL_SGI_color_matrix",               F(SGI_color_matrix) },
    { OFF, "GL_SGI_color_table",                F(SGI_color_table) },
    { OFF, "GL_SGI_texture_color_table",        F(SGI_texture_color_table) },
index 6eac604ea51b71dce2ef7ce479ecd03b18432159..646e6ac20fc4d05a0fa6a1b5a4cd09bce617c73f 100644 (file)
@@ -1723,6 +1723,13 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
          }
          break;
 
+      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+         *params = INT_TO_BOOL(ctx->Const.ColorReadType);
+         return;
+      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+         *params = INT_TO_BOOL(ctx->Const.ColorReadFormat);
+         return;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
    }
@@ -3317,6 +3324,13 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
          }
          break;
 
+      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+         *params = (GLdouble) ctx->Const.ColorReadType;
+         return;
+      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+         *params = (GLdouble) ctx->Const.ColorReadFormat;
+         return;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetDoublev(pname=0x%x)", pname);
    }
@@ -4887,6 +4901,13 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
          }
          break;
 
+      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+         *params = (GLfloat) ctx->Const.ColorReadType;
+         return;
+      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+         *params = (GLfloat) ctx->Const.ColorReadFormat;
+         return;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(0x%x)", pname);
    }
@@ -6495,6 +6516,13 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
          }
          break;
 
+      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+         *params = ctx->Const.ColorReadType;
+         return;
+      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+         *params = ctx->Const.ColorReadFormat;
+         return;
+
       default:
          _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
    }
index 4086ef94bedb44e5361eaee7489959ad61754ebc..37b940dea9d18bfb3d3b8528b05f5eb277ab177a 100644 (file)
@@ -1913,6 +1913,9 @@ struct gl_constants
    GLboolean CheckArrayBounds;
    /* GL_ARB_draw_buffers */
    GLuint MaxDrawBuffers;
+   /* GL_OES_read_format */
+   GLenum ColorReadFormat;
+   GLenum ColorReadType;
 };
 
 
@@ -2015,6 +2018,7 @@ struct gl_extensions
    GLboolean NV_texture_rectangle;
    GLboolean NV_vertex_program;
    GLboolean NV_vertex_program1_1;
+   GLboolean OES_read_format;
    GLboolean SGI_color_matrix;
    GLboolean SGI_color_table;
    GLboolean SGI_texture_color_table;