r600: implement callstack workaround for evergreen.
authorDave Airlie <airlied@redhat.com>
Fri, 9 Mar 2018 06:03:53 +0000 (16:03 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 12 Mar 2018 01:11:44 +0000 (11:11 +1000)
commit5d4fbc2b54cb2aaea1cbb52ec087f31009f3ac76
tree56828d4b824b31a509323e4b34478c652685894b
parent163a29099ab62c8b60ccc02d592066e005ec52de
r600: implement callstack workaround for evergreen.

This is ported from the sb backend, there are some issues with
evergreen stacks on the boundary between entries and ALU_PUSH_BEFORE
instructions.

Whenever we are going to use a push before, we check the stack
usage and if we have to use the workaround, then we switch to
a separate push.

I noticed this problem dealing with some of the soft fp64 shaders,
in nosb mode, they are quite stack happy.

This fixes all the glitches and inconsistencies I've seen with them

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Tested-by: Elie Tournier <elie.tournier@collabora.com>
Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c