r500: make sure we emit max temp atom.
authorDave Airlie <airlied@redhat.com>
Mon, 5 May 2008 06:41:07 +0000 (16:41 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 5 May 2008 06:41:07 +0000 (16:41 +1000)
We don't appear to update max_temp_idx yet anywhere though

src/mesa/drivers/dri/r300/r300_cmdbuf.c
src/mesa/drivers/dri/r300/r300_context.h
src/mesa/drivers/dri/r300/r300_state.c

index 3f9d9da..75f8910 100644 (file)
@@ -412,6 +412,10 @@ void r300InitCmdBuf(r300ContextPtr r300)
        r300->hw.us_out_fmt.cmd[0] = cmdpacket0(R500_US_OUT_FMT, 5);
 
        if (is_r500) {
+               ALLOC_STATE(fp, always, R500_FP_CMDSIZE, 0);
+               r300->hw.fp.cmd[R500_FP_CMD_0] = cmdpacket0(R500_US_CONFIG, 2);
+               r300->hw.fp.cmd[R500_FP_CNTL] = R500_ZERO_TIMES_ANYTHING_EQUALS_ZERO;
+               
                ALLOC_STATE(r500fp, r500fp, R300_FPI_CMDSIZE, 0);
                r300->hw.r500fp.cmd[R300_FPI_CMD_0] = cmdr500fp(0, 0, 0, 0);
                ALLOC_STATE(r500fp_const, r500fp_const, R300_FPP_CMDSIZE, 0);
index bb5f5c3..980a26f 100644 (file)
@@ -354,6 +354,11 @@ struct r300_state_atom {
 #define R300_FP_NODE3          8
 #define R300_FP_CMDSIZE                9
 
+#define R500_FP_CMD_0           0
+#define R500_FP_CNTL            1
+#define R500_FP_PIXSIZE         2
+#define R500_FP_CMDSIZE         3
+
 #define R300_FPT_CMD_0         0
 #define R300_FPT_INSTR_0       1
 #define R300_FPT_CMDSIZE       65
index dbe1f69..b79b5e9 100644 (file)
@@ -2434,6 +2434,9 @@ static void r500SetupPixelShader(r300ContextPtr rmesa)
                return;
        }
 
+       R300_STATECHANGE(rmesa, fp);
+       rmesa->hw.fp.cmd[R500_FP_PIXSIZE] = fp->max_temp_idx;
+
        R300_STATECHANGE(rmesa, r500fp);
        /* Emit our shader... */
        for (i = 0; i < fp->cs->nrslots; i++) {