These are CPU overhead improvements motivated by viewperf/snx.
- shader variant keys are added into
si_contextand they are updated in bind & set functions instead of
si_shader_selector_key, reducing the overhead of
si_update_shadersis cleaned up and moved to become a C++ template in si_state_draw.cpp to reduce overhead
si_update_spi_mapis cleaned up; its loops, memcmp, and memcpy are unrolled using 33 C++ template instantiations to reduce overhead
- the primitive discard compute shader is removed
- the NGG passthrough mode is removed
SPI_SHADER_PGM_HI_*registers are no longer set for every shader
Tested on gfx10 (Navi10) and gfx8 (Polaris11).