st/mesa: add missing case for PIPE_FORMAT_B8G8R8A8_UNORM
[mesa.git] / src / mesa / swrast / s_spantemp.h
index a60d45fb9012d6e3cc28bfbc179b1e6434404031..bab2ca7378f326fbec2f7aecb64d42f1f773084f 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.3
+ * Version:  6.5.1
  *
- * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
+ * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -29,8 +29,9 @@
  * and PutMonoValues functions.
  *
  * Define the following macros before including this file:
- *   NAME(PREFIX)  to generate the function name
- *   FORMAT  must be either GL_RGBA, GL_RGBA8 or GL_COLOR_INDEX8_EXT
+ *   NAME(BASE)  to generate the function name (i.e. add prefix or suffix)
+ *   RB_TYPE  the renderbuffer DataType
+ *   CI_MODE  if set, color index mode, else RGBA
  *   SPAN_VARS  to declare any local variables
  *   INIT_PIXEL_PTR(P, X, Y)  to initialize a pointer to a pixel
  *   INC_PIXEL_PTR(P)  to increment a pixel pointer by one pixel
  * ignored otherwise.
  */
 
-#include "macros.h"
+#include "main/macros.h"
+
+
+#ifdef CI_MODE
+#define RB_COMPONENTS 1
+#elif !defined(RB_COMPONENTS)
+#define RB_COMPONENTS 4
+#endif
 
 
 static void
@@ -52,14 +60,10 @@ NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-#if FORMAT == GL_RGBA
-   GLchan (*dest)[4] = (GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
-   GLubyte (*dest)[4] = (GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
-   GLubyte *dest = (GLubyte *) values;
+#ifdef CI_MODE
+   RB_TYPE *dest = (RB_TYPE *) values;
 #else
-#error FORMAT must be set!!!!
+   RB_TYPE (*dest)[RB_COMPONENTS] = (RB_TYPE (*)[RB_COMPONENTS]) values;
 #endif
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
@@ -67,8 +71,10 @@ NAME(get_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
       FETCH_PIXEL(dest[i], pixel);
       INC_PIXEL_PTR(pixel);
    }
+   (void) rb;
 }
 
+
 static void
 NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
                   GLuint count, const GLint x[], const GLint y[], void *values )
