remove the XFree86 ID line
[mesa.git] / src / mesa / drivers / dri / common / stenciltmp.h
index 285d8e5291731d1fedd3850839fbc15d520efb97..ffcb1a4c1ee3292f03a17afc3f326c248904a943 100644 (file)
 #endif
 
 static void TAG(WriteStencilSpan)( GLcontext *ctx,
+                                   struct gl_renderbuffer *rb,
                                   GLuint n, GLint x, GLint y,
-                                  const GLstencil *stencil, 
-                                  const GLubyte mask[] )
+                                  const void *values, const GLubyte mask[] )
 {
    HW_WRITE_LOCK()
       {
+         const GLubyte *stencil = (const GLubyte *) values;
         GLint x1;
         GLint n1;
         LOCAL_STENCIL_VARS;
@@ -57,16 +58,58 @@ static void TAG(WriteStencilSpan)( GLcontext *ctx,
 }
 
 
+static void TAG(WriteMonoStencilSpan)( GLcontext *ctx,
+                                       struct gl_renderbuffer *rb,
+                                       GLuint n, GLint x, GLint y,
+                                       const void *value,
+                                       const GLubyte mask[] )
+{
+   HW_WRITE_LOCK()
+      {
+         const GLubyte stencil = *((const GLubyte *) value);
+        GLint x1;
+        GLint n1;
+        LOCAL_STENCIL_VARS;
+
+        y = Y_FLIP(y);
+
+        HW_CLIPLOOP() 
+           {
+              GLint i = 0;
+              CLIPSPAN(x,y,n,x1,n1,i);
+
+              if (DBG) fprintf(stderr, "WriteStencilSpan %d..%d (x1 %d)\n",
+                               (int)i, (int)n1, (int)x1);
+
+              if (mask)
+              {
+                 for (;n1>0;i++,x1++,n1--)
+                    if (mask[i])
+                       WRITE_STENCIL( x1, y, stencil );
+              }
+              else
+              {
+                 for (;n1>0;i++,x1++,n1--)
+                    WRITE_STENCIL( x1, y, stencil );
+              }
+           }
+        HW_ENDCLIPLOOP();
+      }
+   HW_WRITE_UNLOCK();
+}
+
+
+
 static void TAG(WriteStencilPixels)( GLcontext *ctx,
-                                    GLuint n, 
-                                    const GLint x[], 
-                                    const GLint y[],
-                                    const GLstencil stencil[], 
-                                    const GLubyte mask[] )
+                                     struct gl_renderbuffer *rb,
+                                    GLuint n,
+                                    const GLint x[], const GLint y[],
+                                    const void *values, const GLubyte mask[] )
 {
    HW_WRITE_LOCK()
       {
-        GLint i;
+         const GLubyte *stencil = (const GLubyte *) values;
+        GLuint i;
         LOCAL_STENCIL_VARS;
 
         if (DBG) fprintf(stderr, "WriteStencilPixels\n");
@@ -91,11 +134,13 @@ static void TAG(WriteStencilPixels)( GLcontext *ctx,
 /* Read stencil spans and pixels
  */
 static void TAG(ReadStencilSpan)( GLcontext *ctx,
+                                  struct gl_renderbuffer *rb,
                                  GLuint n, GLint x, GLint y,
-                                 GLstencil stencil[])
+                                 void *values)
 {
    HW_READ_LOCK()
       {
+         GLubyte *stencil = (GLubyte *) values;
         GLint x1,n1;
         LOCAL_STENCIL_VARS;
 
@@ -115,13 +160,15 @@ static void TAG(ReadStencilSpan)( GLcontext *ctx,
    HW_READ_UNLOCK();
 }
 
-static void TAG(ReadStencilPixels)( GLcontext *ctx, GLuint n, 
-                                   const GLint x[], const GLint y[],
-                                   GLstencil stencil[] )
+static void TAG(ReadStencilPixels)( GLcontext *ctx,
+                                    struct gl_renderbuffer *rb,
+                                    GLuint n, const GLint x[], const GLint y[],
+                                   void *values )
 {
    HW_READ_LOCK()
       {
-        GLint i;
+         GLubyte *stencil = (GLubyte *) values;
+        GLuint i;
         LOCAL_STENCIL_VARS;
 
         if (DBG) fprintf(stderr, "ReadStencilPixels\n");