more hooks for mga driver, including an immediate fastpath
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 30 Sep 1999 11:18:21 +0000 (11:18 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 30 Sep 1999 11:18:21 +0000 (11:18 +0000)
src/mesa/main/blend.c
src/mesa/main/dd.h
src/mesa/main/light.c
src/mesa/main/texobj.c

index deac05c489de883b4c352acf5f1ddf03a1332f18..6bf3581b8fb791085a4e8d09bb2310b54fc524b9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: blend.c,v 1.2 1999/08/19 15:48:01 brianp Exp $ */
+/* $Id: blend.c,v 1.3 1999/09/30 11:18:21 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -203,6 +203,11 @@ gl_BlendFuncSeparate( GLcontext *ctx, GLenum sfactorRGB, GLenum dfactorRGB,
 
    ctx->Color.BlendFunc = NULL;
    ctx->NewState |= NEW_RASTER_OPS;
+
+   if (ctx->Driver.BlendFuncSeparate) {
+      (*ctx->Driver.BlendFuncSeparate)( ctx, sfactorRGB, dfactorRGB,
+                                       sfactorA, dfactorA );
+   }
 }
 
 
@@ -243,6 +248,9 @@ void gl_BlendEquation( GLcontext *ctx, GLenum mode )
 
    ctx->Color.BlendFunc = NULL;
    ctx->NewState |= NEW_RASTER_OPS;
+   
+   if (ctx->Driver.BlendEquation)
+      ctx->Driver.BlendEquation( ctx, mode );
 }
 
 
index aae4d714733bb862d93560f0d27c6a7f6f2b97e5..64b031e4e10f608f91501df33eb9050cf497aff6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dd.h,v 1.2 1999/09/18 20:41:22 keithw Exp $ */
+/* $Id: dd.h,v 1.3 1999/09/30 11:18:21 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -563,6 +563,23 @@ struct dd_function_table {
     */
 
 
+   GLboolean (*IsTextureResident)( GLcontext *ctx, 
+                                  struct gl_texture_object *t );
+   /*
+    * Allows the driver to implement the AreTexturesResident tests without
+    * knowing about Mesa's internal hash tables for textures.
+    */
+
+   void (*PrioritizeTexture)( GLcontext *ctx, 
+                             struct gl_texture_object *t,
+                             GLclampf priority );
+   /*
+    * Notify driver of priority change for a texture.
+    */
+
+
+
+
    /***
     *** NEW in Mesa 3.x
     ***/
@@ -616,7 +633,11 @@ struct dd_function_table {
     * the driver's UpdateState() function must do.
     */
    void (*AlphaFunc)(GLcontext *ctx, GLenum func, GLclampf ref);
+   void (*BlendEquation)(GLcontext *ctx, GLenum mode);
    void (*BlendFunc)(GLcontext *ctx, GLenum sfactor, GLenum dfactor);
+   void (*BlendFuncSeparate)( GLcontext *ctx, GLenum sfactorRGB, 
+                             GLenum dfactorRGB, GLenum sfactorA,
+                             GLenum dfactorA );
    void (*ClearDepth)(GLcontext *ctx, GLclampd d);
    void (*CullFace)(GLcontext *ctx, GLenum mode);
    void (*FrontFace)(GLcontext *ctx, GLenum mode);
@@ -626,6 +647,9 @@ struct dd_function_table {
    void (*Enable)(GLcontext* ctx, GLenum cap, GLboolean state);
    void (*Fogfv)(GLcontext *ctx, GLenum pname, const GLfloat *params);
    void (*Hint)(GLcontext *ctx, GLenum target, GLenum mode);
+   void (*Lightfv)(GLcontext *ctx, GLenum light,
+                  GLenum pname, const GLfloat *params, GLint nparams );
+   void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params);
    void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode);
    void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
    void (*ShadeModel)(GLcontext *ctx, GLenum mode);
index 893438d4457143a460081c32ac9530d0186af36c..715084bee62cd523845424a624902d365066400b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: light.c,v 1.2 1999/09/18 20:41:23 keithw Exp $ */
+/* $Id: light.c,v 1.3 1999/09/30 11:18:22 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -168,6 +168,9 @@ void gl_Lightfv( GLcontext *ctx,
          break;
    }
 
+   if (ctx->Driver.Lightfv)
+      ctx->Driver.Lightfv( ctx, light, pname, params, nparams );
+
    ctx->NewState |= NEW_LIGHTING;
 }
 
@@ -328,6 +331,10 @@ void gl_LightModelfv( GLcontext *ctx, GLenum pname, const GLfloat *params )
          gl_error( ctx, GL_INVALID_ENUM, "glLightModel" );
          break;
    }
+
+   if (ctx->Driver.LightModelfv) 
+      ctx->Driver.LightModelfv( ctx, pname, params );
+
    ctx->NewState |= NEW_LIGHTING;
 }
 
index 78691d24f2c5687a3bb9770a8d559e6174e06460..d94618d34076e7af3789d2a94e0fce5d2f3ada9f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: texobj.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
+/* $Id: texobj.c,v 1.2 1999/09/30 11:18:22 keithw Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -507,6 +507,9 @@ void gl_PrioritizeTextures( GLcontext *ctx,
             HashLookup(ctx->Shared->TexObjects, texName[i]);
          if (t) {
             t->Priority = CLAMP( priorities[i], 0.0F, 1.0F );
+
+           if (ctx->Driver.PrioritizeTexture)
+              ctx->Driver.PrioritizeTexture( ctx, t, t->Priority );
          }
       }
    }
@@ -515,7 +518,7 @@ void gl_PrioritizeTextures( GLcontext *ctx,
 
 
 /*
- * Execute glAreTexturesResident
+ * Execute glAreTexturesResident 
  */
 GLboolean gl_AreTexturesResident( GLcontext *ctx, GLsizei n,
                                   const GLuint *texName,
@@ -541,8 +544,10 @@ GLboolean gl_AreTexturesResident( GLcontext *ctx, GLsizei n,
       t = (struct gl_texture_object *)
          HashLookup(ctx->Shared->TexObjects, texName[i]);
       if (t) {
-         /* we consider all valid texture objects to be resident */
-         residences[i] = GL_TRUE;
+        if (ctx->Driver.IsTextureResident)
+           residences[i] = ctx->Driver.IsTextureResident( ctx, t );
+        else 
+           residences[i] = GL_TRUE;
       }
       else {
          gl_error( ctx, GL_INVALID_VALUE, "glAreTexturesResident(textures)" );