OSDN Git Service

i965/gen9: Implement Push Constant Buffer workaround
authorBen Widawsky <benjamin.widawsky@intel.com>
Thu, 4 Jun 2015 04:35:51 +0000 (21:35 -0700)
committerEmil Velikov <emil.l.velikov@gmail.com>
Wed, 1 Jul 2015 14:22:39 +0000 (15:22 +0100)
commit9df2ae3305ed616012710ebd3f6722501518480b
tree3f43ee4975cbf62e05eac2ffb9fd825cb982350b
parente82c46de119f6b31cc51d9236d5e41b436ec66a4
i965/gen9: Implement Push Constant Buffer workaround

This implements a workaround (exact excerpt as a comment in the code). The docs
specify [clearly, after you struggle for a while] that the offset isn't relative
to state base. This actually makes sense. This fixes hangs on SKL.

Buffer #0 is meant to be used for normal uniforms.
Buffer #1 is typically used for gather constants when using RS.
Buffer #1-#3 could be used to push a bunch of UBO data which would just be
  somewhere in memory, and not relative to the dynamic state.

NOTE: I've moved away from the ternary operator for the new gen9 conditions.
Admittedly it's probably not great to do this, but I really want to fix this all
up in the subsequent patch and doing it here makes that diff a lot nicer. I want
to split out the gen8/9 code to make the function a bit more readable, but to
keep this easily cherry-pickable I am doing this fix first. If we decide not to
merge the cleanup patch then I can revisit this.

Cc: "10.5 10.6" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Tested-by: Valtteri Rantala <Valtteri.rantala@intel.com>
(cherry picked from commit 90754d2df05eafe1a3ee3cd9bb1611a19099fc49)
src/mesa/drivers/dri/i965/gen7_vs_state.c