Revert "r300: Removed the R300_RS_INTERP_[0-9]_UNKNOWN (magic) defines."
authorOliver McFadden <z3ro.geek@gmail.com>
Sun, 27 May 2007 02:25:31 +0000 (02:25 +0000)
committerOliver McFadden <z3ro.geek@gmail.com>
Sun, 27 May 2007 02:25:31 +0000 (02:25 +0000)
This reverts commit bb3558e6517209086cf8426bbe4743da50351158.

This commit caused a regression reported by Markus Amsler
<markus.amsler@oribi.org>. Apparently these defines are required, although I'm
not sure why.

src/mesa/drivers/dri/r300/r300_reg.h
src/mesa/drivers/dri/r300/r300_state.c

index 9356c48b8d5dab53f61a1533c2e91df6cb8b8014..f98af8e1d2a29a30ce990047949eb0b198934f4c 100644 (file)
@@ -628,11 +628,17 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  * Set INTERP_USED on all interpolators that produce data used by
  * the fragment program. INTERP_USED looks like a swizzling mask,
  * but I haven't seen it used that way.
+ *
+ * Note: The _UNKNOWN constants are always set in their respective
+ * register. I don't know if this is necessary.
  */
 #define R300_RS_INTERP_0                    0x4310
 #define R300_RS_INTERP_1                    0x4314
+#       define R300_RS_INTERP_1_UNKNOWN          0x40
 #define R300_RS_INTERP_2                    0x4318
+#       define R300_RS_INTERP_2_UNKNOWN          0x80
 #define R300_RS_INTERP_3                    0x431C
+#       define R300_RS_INTERP_3_UNKNOWN          0xC0
 #define R300_RS_INTERP_4                    0x4320
 #define R300_RS_INTERP_5                    0x4324
 #define R300_RS_INTERP_6                    0x4328
index 22d780a096d9b358286833e7d1943f294fe15ed1..a9b20622e4c87a958c3434fa3ed88ddfe5cf775a 100644 (file)
@@ -1354,6 +1354,17 @@ union r300_outputs_written {
 static void r300SetupRSUnit(GLcontext * ctx)
 {
        r300ContextPtr r300 = R300_CONTEXT(ctx);
+       /* I'm still unsure if these are needed */
+       GLuint interp_magic[8] = {
+               0x00,
+               R300_RS_INTERP_1_UNKNOWN,
+               R300_RS_INTERP_2_UNKNOWN,
+               R300_RS_INTERP_3_UNKNOWN,
+               0x00,
+               0x00,
+               0x00,
+               0x00
+       };
        union r300_outputs_written OutputsWritten;
        GLuint InputsRead;
        int fp_reg, high_rr;
@@ -1399,7 +1410,8 @@ static void r300SetupRSUnit(GLcontext * ctx)
        for (i = 0; i < ctx->Const.MaxTextureUnits; i++) {
                r300->hw.ri.cmd[R300_RI_INTERP_0 + i] = 0
                    | R300_RS_INTERP_USED
-                   | (in_texcoords << R300_RS_INTERP_SRC_SHIFT);
+                   | (in_texcoords << R300_RS_INTERP_SRC_SHIFT)
+                   | interp_magic[i];
 
                r300->hw.rr.cmd[R300_RR_ROUTE_0 + fp_reg] = 0;
                if (InputsRead & (FRAG_BIT_TEX0 << i)) {