diff options
author | Kenneth Graunke <[email protected]> | 2016-11-29 01:37:49 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2017-07-13 19:56:49 -0700 |
commit | 67fec964525a88c975902bdfb4078d722d4f04bf (patch) | |
tree | 1659c9bfa646009c6fd309d8d617f8c33f1f9ad8 | |
parent | 29603ae208fb0031a6746110d448a91ea4071dea (diff) |
i965: Stop re-uploading push constants after URB reconfiguration.
Previously we would re-upload the constant data to the batchbuffer,
then re-emit the packets. We only need to do the last step (causing
the existing data in the batchbuffer to be re-uploaded to the push
constant staging area in the L3).
Now that we've separated the two, it's pretty easy to accomplish.
Reviewed-by: Matt Turner <[email protected]>
-rw-r--r-- | src/mesa/drivers/dri/i965/gen7_urb.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/genX_state_upload.c | 9 |
2 files changed, 7 insertions, 8 deletions
diff --git a/src/mesa/drivers/dri/i965/gen7_urb.c b/src/mesa/drivers/dri/i965/gen7_urb.c index c4b479ceb9b..d5b03ef44fc 100644 --- a/src/mesa/drivers/dri/i965/gen7_urb.c +++ b/src/mesa/drivers/dri/i965/gen7_urb.c @@ -101,7 +101,11 @@ gen7_allocate_push_constants(struct brw_context *brw) * Similar text exists for the other 3DSTATE_PUSH_CONSTANT_ALLOC_* * commands. */ - brw->ctx.NewDriverState |= BRW_NEW_PUSH_CONSTANT_ALLOCATION; + brw->vs.base.push_constants_dirty = true; + brw->tcs.base.push_constants_dirty = true; + brw->tes.base.push_constants_dirty = true; + brw->gs.base.push_constants_dirty = true; + brw->wm.base.push_constants_dirty = true; } void diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c index 267a0a8c200..006bb5096fa 100644 --- a/src/mesa/drivers/dri/i965/genX_state_upload.c +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c @@ -2920,7 +2920,6 @@ static const struct brw_tracked_state genX(vs_push_constants) = { _NEW_TRANSFORM, .brw = BRW_NEW_BATCH | BRW_NEW_BLORP | - BRW_NEW_PUSH_CONSTANT_ALLOCATION | BRW_NEW_VERTEX_PROGRAM | BRW_NEW_VS_PROG_DATA, }, @@ -2951,8 +2950,7 @@ static const struct brw_tracked_state genX(gs_push_constants) = { .brw = BRW_NEW_BATCH | BRW_NEW_BLORP | BRW_NEW_GEOMETRY_PROGRAM | - BRW_NEW_GS_PROG_DATA | - BRW_NEW_PUSH_CONSTANT_ALLOCATION, + BRW_NEW_GS_PROG_DATA, }, .emit = genX(upload_gs_push_constants), }; @@ -2977,8 +2975,7 @@ static const struct brw_tracked_state genX(wm_push_constants) = { .brw = BRW_NEW_BATCH | BRW_NEW_BLORP | BRW_NEW_FRAGMENT_PROGRAM | - BRW_NEW_FS_PROG_DATA | - BRW_NEW_PUSH_CONSTANT_ALLOCATION, + BRW_NEW_FS_PROG_DATA, }, .emit = genX(upload_wm_push_constants), }; @@ -3821,7 +3818,6 @@ static const struct brw_tracked_state genX(tes_push_constants) = { .mesa = _NEW_PROGRAM_CONSTANTS, .brw = BRW_NEW_BATCH | BRW_NEW_BLORP | - BRW_NEW_PUSH_CONSTANT_ALLOCATION | BRW_NEW_TESS_PROGRAMS | BRW_NEW_TES_PROG_DATA, }, @@ -3851,7 +3847,6 @@ static const struct brw_tracked_state genX(tcs_push_constants) = { .brw = BRW_NEW_BATCH | BRW_NEW_BLORP | BRW_NEW_DEFAULT_TESS_LEVELS | - BRW_NEW_PUSH_CONSTANT_ALLOCATION | BRW_NEW_TESS_PROGRAMS | BRW_NEW_TCS_PROG_DATA, }, |