[Nouveau] [PATCH] nv50/accel: Fix mangled A8+A8 shader.

Marcin Kościelnicki koriakin at 0x04.net
Fri Feb 5 09:01:09 PST 2010


Turns out we used a misaligned long instruction near the end, and the
shader was getting killed after writing R, A components. This has gone
unnoticed since the remaining G, B outputs aren't actually used.
---
 src/nv50_accel.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/nv50_accel.c b/src/nv50_accel.c
index 5fa539c..1218e18 100644
--- a/src/nv50_accel.c
+++ b/src/nv50_accel.c
@@ -291,7 +291,7 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn)
 	OUT_RING  (chan, (0 << NV50TCL_CB_DEF_SET_BUFFER_SHIFT) | 0x4000);
 	BEGIN_RING(chan, tesla, NV50TCL_CB_ADDR, 1);
 	OUT_RING  (chan, 0);
-	BEGIN_RING_NI(chan, tesla, NV50TCL_CB_DATA(0), 15);
+	BEGIN_RING_NI(chan, tesla, NV50TCL_CB_DATA(0), 16);
 	OUT_RING  (chan, 0x80000000);
 	OUT_RING  (chan, 0x90000004);
 	OUT_RING  (chan, 0x82030208);
@@ -302,7 +302,8 @@ NVAccelInitNV50TCL(ScrnInfoPtr pScrn)
 	OUT_RING  (chan, 0x00008784);
 	OUT_RING  (chan, 0xf0400209);
 	OUT_RING  (chan, 0x00008784);
-	OUT_RING  (chan, 0xc002000c);
+	OUT_RING  (chan, 0xc002000d);
+	OUT_RING  (chan, 0x00000780);
 	OUT_RING  (chan, 0x10008600);
 	OUT_RING  (chan, 0x10008604);
 	OUT_RING  (chan, 0x10000609);
-- 
1.6.4.1



More information about the Nouveau mailing list