i965/gen9: Implement Push Constant Buffer workaround

Graphics / Mesa 3D Graphics Library / Mesa - Ben Widawsky [intel.com] - 22 June 2015 14:11 UTC

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"

90754d2 i965/gen9: Implement Push Constant Buffer workaround
src/mesa/drivers/dri/i965/gen7_vs_state.c | 48 ++++++++++++++++++++++++-----
1 file changed, 41 insertions(+), 7 deletions(-)

Upstream: cgit.freedesktop.org


  • Share