r300: fix reads and writes for MESA_FORMAT_S8Z24 buffer
authorMaciej Cencora <m.cencora@gmail.com>
Tue, 17 Nov 2009 20:27:31 +0000 (21:27 +0100)
committerBrian Paul <brianp@vmware.com>
Tue, 17 Nov 2009 20:40:43 +0000 (13:40 -0700)
Regression was introduced by texformat-rework branch merge.

src/mesa/drivers/dri/radeon/radeon_span.c

index b3986ef..37904dc 100644 (file)
@@ -668,7 +668,7 @@ do {                                                                        \
 #define WRITE_DEPTH( _x, _y, d )                                       \
 do {                                                                   \
    GLuint *_ptr = (GLuint*)radeon_ptr_4byte( rrb, _x + x_off, _y + y_off );            \
-   *_ptr = CPU_TO_LE32(d);                                              \
+   *_ptr = CPU_TO_LE32((((d) & 0xff000000) >> 24) | (((d) & 0x00ffffff) << 8));   \
 } while (0)
 #elif defined(RADEON_R600)
 #define WRITE_DEPTH( _x, _y, d )                                       \
@@ -701,7 +701,8 @@ do {                                                                        \
 #if defined(RADEON_R300)
 #define READ_DEPTH( d, _x, _y )                                                \
   do { \
-    d = LE32_TO_CPU(*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)));        \
+    GLuint tmp = (*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)));  \
+    d = LE32_TO_CPU(((tmp & 0x000000ff) << 24) | ((tmp & 0xffffff00) >> 8));   \
   }while(0)
 #elif defined(RADEON_R600)
 #define READ_DEPTH( d, _x, _y )                                                \