st/nine: Ignore swizzle on samplers
authorAxel Davy <davyaxel0@gmail.com>
Thu, 11 Mar 2021 17:33:24 +0000 (18:33 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 14 Apr 2021 08:33:13 +0000 (08:33 +0000)
Prevents a crash running wine tests

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
Acked-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10160>

src/gallium/frontends/nine/nine_shader.c

index 5392420..07d8919 100644 (file)
@@ -1095,7 +1095,7 @@ tx_src_param(struct shader_translator *tx, const struct sm1_src_param *param)
         break;
     case D3DSPR_SAMPLER:
         assert(param->mod == NINED3DSPSM_NONE);
-        assert(param->swizzle == NINED3DSP_NOSWIZZLE);
+        /* assert(param->swizzle == NINED3DSP_NOSWIZZLE); Passed by wine tests */
         src = ureg_DECL_sampler(ureg, param->idx);
         break;
     case D3DSPR_CONST:
@@ -1204,7 +1204,7 @@ tx_src_param(struct shader_translator *tx, const struct sm1_src_param *param)
         break;
     }
 
-    if (param->swizzle != NINED3DSP_NOSWIZZLE)
+    if (param->swizzle != NINED3DSP_NOSWIZZLE && param->file != D3DSPR_SAMPLER)
         src = ureg_swizzle(src,
                            (param->swizzle >> 0) & 0x3,
                            (param->swizzle >> 2) & 0x3,