i965/miptree: Replace is_lossless_compressed with mt->aux_usage checks
[mesa.git] / src / mesa / drivers / dri / radeon / radeon_span.c
index d4d68365ecd22a1f818b351384525b6cf5244dd3..42f62a0cb7f418cf9b264d671bbb3eb27b03fe38 100644 (file)
@@ -36,449 +36,20 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  * Authors:
  *   Kevin E. Martin <martin@valinux.com>
  *   Gareth Hughes <gareth@valinux.com>
- *   Keith Whitwell <keith@tungstengraphics.com>
+ *   Keith Whitwell <keithw@vmware.com>
  *
  */
 
 #include "main/glheader.h"
 #include "main/texformat.h"
 #include "main/renderbuffer.h"
+#include "main/samplerobj.h"
 #include "swrast/swrast.h"
+#include "swrast/s_renderbuffer.h"
 
 #include "radeon_common.h"
 #include "radeon_span.h"
 
-#define DBG 0
-
-#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN
-#if defined(__linux__)
-#include <byteswap.h>
-#define CPU_TO_LE16( x )       bswap_16( x )
-#define LE16_TO_CPU( x )       bswap_16( x )
-#endif /* __linux__ */
-#else
-#define CPU_TO_LE16( x )       ( x )
-#define LE16_TO_CPU( x )       ( x )
-#endif
-
-static void radeonSetSpanFunctions(struct radeon_renderbuffer *rrb);
-
-
-/* r200 depth buffer is always tiled - this is the formula
-   according to the docs unless I typo'ed in it
-*/
-#if defined(RADEON_R200)
-static GLubyte *r200_depth_2byte(const struct radeon_renderbuffer * rrb,
-                                GLint x, GLint y)
-{
-    GLubyte *ptr = rrb->bo->ptr + rrb->draw_offset;
-    GLint offset;
-    if (rrb->has_surface) {
-       offset = x * rrb->cpp + y * rrb->pitch;
-    } else {
-       GLuint b;
-       offset = 0;
-       b = (((y  >> 4) * (rrb->pitch >> 8) + (x >> 6)));
-       offset += (b >> 1) << 12;
-       offset += (((rrb->pitch >> 8) & 0x1) ? (b & 0x1) : ((b & 0x1) ^ ((y >> 4) & 0x1))) << 11;
-       offset += ((y >> 2) & 0x3) << 9;
-       offset += ((x >> 3) & 0x1) << 8;
-       offset += ((x >> 4) & 0x3) << 6;
-       offset += ((x >> 2) & 0x1) << 5;
-       offset += ((y >> 1) & 0x1) << 4;
-       offset += ((x >> 1) & 0x1) << 3;
-       offset += (y & 0x1) << 2;
-       offset += (x & 0x1) << 1;
-    }
-    return &ptr[offset];
-}
-
-static GLubyte *r200_depth_4byte(const struct radeon_renderbuffer * rrb,
-                                GLint x, GLint y)
-{
-    GLubyte *ptr = rrb->bo->ptr + rrb->draw_offset;
-    GLint offset;
-    if (rrb->has_surface) {
-       offset = x * rrb->cpp + y * rrb->pitch;
-    } else {
-       GLuint b;
-       offset = 0;
-       b = (((y & 0x7ff) >> 4) * (rrb->pitch >> 7) + (x >> 5));
-       offset += (b >> 1) << 12;
-       offset += (((rrb->pitch >> 7) & 0x1) ? (b & 0x1) : ((b & 0x1) ^ ((y >> 4) & 0x1))) << 11;
-       offset += ((y >> 2) & 0x3) << 9;
-       offset += ((x >> 2) & 0x1) << 8;
-       offset += ((x >> 3) & 0x3) << 6;
-       offset += ((y >> 1) & 0x1) << 5;
-       offset += ((x >> 1) & 0x1) << 4;
-       offset += (y & 0x1) << 3;
-       offset += (x & 0x1) << 2;
-    }
-    return &ptr[offset];
-}
-#endif
-
-
-/* radeon tiling on r300-r500 has 4 states,
-   macro-linear/micro-linear
-   macro-linear/micro-tiled
-   macro-tiled /micro-linear
-   macro-tiled /micro-tiled
-   1 byte surface 
-   2 byte surface - two types - we only provide 8x2 microtiling
-   4 byte surface
-   8/16 byte (unused)
-*/
-static GLubyte *radeon_ptr_4byte(const struct radeon_renderbuffer * rrb,
-                            GLint x, GLint y)
-{
-    GLubyte *ptr = rrb->bo->ptr + rrb->draw_offset;
-    uint32_t mask = RADEON_BO_FLAGS_MACRO_TILE | RADEON_BO_FLAGS_MICRO_TILE;
-    GLint offset;
-
-    if (rrb->has_surface || !(rrb->bo->flags & mask)) {
-        offset = x * rrb->cpp + y * rrb->pitch;
-    } else {
-        offset = 0;
-        if (rrb->bo->flags & RADEON_BO_FLAGS_MACRO_TILE) {
-           if (rrb->bo->flags & RADEON_BO_FLAGS_MICRO_TILE) {
-               offset = ((y >> 4) * (rrb->pitch >> 7) + (x >> 5)) << 11;
-               offset += (((y >> 3) ^ (x >> 5)) & 0x1) << 10;
-               offset += (((y >> 4) ^ (x >> 4)) & 0x1) << 9;
-               offset += (((y >> 2) ^ (x >> 4)) & 0x1) << 8;
-               offset += (((y >> 3) ^ (x >> 3)) & 0x1) << 7;
-               offset += ((y >> 1) & 0x1) << 6;
-               offset += ((x >> 2) & 0x1) << 5;
-               offset += (y & 1) << 4;
-               offset += (x & 3) << 2;
-            } else {
-               offset = ((y >> 3) * (rrb->pitch >> 8) + (x >> 6)) << 11;
-               offset += (((y >> 2) ^ (x >> 6)) & 0x1) << 10;
-               offset += (((y >> 3) ^ (x >> 5)) & 0x1) << 9;
-               offset += (((y >> 1) ^ (x >> 5)) & 0x1) << 8;
-               offset += (((y >> 2) ^ (x >> 4)) & 0x1) << 7;
-               offset += (y & 1) << 6;
-               offset += (x & 15) << 2;
-            }
-        } else {
-           offset = ((y >> 1) * (rrb->pitch >> 4) + (x >> 2)) << 5;
-           offset += (y & 1) << 4;
-           offset += (x & 3) << 2;
-        }
-    }
-    return &ptr[offset];
-}
-
-static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb,
-                                    GLint x, GLint y)
-{
-    GLubyte *ptr = rrb->bo->ptr + rrb->draw_offset;
-    uint32_t mask = RADEON_BO_FLAGS_MACRO_TILE | RADEON_BO_FLAGS_MICRO_TILE;
-    GLint offset;
-
-    if (rrb->has_surface || !(rrb->bo->flags & mask)) {
-        offset = x * rrb->cpp + y * rrb->pitch;
-    } else {
-        offset = 0;
-        if (rrb->bo->flags & RADEON_BO_FLAGS_MACRO_TILE) {
-            if (rrb->bo->flags & RADEON_BO_FLAGS_MICRO_TILE) {
-               offset = ((y >> 4) * (rrb->pitch >> 7) + (x >> 6)) << 11;
-               offset += (((y >> 3) ^ (x >> 6)) & 0x1) << 10;
-               offset += (((y >> 4) ^ (x >> 5)) & 0x1) << 9;
-               offset += (((y >> 2) ^ (x >> 5)) & 0x1) << 8;
-               offset += (((y >> 3) ^ (x >> 4)) & 0x1) << 7;
-               offset += ((y >> 1) & 0x1) << 6;
-               offset += ((x >> 3) & 0x1) << 5;
-               offset += (y & 1) << 4;
-               offset += (x & 3) << 2;
-            } else {
-               offset = ((y >> 3) * (rrb->pitch >> 8) + (x >> 7)) << 11;
-               offset += (((y >> 2) ^ (x >> 7)) & 0x1) << 10;
-               offset += (((y >> 3) ^ (x >> 6)) & 0x1) << 9;
-               offset += (((y >> 1) ^ (x >> 6)) & 0x1) << 8;
-               offset += (((y >> 2) ^ (x >> 5)) & 0x1) << 7;
-               offset += (y & 1) << 6;
-               offset += ((x >> 4) & 0x1) << 5;
-                offset += (x & 15) << 2;
-            }
-        } else {
-           offset = ((y >> 1) * (rrb->pitch >> 4) + (x >> 3)) << 5;
-           offset += (y & 0x1) << 4;
-           offset += (x & 0x7) << 1;
-        }
-    }
-    return &ptr[offset];
-}
-
-/*
- * Note that all information needed to access pixels in a renderbuffer
- * should be obtained through the gl_renderbuffer parameter, not per-context
- * information.
- */
-#define LOCAL_VARS                                             \
-   struct radeon_renderbuffer *rrb = (void *) rb;              \
-   int minx = 0, miny = 0;                                             \
-   int maxx = rb->Width;                                               \
-   int maxy = rb->Height;                                              \
-   void *buf = rb->Data;                                               \
-   int pitch = rb->RowStride * rrb->cpp;                               \
-   GLuint p;                                           \
-   (void)p;
-
-#define LOCAL_DEPTH_VARS                               \
-   struct radeon_renderbuffer *rrb = (void *) rb;      \
-   int minx = 0, miny = 0;                                             \
-   const GLint yScale = ctx->DrawBuffer->Name ? 1 : -1;                 \
-   const GLint yBias = ctx->DrawBuffer->Name ? 0 : rrb->base.Height - 1; \
-   int maxx = rb->Width;                                               \
-   int maxy = rb->Height;
-
-#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS
-
-#define Y_FLIP(_y) (_y)
-
-#define HW_LOCK()
-#define HW_UNLOCK()
-#define HW_CLIPLOOP()
-#define HW_ENDCLIPLOOP()
-
-/* ================================================================
- * Color buffer
- */
-
-/* 16 bit, RGB565 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_RGB
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5
-#define TAG(x)    radeon##x##_RGB565
-#define TAG2(x,y) radeon##x##_RGB565##y
-#include "spantmp2.h"
-
-#define SPANTMP_PIXEL_FMT GL_RGB
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_5_6_5_REV
-#define TAG(x)    radeon##x##_RGB565_REV
-#define TAG2(x,y) radeon##x##_RGB565_REV##y
-#include "spantmp2.h"
-
-/* 16 bit, ARGB1555 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_1_5_5_5_REV
-#define TAG(x)    radeon##x##_ARGB1555
-#define TAG2(x,y) radeon##x##_ARGB1555##y
-#include "spantmp2.h"
-
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_1_5_5_5
-#define TAG(x)    radeon##x##_ARGB1555_REV
-#define TAG2(x,y) radeon##x##_ARGB1555_REV##y
-#include "spantmp2.h"
-
-/* 16 bit, RGBA4 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_4_4_4_4_REV
-#define TAG(x)    radeon##x##_ARGB4444
-#define TAG2(x,y) radeon##x##_ARGB4444##y
-#include "spantmp2.h"
-
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_SHORT_4_4_4_4
-#define TAG(x)    radeon##x##_ARGB4444_REV
-#define TAG2(x,y) radeon##x##_ARGB4444_REV##y
-#include "spantmp2.h"
-
-/* 32 bit, xRGB8888 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8_REV
-#define TAG(x)    radeon##x##_xRGB8888
-#define TAG2(x,y) radeon##x##_xRGB8888##y
-#include "spantmp2.h"
-
-/* 32 bit, ARGB8888 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8_REV
-#define TAG(x)    radeon##x##_ARGB8888
-#define TAG2(x,y) radeon##x##_ARGB8888##y
-#include "spantmp2.h"
-
-/* 32 bit, BGRx8888 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8
-#define TAG(x)    radeon##x##_BGRx8888
-#define TAG2(x,y) radeon##x##_BGRx8888##y
-#include "spantmp2.h"
-
-/* 32 bit, BGRA8888 color spanline and pixel functions
- */
-#define SPANTMP_PIXEL_FMT GL_BGRA
-#define SPANTMP_PIXEL_TYPE GL_UNSIGNED_INT_8_8_8_8
-#define TAG(x)    radeon##x##_BGRA8888
-#define TAG2(x,y) radeon##x##_BGRA8888##y
-#include "spantmp2.h"
-
-#undef Y_FLIP
-#define Y_FLIP(_y) ((_y) * yScale + yBias)
-/* ================================================================
- * Depth buffer
- */
-
-/* The Radeon family has depth tiling on all the time, so we have to convert
- * the x,y coordinates into the memory bus address (mba) in the same
- * manner as the engine.  In each case, the linear block address (ba)
- * is calculated, and then wired with x and y to produce the final
- * memory address.
- * The chip will do address translation on its own if the surface registers
- * are set up correctly. It is not quite enough to get it working with hyperz
- * too...
- */
-
-/* 16-bit depth buffer functions
- */
-#define VALUE_TYPE GLushort
-
-#if defined(RADEON_R200)
-#define WRITE_DEPTH( _x, _y, d )                                       \
-   *(GLushort *)r200_depth_2byte(rrb, _x, _y) = d
-#else
-#define WRITE_DEPTH( _x, _y, d )                                       \
-   *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x, _y) = d
-#endif
-
-#if defined(RADEON_R200)
-#define READ_DEPTH( d, _x, _y )                                                \
-   d = *(GLushort *)r200_depth_2byte(rrb, _x, _y)
-#else
-#define READ_DEPTH( d, _x, _y )                                                \
-   d = *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x, _y)
-#endif
-
-#define TAG(x) radeon##x##_z16
-#include "depthtmp.h"
-
-/* 24 bit depth
- *
- * Careful: It looks like the R300 uses ZZZS byte order while the R200
- * uses SZZZ for 24 bit depth, 8 bit stencil mode.
- */
-#define VALUE_TYPE GLuint
-
-#if defined(RADEON_R200)
-#define WRITE_DEPTH( _x, _y, d )                                       \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)r200_depth_4byte( rrb, _x, _y );            \
-   GLuint tmp = LE32_TO_CPU(*_ptr);                                     \
-   tmp &= 0xff000000;                                                  \
-   tmp |= ((d) & 0x00ffffff);                                          \
-   *_ptr = CPU_TO_LE32(tmp);                                            \
-} while (0)
-#else
-#define WRITE_DEPTH( _x, _y, d )                                       \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)radeon_ptr_4byte( rrb, _x, _y );    \
-   GLuint tmp = LE32_TO_CPU(*_ptr);                                     \
-   tmp &= 0xff000000;                                                  \
-   tmp |= ((d) & 0x00ffffff);                                          \
-   *_ptr = CPU_TO_LE32(tmp);                                            \
-} while (0)
-#endif
-
-#if defined(RADEON_R200)
-#define READ_DEPTH( d, _x, _y )                                                \
-  do {                                                                 \
-    d = LE32_TO_CPU(*(GLuint*)(r200_depth_4byte(rrb, _x, _y))) & 0x00ffffff; \
-  }while(0)
-#else
-#define READ_DEPTH( d, _x, _y )        \
-  d = LE32_TO_CPU(*(GLuint*)(radeon_ptr_4byte(rrb, _x, _y))) & 0x00ffffff;
-#endif
-
-#define TAG(x) radeon##x##_z24
-#include "depthtmp.h"
-
-/* 24 bit depth, 8 bit stencil depthbuffer functions
- * EXT_depth_stencil
- *
- * Careful: It looks like the R300 uses ZZZS byte order while the R200
- * uses SZZZ for 24 bit depth, 8 bit stencil mode.
- */
-#define VALUE_TYPE GLuint
-
-#if defined(RADEON_R200)
-#define WRITE_DEPTH( _x, _y, d )                                       \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)r200_depth_4byte( rrb, _x, _y );            \
-   *_ptr = CPU_TO_LE32(d);                                             \
-} while (0)
-#else
-#define WRITE_DEPTH( _x, _y, d )                                       \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)radeon_ptr_4byte( rrb, _x, _y );    \
-   *_ptr = CPU_TO_LE32(d);                                             \
-} while (0)
-#endif
-
-#if defined(RADEON_R200)
-#define READ_DEPTH( d, _x, _y )                                                \
-  do { \
-    d = LE32_TO_CPU(*(GLuint*)(r200_depth_4byte(rrb, _x, _y))); \
-  }while(0)
-#else
-#define READ_DEPTH( d, _x, _y )        do {                                    \
-    d = LE32_TO_CPU(*(GLuint*)(radeon_ptr_4byte(rrb, _x, _y))); \
-  } while (0)
-#endif
-
-#define TAG(x) radeon##x##_s8_z24
-#include "depthtmp.h"
-
-/* ================================================================
- * Stencil buffer
- */
-
-/* 24 bit depth, 8 bit stencil depthbuffer functions
- */
-#if defined(RADEON_R200)
-#define WRITE_STENCIL( _x, _y, d )                                     \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)r200_depth_4byte(rrb, _x, _y);              \
-   GLuint tmp = LE32_TO_CPU(*_ptr);                                     \
-   tmp &= 0x00ffffff;                                                  \
-   tmp |= (((d) & 0xff) << 24);                                                \
-   *_ptr = CPU_TO_LE32(tmp);                                            \
-} while (0)
-#else
-#define WRITE_STENCIL( _x, _y, d )                                     \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)radeon_ptr_4byte(rrb, _x, _y);              \
-   GLuint tmp = LE32_TO_CPU(*_ptr);                                     \
-   tmp &= 0x00ffffff;                                                  \
-   tmp |= (((d) & 0xff) << 24);                                                \
-   *_ptr = CPU_TO_LE32(tmp);                                            \
-} while (0)
-#endif
-
-#if defined(RADEON_R200)
-#define READ_STENCIL( d, _x, _y )                                      \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)r200_depth_4byte( rrb, _x, _y );            \
-   GLuint tmp = LE32_TO_CPU(*_ptr);                                     \
-   d = (tmp & 0xff000000) >> 24;                                       \
-} while (0)
-#else
-#define READ_STENCIL( d, _x, _y )                                      \
-do {                                                                   \
-   GLuint *_ptr = (GLuint*)radeon_ptr_4byte( rrb, _x, _y );            \
-   GLuint tmp = LE32_TO_CPU(*_ptr);                                     \
-   d = (tmp & 0xff000000) >> 24;                                       \
-} while (0)
-#endif
-
-#define TAG(x) radeon##x##_s8_z24
-#include "stenciltmp.h"
 
 static void
 radeon_renderbuffer_map(struct gl_context *ctx, struct gl_renderbuffer *rb)
