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