@@ -76,18 +82,17 @@ NAME(get_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-#if FORMAT == GL_RGBA
-   GLchan (*dest)[4] = (GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
-   GLubyte (*dest)[4] = (GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
-   GLubyte *dest = (GLubyte *) values;
+#ifdef CI_MODE
+   RB_TYPE *dest = (RB_TYPE *) values;
+#else
+   RB_TYPE (*dest)[RB_COMPONENTS] = (RB_TYPE (*)[RB_COMPONENTS]) values;
 #endif
    GLuint i;
    for (i = 0; i < count; i++) {
       INIT_PIXEL_PTR(pixel, x[i], y[i]);
       FETCH_PIXEL(dest[i], pixel);
    }
+   (void) rb;
 }
 
 
@@ -99,13 +104,7 @@ NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-#if FORMAT == GL_RGBA
-   const GLchan (*src)[4] = (const GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
-   const GLubyte (*src)[4] = (const GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
-   const GLubyte (*src)[1] = (const GLubyte (*)[1]) values;
-#endif
+   const RB_TYPE (*src)[RB_COMPONENTS] = (const RB_TYPE (*)[RB_COMPONENTS]) values;
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
    if (mask) {
@@ -122,38 +121,37 @@ NAME(put_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
          INC_PIXEL_PTR(pixel);
       }
    }
+   (void) rb;
 }
 
-#if 00
+
+#if !defined(CI_MODE)
 static void
-NAME(write_rgb_span)( const GLcontext *ctx, struct gl_renderbuffer *rb,
-                      GLuint count, GLint x, GLint y,
-                      CONST GLchan rgb[][3], const GLubyte mask[] )
+NAME(put_row_rgb)( GLcontext *ctx, struct gl_renderbuffer *rb,
+                   GLuint count, GLint x, GLint y,
+                   const void *values, const GLubyte mask[] )
 {
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
+   const RB_TYPE (*src)[3] = (const RB_TYPE (*)[3]) values;
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
-   if (mask) {
-      for (i = 0; i < count; i++) {
-         if (mask[i]) {
-            STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
-                            rgb[i][BCOMP]);
-         }
-         INC_PIXEL_PTR(pixel);
-      }
-   }
-   else {
-      for (i = 0; i < count; i++) {
-         STORE_RGB_PIXEL(pixel, x+i, y, rgb[i][RCOMP], rgb[i][GCOMP],
-                         rgb[i][BCOMP]);
-         INC_PIXEL_PTR(pixel);
+   for (i = 0; i < count; i++) {
+      if (!mask || mask[i]) {
+#ifdef STORE_PIXEL_RGB
+         STORE_PIXEL_RGB(pixel, x + i, y, src[i]);
+#else
+         STORE_PIXEL(pixel, x + i, y, src[i]);
+#endif
       }
+      INC_PIXEL_PTR(pixel);
    }
+   (void) rb;
 }
 #endif
 
+
 static void
 NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
                     GLuint count, GLint x, GLint y,
@@ -162,13 +160,7 @@ NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-#if FORMAT == GL_RGBA
-   const GLchan *src = (const GLchan *) value;
-#elif FORMAT == GL_RGBA8
-   const GLubyte *src = (const GLubyte *) value;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
-   const GLubyte *src = (const GLubyte *) value;
-#endif
+   const RB_TYPE *src = (const RB_TYPE *) value;
    GLuint i;
    INIT_PIXEL_PTR(pixel, x, y);
    if (mask) {
@@ -185,6 +177,7 @@ NAME(put_mono_row)( GLcontext *ctx, struct gl_renderbuffer *rb,
          INC_PIXEL_PTR(pixel);
       }
    }
+   (void) rb;
 }
 
 
@@ -196,13 +189,7 @@ NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-#if FORMAT == GL_RGBA
-   const GLchan (*src)[4] = (const GLchan (*)[4]) values;
-#elif FORMAT == GL_RGBA8
-   const GLubyte (*src)[4] = (const GLubyte (*)[4]) values;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
-   const GLubyte (*src)[1] = (const GLubyte (*)[1]) values;
-#endif
+   const RB_TYPE (*src)[RB_COMPONENTS] = (const RB_TYPE (*)[RB_COMPONENTS]) values;
    GLuint i;
    ASSERT(mask);
    for (i = 0; i < count; i++) {
@@ -211,6 +198,7 @@ NAME(put_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
          STORE_PIXEL(pixel, x[i], y[i], src[i]);
       }
    }
+   (void) rb;
 }
 
 
@@ -222,13 +210,7 @@ NAME(put_mono_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
 #ifdef SPAN_VARS
    SPAN_VARS
 #endif
-#if FORMAT == GL_RGBA
-   const GLchan *src = (const GLchan *) value;
-#elif FORMAT == GL_RGBA8
-   const GLubyte *src = (const GLubyte *) value;
-#elif FORMAT == GL_COLOR_INDEX8_EXT
-   const GLubyte *src = (const GLubyte *) value;
-#endif
+   const RB_TYPE *src = (const RB_TYPE *) value;
    GLuint i;
    ASSERT(mask);
    for (i = 0; i < count; i++) {
@@ -237,13 +219,17 @@ NAME(put_mono_values)( GLcontext *ctx, struct gl_renderbuffer *rb,
          STORE_PIXEL(pixel, x[i], y[i], src);
       }
    }
+   (void) rb;
 }
 
 
 #undef NAME
+#undef RB_TYPE
+#undef RB_COMPONENTS
+#undef CI_MODE
 #undef SPAN_VARS
 #undef INIT_PIXEL_PTR
 #undef INC_PIXEL_PTR
 #undef STORE_PIXEL
+#undef STORE_PIXEL_RGB
 #undef FETCH_PIXEL
-#undef FORMAT