r300: don't convert to constant swizzles when translating from TGSI
authorPavel Ondračka <pavel.ondracka@gmail.com>
Mon, 2 Jan 2023 16:23:44 +0000 (17:23 +0100)
committerMarge Bot <emma+marge@anholt.net>
Tue, 3 Jan 2023 23:23:26 +0000 (23:23 +0000)
commit421bf657bf33200b1aa97d7ae887971e561ef556
tree312889b0f722a452628c8983dbebfd1c1568bee2
parent7decc7efbacf9382a150733679d638d56e878e26
r300: don't convert to constant swizzles when translating from TGSI

We currently convert it twice for unknown reasons, first when
translating from TGSI and later in constant folding. Not only is this
unnecessary, the first translation doesn't check for non-native
swizzles, so removing it actually saves few instructions and gains
a single Unigine shader for R300 at the expense of few more constant
loads and temps.

Also fixes few dEQPs because we could previously generate code like
TEX temp[1], none.01__, 2D[0];
and the native swizzle rewrite pass was not ready for it.

RV370 shader-db:

total instructions in shared programs: 84441 -> 84436 (<.01%)
instructions in affected programs: 63 -> 58 (-7.94%)
helped: 4
HURT: 0

total temps in shared programs: 12398 -> 12400 (0.02%)
temps in affected programs: 10 -> 12 (20.00%)
helped: 1
HURT: 3

total consts in shared programs: 79081 -> 79090 (0.01%)
consts in affected programs: 12 -> 21 (75.00%)
helped: 0
HURT: 7

GAINED: shaders/tropics/465.shader_test FS

No shader-db change with RV530.

Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reviewed-by: Filip Gawin <filip@gawin.net>
Tested-by: Filip Gawin <filip@gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20484>
src/gallium/drivers/r300/ci/r300-r480-fails.txt
src/gallium/drivers/r300/r300_fs.c
src/gallium/drivers/r300/r300_tgsi_to_rc.c
src/gallium/drivers/r300/r300_tgsi_to_rc.h
src/gallium/drivers/r300/r300_vs.c