st/nine: Always initialize current in ff ps
authorAxel Davy <axel.davy@ens.fr>
Sun, 27 Nov 2016 11:55:46 +0000 (12:55 +0100)
committerAxel Davy <axel.davy@ens.fr>
Tue, 20 Dec 2016 22:44:21 +0000 (23:44 +0100)
The check was not catching all possible cases.
NVE4 should be fine.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
src/gallium/state_trackers/nine/nine_ff.c

index ecb1dd8d31f9ea9d564df3c20c81c09297e3bc45..b31830051866d0474cb277136d9340137ce77471 100644 (file)
@@ -1332,7 +1332,7 @@ nine_ff_build_ps(struct NineDevice9 *device, struct nine_ff_ps_key *key)
     ps.rTexSrc = ureg_src(ps.rTex);
 
     /* Initial values */
-    ureg_MOV(ureg, ps.rCur, ureg_imm1f(ureg, 0.0f));
+    ureg_MOV(ureg, ps.rCur, ps.vC[0]);
     ureg_MOV(ureg, ps.rTmp, ureg_imm1f(ureg, 0.0f));
     ureg_MOV(ureg, ps.rTex, ureg_imm1f(ureg, 0.0f));
 
@@ -1452,29 +1452,6 @@ nine_ff_build_ps(struct NineDevice9 *device, struct nine_ff_ps_key *key)
                 ureg_MUL(ureg, ps.rTex, ureg_src(ps.rTex), _X(delta));
         }
 
-        if (((s == 0 && key->ts[0].colorop != D3DTOP_BUMPENVMAP &&
-              key->ts[0].colorop != D3DTOP_BUMPENVMAPLUMINANCE) ||
-             (s == 1 &&
-              (key->ts[0].colorop == D3DTOP_BUMPENVMAP ||
-               key->ts[0].colorop == D3DTOP_BUMPENVMAPLUMINANCE)))&&
-            (key->ts[s].resultarg != 0 /* not current */ ||
-             key->ts[s].colorop == D3DTOP_DISABLE ||
-             key->ts[s].alphaop == D3DTOP_DISABLE ||
-             key->ts[s].colorop == D3DTOP_BLENDCURRENTALPHA ||
-             key->ts[s].alphaop == D3DTOP_BLENDCURRENTALPHA ||
-             key->ts[s].colorarg0 == D3DTA_CURRENT ||
-             key->ts[s].colorarg1 == D3DTA_CURRENT ||
-             key->ts[s].colorarg2 == D3DTA_CURRENT ||
-             key->ts[s].alphaarg0 == D3DTA_CURRENT ||
-             key->ts[s].alphaarg1 == D3DTA_CURRENT ||
-             key->ts[s].alphaarg2 == D3DTA_CURRENT)) {
-            /* Initialize D3DTA_CURRENT.
-             * (Yes we can do this before the loop but not until
-             *  NVE4 has an instruction scheduling pass.)
-             */
-            ureg_MOV(ureg, ps.rCur, ps.vC[0]);
-        }
-
         if (key->ts[s].colorop == D3DTOP_BUMPENVMAP ||
             key->ts[s].colorop == D3DTOP_BUMPENVMAPLUMINANCE)
             continue;