nv50: clarify data for method 0x121c
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Mon, 9 Nov 2009 13:29:00 +0000 (14:29 +0100)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Mon, 9 Nov 2009 13:30:32 +0000 (14:30 +0100)
src/gallium/drivers/nv50/nv50_state_validate.c

index a13d64b7fa76e4e304ea2149208f09ded154aa65..799d2758fee17ee6468136f1c4e35acb816c66eb 100644 (file)
@@ -37,13 +37,14 @@ nv50_state_validate_fb(struct nv50_context *nv50)
        struct pipe_framebuffer_state *fb = &nv50->framebuffer;
        unsigned i, w, h, gw = 0;
 
-       /* Set nr of active RTs. Don't know what 0xfac6880 does, but
-        * at least 0x880 was required to draw to more than 1 RT.
-        * In some special cases, 0xfac6880 is not used, we probably
-        * don't hit any of these though.
+       /* Set nr of active RTs and select RT for each colour output.
+        * FP result 0 always goes to RT[0], bits 4 - 6 are ignored.
+        * Ambiguous assignment results in no rendering (no DATA_ERROR).
         */
        so_method(so, tesla, 0x121c, 1);
-       so_data  (so, 0x0fac6880 | fb->nr_cbufs);
+       so_data  (so, fb->nr_cbufs |
+                 (0 <<  4) | (1 <<  7) | (2 << 10) | (3 << 13) |
+                 (4 << 16) | (5 << 19) | (6 << 22) | (7 << 25));
 
        for (i = 0; i < fb->nr_cbufs; i++) {
                struct pipe_texture *pt = fb->cbufs[i]->texture;