freedreno/ir3: Improve shader key normalization.
authorEric Anholt <eric@anholt.net>
Tue, 14 Apr 2020 23:34:00 +0000 (16:34 -0700)
committerMarge Bot <eric+marge@anholt.net>
Fri, 1 May 2020 16:26:32 +0000 (16:26 +0000)
commit8c1c21890969ce0f6e0df28522f04cdcd7dd482f
tree7b7f7c094094fee0284dc8585463d4895fd66c0f
parent6f1e3235f246048061d3126757d875d1ec05cccc
freedreno/ir3: Improve shader key normalization.

We can remove a bunch of conditional code at key comparison time by
computing a bitmask of used key bits at ir3_shader creation time.  This
also gives us a nice place to put additional key simplification to reduce
how many variants we create (like skipping rastflat if we don't read
colors in the FS, or skipping vclamp_color if we don't write colors).

It does mean walking the whole key to AND it, but the key is just 28 bytes
so far so that seems pretty fine.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4562>
src/compiler/shader_enums.h
src/freedreno/ir3/ir3_shader.c
src/freedreno/ir3/ir3_shader.h
src/gallium/drivers/freedreno/ir3/ir3_gallium.c