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
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel