From ab076a870cc456f9f58d3186dd312f927cab1647 Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Sat, 27 Mar 2021 12:36:34 +0100 Subject: [PATCH] st/nine: Fix ps ff BLENDTEXTUREALPHA This ff ps operation has the texture alpha as input. Thus we need to sample the texture. Fixes: https://github.com/iXit/wine-nine-standalone/issues/105 Signed-off-by: Axel Davy --- src/gallium/frontends/nine/nine_ff.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gallium/frontends/nine/nine_ff.c b/src/gallium/frontends/nine/nine_ff.c index 16d0ab2ab5c..8a16270ffe8 100644 --- a/src/gallium/frontends/nine/nine_ff.c +++ b/src/gallium/frontends/nine/nine_ff.c @@ -1351,7 +1351,9 @@ nine_ff_build_ps(struct NineDevice9 *device, struct nine_ff_ps_key *key) if (key->ts[s].colorarg0 == D3DTA_TEXTURE || key->ts[s].colorarg1 == D3DTA_TEXTURE || - key->ts[s].colorarg2 == D3DTA_TEXTURE) { + key->ts[s].colorarg2 == D3DTA_TEXTURE || + key->ts[s].colorop == D3DTOP_BLENDTEXTUREALPHA || + key->ts[s].colorop == D3DTOP_BLENDTEXTUREALPHAPM) { ps.s[s] = ureg_DECL_sampler(ureg, s); ps.vT[s] = ureg_DECL_fs_input(ureg, texcoord_sn, s, TGSI_INTERPOLATE_PERSPECTIVE); } @@ -1368,7 +1370,9 @@ nine_ff_build_ps(struct NineDevice9 *device, struct nine_ff_ps_key *key) if (key->ts[s].alphaarg0 == D3DTA_TEXTURE || key->ts[s].alphaarg1 == D3DTA_TEXTURE || - key->ts[s].alphaarg2 == D3DTA_TEXTURE) { + key->ts[s].alphaarg2 == D3DTA_TEXTURE || + key->ts[s].colorop == D3DTOP_BLENDTEXTUREALPHA || + key->ts[s].colorop == D3DTOP_BLENDTEXTUREALPHAPM) { ps.s[s] = ureg_DECL_sampler(ureg, s); ps.vT[s] = ureg_DECL_fs_input(ureg, texcoord_sn, s, TGSI_INTERPOLATE_PERSPECTIVE); }