I have updated the table of texture formats in r300_texstate.c based
on the definitions and comments in Mesa/src/mesa/main/texformat.h.
These changes assume that radeon_cp_dispatch_texture doesn't
byte-swap, i.e. that the patch I just posted has been applied.

I have tested formats 1, 13, 16 and 17 on big-endian.  The patch below
adds what I think should be the correct definitions for little-endian
as well, but they are untested.  I think the line for
MESA_FORMAT_ARGB4444 for little-endian is wrong but I didn't change
it.

With this patch, pinball and chromium display correctly, tuxracer
displays mostly correctly except that the ice still looks a bit wrong,
and bzflag displays mostly correctly (some of the smaller characters
in the HUD seem to display the wrong background in their rectangle
though).

Paul.

diff -urN cvs/r300_driver/r300/r300_texstate.c r300_driver/r300/r300_texstate.c
--- cvs/r300_driver/r300/r300_texstate.c        2005-03-07 08:21:34.000000000 
+1100
+++ r300_driver/r300/r300_texstate.c    2005-03-08 19:41:01.000000000 +1100
@@ -104,46 +104,52 @@
  *       should better find a way to ask the hardware to do the swapping.
  *       Jerome Glisse
  */
-           {R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8), 0},
-           {R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8), 0},
-           {0xffffff02, 0},
-           {0xffffff03, 0},
-           {0xffffff04, 0},
-           {0xffffff05, 0},
-           {0xffffff06, 0},
-           {0xffffff07, 0},
-           {0xffffff08, 0},
-           {0xffffff09, 0},
-           {0xffffff10, 0},
-           {0xffffff11, 0},
-           {R300_EASY_TX_FORMAT(Y, Y, Y, X, Y8X8), 0},
-           {0xffffff13, 0},
-           {0xffffff14, 0},
-           {R300_EASY_TX_FORMAT(X, X, X, X, X8),  0},
-           {0xffffff16,  0},
-           {0xffffff17, 0},
-           };
+       {R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8), 0}, // MESA_FORMAT_RGBA8888
+       {R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8), 0}, // 
MESA_FORMAT_RGBA8888_REV
+       {R300_EASY_TX_FORMAT(W, Z, Y, X, W8Z8Y8X8), 0}, // MESA_FORMAT_ARGB8888
+       {R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8), 0}, // 
MESA_FORMAT_ARGB8888_REV
+       {0xffffff04, 0},        // MESA_FORMAT_RGB888 - how do we do 3 
bytes/elt?
+       {0xffffff05, 0},        // MESA_FORMAT_BGR888 - how do we do 3 
bytes/elt?
+       {0xffffff06, 0},        // MESA_FORMAT_RGB565
+       {R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5), 0}, // 
MESA_FORMAT_RGB565_REV
+       {R300_EASY_TX_FORMAT(Z, W, X, Y, W4Z4Y4X4), 0}, // MESA_FORMAT_ARGB4444
+       {R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4), 0}, // 
MESA_FORMAT_ARGB4444_REV
+       {0xffffff10, 0},        // MESA_FORMAT_ARGB1555
+       {0xffffff11, 0},        // MESA_FORMAT_ARGB1555_REV
+       {R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8), 0},     // MESA_FORMAT_AL88
+       {R300_EASY_TX_FORMAT(Y, Y, Y, X, Y8X8), 0},     // MESA_FORMAT_AL88_REV
+       {R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z3Y3X2), 0}, // MESA_FORMAT_RGB332
+       {R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, X8),  0}, // MESA_FORMAT_A8
+       {R300_EASY_TX_FORMAT(X, X, X, ONE, X8), 0},     // MESA_FORMAT_L8
+       {R300_EASY_TX_FORMAT(X, X, X, X, X8), 0},       // MESA_FORMAT_I8
+       {0xffffff18, 0},        // MESA_FORMAT_CI8
+       {0xffffff19, 0},        // MESA_FORMAT_YCBCR
+       {0xffffff20, 0},        // MESA_FORMAT_YCBCR_REV
+
 #else
-           {R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8), 0},
-           {0xffffff01, 0},
-           {0xffffff02, 0},
-           {0xffffff03, 0},
-           {0xffffff04, 0},
-           {0xffffff05, 0},
-           {R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5), 0},
-           {0xffffff07, 0},
-           {R300_EASY_TX_FORMAT(Y, Z, W, X, W4Z4Y4X4), 0},
-           {0xffffff09, 0},
-           {0xffffff10, 0},
-           {0xffffff11, 0},
-           {R300_EASY_TX_FORMAT(Y, Y, Y, X, Y8X8), 0},
-           {0xffffff13, 0},
-           {0xffffff14, 0},
-           {R300_EASY_TX_FORMAT(X, X, X, X, X8),  0},
-           {0xffffff16,  0},
-           {0xffffff17, 0},
-           };
+       {R300_EASY_TX_FORMAT(Y, Z, W, X, W8Z8Y8X8), 0}, // MESA_FORMAT_RGBA8888
+       {R300_EASY_TX_FORMAT(Z, Y, X, W, W8Z8Y8X8), 0}, // 
MESA_FORMAT_RGBA8888_REV
+       {R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8), 0}, // MESA_FORMAT_ARGB8888
+       {R300_EASY_TX_FORMAT(W, Z, Y, X, W8Z8Y8X8), 0}, // 
MESA_FORMAT_ARGB8888_REV
+       {0xffffff04, 0},        // MESA_FORMAT_RGB888 - how do we do 3 
bytes/elt?
+       {0xffffff05, 0},        // MESA_FORMAT_BGR888 - how do we do 3 
bytes/elt?
+       {R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5), 0}, // MESA_FORMAT_RGB565
+       {0xffffff07, 0},        // MESA_FORMAT_RGB565_REV
+       {R300_EASY_TX_FORMAT(Y, Z, W, X, W4Z4Y4X4), 0}, // MESA_FORMAT_ARGB4444
+       {R300_EASY_TX_FORMAT(Z, W, X, Y, W4Z4Y4X4), 0}, // 
MESA_FORMAT_ARGB4444_REV
+       {0xffffff10, 0},        // MESA_FORMAT_ARGB1555
+       {0xffffff11, 0},        // MESA_FORMAT_ARGB1555_REV
+       {R300_EASY_TX_FORMAT(Y, Y, Y, X, Y8X8), 0},     // MESA_FORMAT_AL88
+       {R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8), 0},     // MESA_FORMAT_AL88_REV
+       {R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z3Y3X2), 0}, // MESA_FORMAT_RGB332
+       {R300_EASY_TX_FORMAT(ZERO, ZERO, ZERO, X, X8),  0}, // MESA_FORMAT_A8
+       {R300_EASY_TX_FORMAT(X, X, X, ONE, X8), 0},     // MESA_FORMAT_L8
+       {R300_EASY_TX_FORMAT(X, X, X, X, X8), 0},       // MESA_FORMAT_I8
+       {0xffffff18, 0},        // MESA_FORMAT_CI8
+       {0xffffff19, 0},        // MESA_FORMAT_YCBCR
+       {0xffffff20, 0},        // MESA_FORMAT_YCBCR_REV
 #endif
+};
 
 #undef _COLOR
 #undef _ALPHA


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to