@@ -494,10 +65,10 @@ radeon_renderbuffer_map(struct gl_context *ctx, struct gl_renderbuffer *rb)
                                    GL_MAP_READ_BIT | GL_MAP_WRITE_BIT,
                                    &map, &stride);
 
-       rb->Data = map;
-       rb->RowStride = stride / _mesa_get_format_bytes(rb->Format);
-
-       radeonSetSpanFunctions(rrb);
+       rrb->base.Map = map;
+       rrb->base.RowStride = stride;
+       /* No floating point color buffers, use GLubytes */
+       rrb->base.ColorType = GL_UNSIGNED_BYTE;
 }
 
 static void
@@ -509,16 +80,14 @@ radeon_renderbuffer_unmap(struct gl_context *ctx, struct gl_renderbuffer *rb)
 
        ctx->Driver.UnmapRenderbuffer(ctx, rb);
 
-       rb->GetRow = NULL;
-       rb->PutRow = NULL;
-       rb->Data = NULL;
-       rb->RowStride = 0;
+       rrb->base.Map = NULL;
+       rrb->base.RowStride = 0;
 }
 
 static void
 radeon_map_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
 {
-       GLuint i, j;
+       GLuint i;
 
        radeon_print(RADEON_MEMORY, RADEON_TRACE,
                "%s( %p , fb %p )\n",
@@ -534,7 +103,7 @@ radeon_map_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
 static void
 radeon_unmap_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
 {
-       GLuint i, j;
+       GLuint i;
 
        radeon_print(RADEON_MEMORY, RADEON_TRACE,
                "%s( %p , fb %p)\n",
@@ -550,17 +119,11 @@ radeon_unmap_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
 static void radeonSpanRenderStart(struct gl_context * ctx)
 {
        radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
-       int i;
 
        radeon_firevertices(rmesa);
 
-       for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {
-               if (ctx->Texture.Unit[i]._ReallyEnabled) {
-                       radeon_validate_texture_miptree(ctx, ctx->Texture.Unit[i]._Current);
-                       radeon_swrast_map_texture_images(ctx, ctx->Texture.Unit[i]._Current);
-               }
-       }
-       
+       _swrast_map_textures(ctx);
+
        radeon_map_framebuffer(ctx, ctx->DrawBuffer);
        if (ctx->ReadBuffer != ctx->DrawBuffer)
                radeon_map_framebuffer(ctx, ctx->ReadBuffer);
@@ -568,13 +131,8 @@ static void radeonSpanRenderStart(struct gl_context * ctx)
 
 static void radeonSpanRenderFinish(struct gl_context * ctx)
 {
-       int i;
-
        _swrast_flush(ctx);
-
-       for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++)
-               if (ctx->Texture.Unit[i]._ReallyEnabled)
-                       radeon_swrast_unmap_texture_images(ctx, ctx->Texture.Unit[i]._Current);
+       _swrast_unmap_textures(ctx);
 
        radeon_unmap_framebuffer(ctx, ctx->DrawBuffer);
        if (ctx->ReadBuffer != ctx->DrawBuffer)
@@ -589,40 +147,3 @@ void radeonInitSpanFuncs(struct gl_context * ctx)
        swdd->SpanRenderFinish = radeonSpanRenderFinish;
 }
 
-/**
- * Plug in the Get/Put routines for the given driRenderbuffer.
- */
-static void radeonSetSpanFunctions(struct radeon_renderbuffer *rrb)
-{
-       if (rrb->base.Format == MESA_FORMAT_RGB565) {
-               radeonInitPointers_RGB565(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_RGB565_REV) {
-               radeonInitPointers_RGB565_REV(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_XRGB8888) {
-               radeonInitPointers_xRGB8888(&rrb->base);
-        } else if (rrb->base.Format == MESA_FORMAT_XRGB8888_REV) {
-               radeonInitPointers_BGRx8888(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_ARGB8888) {
-               radeonInitPointers_ARGB8888(&rrb->base);
-        } else if (rrb->base.Format == MESA_FORMAT_ARGB8888_REV) {
-               radeonInitPointers_BGRA8888(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_ARGB4444) {
-               radeonInitPointers_ARGB4444(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_ARGB4444_REV) {
-               radeonInitPointers_ARGB4444_REV(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_ARGB1555) {
-               radeonInitPointers_ARGB1555(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_ARGB1555_REV) {
-               radeonInitPointers_ARGB1555_REV(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_Z16) {
-               _mesa_set_renderbuffer_accessors(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_X8_Z24) {
-               _mesa_set_renderbuffer_accessors(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_S8_Z24) {
-               _mesa_set_renderbuffer_accessors(&rrb->base);
-       } else if (rrb->base.Format == MESA_FORMAT_S8) {
-               _mesa_set_renderbuffer_accessors(&rrb->base);
-       } else {
-               fprintf(stderr, "radeonSetSpanFunctions: bad format: 0x%04X\n", rrb->base.Format);
-       }
-}