aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-10-11 16:39:25 -0700
committerIan Romanick <[email protected]>2017-07-13 13:41:09 -0700
commitadd72599d9aba53753a311db13332531c3635176 (patch)
tree1809cd4324e036be65c581b4896f1f6ddf93058a
parent42c64b5f87531367eb554188fd924c885c8cecde (diff)
i965/urb: Trigger upload_urb on NEW_BLORP
It's a bit rare, but blorp can trigger a urb reconfiguration. When that happens, we need to re-upload the URB config. Previoulsy blorp would set BRW_NEW_URB_SIZE, but this is a pretty big hammer as it would cause back-to-black blorp operations to reconfigure both times. Using BRW_NEW_BLORP is a small, more accurate hammer. v2 (idr): Sort BRW_NEW_ tokens to match brw_recalculate_urb_fence and gen6_urb. v3 (idr): Don't whack BRW_NEW_URB_SIZE in blorp. Suggested by Jason. Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/gen7_urb.c3
-rw-r--r--src/mesa/drivers/dri/i965/genX_blorp_exec.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/gen7_urb.c b/src/mesa/drivers/dri/i965/gen7_urb.c
index 525c9c4d3da..c4b479ceb9b 100644
--- a/src/mesa/drivers/dri/i965/gen7_urb.c
+++ b/src/mesa/drivers/dri/i965/gen7_urb.c
@@ -236,7 +236,8 @@ gen7_upload_urb(struct brw_context *brw, unsigned vs_size,
const struct brw_tracked_state gen7_urb = {
.dirty = {
.mesa = 0,
- .brw = BRW_NEW_CONTEXT |
+ .brw = BRW_NEW_BLORP |
+ BRW_NEW_CONTEXT |
BRW_NEW_URB_SIZE |
BRW_NEW_GS_PROG_DATA |
BRW_NEW_TCS_PROG_DATA |
diff --git a/src/mesa/drivers/dri/i965/genX_blorp_exec.c b/src/mesa/drivers/dri/i965/genX_blorp_exec.c
index 8fd17fb053b..af3d60919d9 100644
--- a/src/mesa/drivers/dri/i965/genX_blorp_exec.c
+++ b/src/mesa/drivers/dri/i965/genX_blorp_exec.c
@@ -183,8 +183,6 @@ blorp_emit_urb_config(struct blorp_batch *batch,
brw->urb.vsize >= vs_entry_size)
return;
- brw->ctx.NewDriverState |= BRW_NEW_URB_SIZE;
-
gen7_upload_urb(brw, vs_entry_size, false, false);
#elif GEN_GEN == 6
gen6_upload_urb(brw, vs_entry_size, false, 0);