iris: Fix handling of SIMD32 fragment shaders
authorJason Ekstrand <jason@jlekstrand.net>
Sat, 3 Aug 2019 16:37:34 +0000 (11:37 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Sat, 3 Aug 2019 22:24:40 +0000 (22:24 +0000)
commitaebca3961b4161574b889201f48c38bd73e2f7c3
tree75bf97893ca1ae66b7966d3c9a4fb5793fc92de9
parent9f37c9903b87f86a533bfaffa72f0ecb285b02b2
iris: Fix handling of SIMD32 fragment shaders

The brw_wm_prog_data_dispatch_grf_start_reg and _prog_offset helpers
read the _NPixelDispatchEnable fields from 3DSTATE_PS to figure out
which bits to pull out of the prog data and stuff where.  Therefore,
they need to be called with the final set of _NPixelDispatchEnable bits
after we've done the workaround for SIMD32 and 16x MSAA.  Otherwise, if
you end up with a somewhat odd combination of enables, the GRF start reg
and KSP data ends up in the wrong slots.  In particular, running
SIMD32-only is broken but several other combinations are as well.

Fixes: 5445c176e27ba "iris: Disable SIMD32 when using a 16x MSAA..."
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/drivers/iris/iris_state.c