Signed-off-by: Xavier Chantry <chantry.xav...@gmail.com>
---
 src/nv10_exa.c |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/nv10_exa.c b/src/nv10_exa.c
index 1acb583..23a68e3 100644
--- a/src/nv10_exa.c
+++ b/src/nv10_exa.c
@@ -34,30 +34,33 @@ static struct pict_format {
        int exa;
        int hw;
 } nv10_tex_format_pot[] = {
-       { PICT_a8,       0x80  },
-       { PICT_r5g6b5,   0x280 },
-       { PICT_x8r8g8b8, 0x300 },
-       { PICT_a8r8g8b8, 0x300 },
+       { PICT_a8,       NV10TCL_TX_FORMAT_FORMAT_A8 },
+       { PICT_r5g6b5,   NV10TCL_TX_FORMAT_FORMAT_R5G6B5 },
+       { PICT_x8r8g8b8, NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8 },
+       { PICT_a8r8g8b8, NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8 },
        {},
 
 }, nv10_tex_format_rect[] = {
-       { PICT_a8,       0x980 },
-       { PICT_r5g6b5,   0x880 },
-       { PICT_x8r8g8b8, 0x900 },
-       { PICT_a8r8g8b8, 0x900 },
+       { PICT_a8,       NV10TCL_TX_FORMAT_FORMAT_A8_RECT },
+       { PICT_r5g6b5,   NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT },
+       { PICT_x8r8g8b8, NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT },
+       { PICT_a8r8g8b8, NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT },
        {},
 
+/* That's awesome, we need to use the nv20 rect formats on nv20 for
+ * NV10TCL_TX_FORMAT. Only A8_RECT differs between nv10 and nv20, but with the
+ * great side-effect to cause a DATA error when that is enabled */
 }, nv20_tex_format_rect[] = {
-       { PICT_a8,       0xd80 },
-       { PICT_r5g6b5,   0x880 },
-       { PICT_x8r8g8b8, 0x900 },
-       { PICT_a8r8g8b8, 0x900 },
+       { PICT_a8,       0x1b << NV10TCL_TX_FORMAT_FORMAT_SHIFT },
+       { PICT_r5g6b5,   NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT },
+       { PICT_x8r8g8b8, NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT },
+       { PICT_a8r8g8b8, NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT },
        {},
 
 }, nv10_rt_format[] = {
-       { PICT_r5g6b5,   0x103 },
-       { PICT_x8r8g8b8, 0x108 },
-       { PICT_a8r8g8b8, 0x108 },
+       { PICT_r5g6b5,   NV10TCL_RT_FORMAT_COLOR_R5G6B5 },
+       { PICT_x8r8g8b8, NV10TCL_RT_FORMAT_COLOR_X8R8G8B8 },
+       { PICT_a8r8g8b8, NV10TCL_RT_FORMAT_COLOR_A8R8G8B8 },
        {},
 };
 
@@ -432,7 +435,7 @@ setup_render_target(NVPtr pNv, PicturePtr pict, PixmapPtr 
pixmap)
        struct nouveau_bo *bo = nouveau_pixmap_bo(pixmap);
 
        BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2);
-       OUT_RING  (chan, get_rt_format(pict));
+       OUT_RING  (chan, get_rt_format(pict) | NV10TCL_RT_FORMAT_TYPE_LINEAR);
        OUT_RING  (chan, (exaGetPixmapPitch(pixmap) << 16 |
                          exaGetPixmapPitch(pixmap)));
 
-- 
1.7.0.5

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to