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)
committerBen Widawsky <benjamin.widawsky@intel.com>
Mon, 22 Jun 2015 19:11:41 +0000 (12:11 -0700)
commit90754d2df05eafe1a3ee3cd9bb1611a19099fc49
tree6040e730ccdd9afb7b9d9e2a63fd192d4a1d631d
parent2b07b8d104a93c26ac92edb3ba72328cdc2dcb52
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>
src/mesa/drivers/dri/i965/gen7_vs_state.c