st/nine: PositionT and Tessfactor are forbidden as PS input
authorAxel Davy <axel.davy@ens.fr>
Tue, 9 Feb 2016 22:33:51 +0000 (23:33 +0100)
committerAxel Davy <axel.davy@ens.fr>
Wed, 18 May 2016 21:37:14 +0000 (23:37 +0200)
According to wine tests, they are forbidden as PS input,
which makes sense.

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

index a9d5a59d68a6a1c9f0b8d0df3734214e837250c5..1a54fc1f037cff0004d6e036e0c01a369c33cc0f 100644 (file)
@@ -2052,11 +2052,13 @@ DECL_SPECIAL(DCL)
             unsigned interp_location = 0;
             /* SM3 only, SM2 input semantic determined by file */
             assert(sem.reg.idx < ARRAY_SIZE(tx->regs.v));
+            /* PositionT and tessfactor forbidden */
+            if (sem.usage == D3DDECLUSAGE_POSITIONT || sem.usage == D3DDECLUSAGE_TESSFACTOR)
+                return D3DERR_INVALIDCALL;
 
             if (tgsi.Name == TGSI_SEMANTIC_POSITION) {
-                /* Position0/PositionT0 are forbidden (likely because vPos already does that) */
-                if (sem.usage == D3DDECLUSAGE_POSITION ||
-                    sem.usage == D3DDECLUSAGE_POSITIONT)
+                /* Position0 is forbidden (likely because vPos already does that) */
+                if (sem.usage == D3DDECLUSAGE_POSITION)
                     return D3DERR_INVALIDCALL;
                 /* Following code is for depth */
                 tx->regs.v[sem.reg.idx] = nine_get_position_input(tx);