added GetInteger/Float/Double/Boolean/Pointer device driver functions
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 8 Aug 2000 16:15:14 +0000 (16:15 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 8 Aug 2000 16:15:14 +0000 (16:15 +0000)
src/mesa/main/dd.h
src/mesa/main/get.c

index ad389df4a5d6da5e688e522c99fc754352c6f218..08bdf4b03cf8b1b9d719c09bb500553ba96f211a 100644 (file)
@@ -1,7 +1,8 @@
+/* $Id: dd.h,v 1.27 2000/08/08 16:15:14 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.3
+ * Version:  3.4
  * 
  * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
  * 
@@ -906,6 +907,16 @@ struct dd_function_table {
    void (*StencilMask)(GLcontext *ctx, GLuint mask);
    void (*StencilOp)(GLcontext *ctx, GLenum fail, GLenum zfail, GLenum zpass);
    void (*Viewport)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
+
+   /* State-query functions
+    *
+    * Return GL_TRUE if query was completed, GL_FALSE otherwise.
+    */
+   GLboolean (*GetBooleanv)(GLcontext *ctx, GLenum pname, GLboolean *result);
+   GLboolean (*GetDoublev)(GLcontext *ctx, GLenum pname, GLdouble *result);
+   GLboolean (*GetFloatv)(GLcontext *ctx, GLenum pname, GLfloat *result);
+   GLboolean (*GetIntegerv)(GLcontext *ctx, GLenum pname, GLint *result);
+   GLboolean (*GetPointerv)(GLcontext *ctx, GLenum pname, GLvoid **result);
 };
 
 
index 7e71d6528e1565964b626b292ce9f16363f7debd..29124d88b1cce79b0c781e92085b934e64be4a91 100644 (file)
@@ -1,8 +1,8 @@
-/* $Id: get.c,v 1.30 2000/07/21 15:41:08 brianp Exp $ */
+/* $Id: get.c,v 1.31 2000/08/08 16:15:14 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
- * Version:  3.3
+ * Version:  3.5
  * 
  * Copyright (C) 1999-2000  Brian Paul   All Rights Reserved.
  * 
@@ -92,9 +92,16 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
 
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetBooleanv");
 
+   if (!params)
+      return;
+
    if (MESA_VERBOSE & VERBOSE_API) 
       fprintf(stderr, "glGetBooleanv %s\n", gl_lookup_enum_by_nr(pname));
 
+   if (ctx->Driver.GetBooleanv
+       && (*ctx->Driver.GetBooleanv)(ctx, pname, params))
+      return;
+
    switch (pname) {
       case GL_ACCUM_RED_BITS:
          *params = INT_TO_BOOL(ctx->Visual->AccumRedBits);
@@ -1235,9 +1242,15 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
 
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetDoublev");
 
+   if (!params)
+      return;
+
    if (MESA_VERBOSE & VERBOSE_API) 
       fprintf(stderr, "glGetDoublev %s\n", gl_lookup_enum_by_nr(pname));
 
+   if (ctx->Driver.GetDoublev && (*ctx->Driver.GetDoublev)(ctx, pname, params))
+      return;
+
    switch (pname) {
       case GL_ACCUM_RED_BITS:
          *params = (GLdouble) ctx->Visual->AccumRedBits;
@@ -2378,9 +2391,15 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
 
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetFloatv");
 
+   if (!params)
+      return;
+
    if (MESA_VERBOSE & VERBOSE_API) 
       fprintf(stderr, "glGetFloatv %s\n", gl_lookup_enum_by_nr(pname));
 
+   if (ctx->Driver.GetFloatv && (*ctx->Driver.GetFloatv)(ctx, pname, params))
+      return;
+
    switch (pname) {
       case GL_ACCUM_RED_BITS:
          *params = (GLfloat) ctx->Visual->AccumRedBits;
@@ -3492,9 +3511,16 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
 
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetIntegerv");
 
+   if (!params)
+      return;
+
    if (MESA_VERBOSE & VERBOSE_API) 
       fprintf(stderr, "glGetIntegerv %s\n", gl_lookup_enum_by_nr(pname));
 
+   if (ctx->Driver.GetIntegerv
+       && (*ctx->Driver.GetIntegerv)(ctx, pname, params))
+      return;
+
    switch (pname) {
       case GL_ACCUM_RED_BITS:
          *params = (GLint) ctx->Visual->AccumRedBits;
@@ -4629,11 +4655,19 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
 {
    GET_CURRENT_CONTEXT(ctx);
    GLuint texUnit = ctx->Texture.CurrentUnit;
-   /*GLuint texTransformUnit = ctx->Texture.CurrentTransformUnit;*/
+
+   ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx, "glGetPointerv");
+
+   if (!params)
+      return;
 
    if (MESA_VERBOSE & VERBOSE_API) 
       fprintf(stderr, "glGetPointerv %s\n", gl_lookup_enum_by_nr(pname));
 
+   if (ctx->Driver.GetPointerv
+       && (*ctx->Driver.GetPointerv)(ctx, pname, params))
+      return;
+
    switch (pname) {
       case GL_VERTEX_ARRAY_POINTER:
          *params = ctx->Array.Vertex.Ptr;
@@ -4673,7 +4707,7 @@ _mesa_GetString( GLenum name )
    GET_CURRENT_CONTEXT(ctx);
    static const char *vendor = "Brian Paul";
    static const char *renderer = "Mesa";
-   static const char *version = "1.2 Mesa 3.3";
+   static const char *version = "1.2 Mesa 3.5 beta";
 
    ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH_WITH_RETVAL(ctx, "glGetString", 0);