diff options
author | Kenneth Graunke <[email protected]> | 2013-05-17 10:55:35 -0700 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2013-05-21 13:29:22 -0700 |
commit | eaa6fbe6d54dc99efac4ab8e800edef65ce8220d (patch) | |
tree | 7a3595add87347728c3c7430a6dfb3a5a9e08206 /src/mesa/drivers | |
parent | 6837ebd00f182b5a73b60a57d47d79f72b6945a3 (diff) |
i965: Stop using the kernel SOL reset feature.
We can just do it ourselves with MI_LOAD_REGISTER_IMM.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Eric Anholt <[email protected]>
Reviewed-by: Paul Berry <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/i965/gen6_sol.c | 13 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_batchbuffer.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_context.h | 1 |
3 files changed, 8 insertions, 10 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_sol.c b/src/mesa/drivers/dri/i965/gen6_sol.c index 3cbf28e7dc4..bb2dd123930 100644 --- a/src/mesa/drivers/dri/i965/gen6_sol.c +++ b/src/mesa/drivers/dri/i965/gen6_sol.c @@ -184,11 +184,14 @@ brw_begin_transform_feedback(struct gl_context *ctx, GLenum mode, brw->sol.offset_0_batch_start = 0; if (intel->gen >= 7) { - /* Ask the kernel to reset the SO offsets for any previous transform - * feedback, so we start at the start of the user's buffer. (note: these - * are not the query counters) - */ - intel->batch.needs_sol_reset = true; + /* Reset the SOL buffer offset register. */ + for (int i = 0; i < 4; i++) { + BEGIN_BATCH(3); + OUT_BATCH(MI_LOAD_REGISTER_IMM | (3 - 2)); + OUT_BATCH(GEN7_SO_WRITE_OFFSET(i)); + OUT_BATCH(0); + ADVANCE_BATCH(); + } } } diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 8c6524e71af..c7f6d56e559 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -96,7 +96,6 @@ intel_batchbuffer_reset(struct intel_context *intel) intel->batch.reserved_space = BATCH_RESERVED; intel->batch.state_batch_offset = intel->batch.bo->size; intel->batch.used = 0; - intel->batch.needs_sol_reset = false; } void @@ -199,9 +198,6 @@ do_flush_locked(struct intel_context *intel) flags = I915_EXEC_BLT; } - if (batch->needs_sol_reset) - flags |= I915_EXEC_GEN7_SOL_RESET; - if (ret == 0) { if (unlikely(INTEL_DEBUG & DEBUG_AUB) && intel->vtbl.annotate_aub) intel->vtbl.annotate_aub(intel); diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index c0f07ff1f3c..8c50e6e6121 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -135,7 +135,6 @@ struct intel_batchbuffer { uint32_t state_batch_offset; bool is_blit; - bool needs_sol_reset; struct { uint16_t used; |