summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/gen7_sol_state.c
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2013-05-20 15:25:28 -0700
committerKenneth Graunke <kenneth@whitecape.org>2013-05-21 13:29:40 -0700
commitb29381567a83b47ef92e6e4e8e7c402550f467cb (patch)
treee97e262d097573c72cb7c32b269e06fd6490d953 /src/mesa/drivers/dri/i965/gen7_sol_state.c
parent64a87f29ce29d3c2e01b7fd79386bf6ace454f62 (diff)
downloadexternal_mesa3d-b29381567a83b47ef92e6e4e8e7c402550f467cb.zip
external_mesa3d-b29381567a83b47ef92e6e4e8e7c402550f467cb.tar.gz
external_mesa3d-b29381567a83b47ef92e6e4e8e7c402550f467cb.tar.bz2
i965: Split BeginTransformFeedback hook into Gen6 and Gen7+ variants.
Most of the work in BeginTransformFeedback is only necessary on Gen6. We may as well just skip it on Gen7+. v2: Add an intel->gen == 6 assert. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Paul Berry <stereotype441@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/gen7_sol_state.c')
-rw-r--r--src/mesa/drivers/dri/i965/gen7_sol_state.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/gen7_sol_state.c b/src/mesa/drivers/dri/i965/gen7_sol_state.c
index 2c4b7f9..8dfac01 100644
--- a/src/mesa/drivers/dri/i965/gen7_sol_state.c
+++ b/src/mesa/drivers/dri/i965/gen7_sol_state.c
@@ -254,6 +254,23 @@ const struct brw_tracked_state gen7_sol_state = {
};
void
+gen7_begin_transform_feedback(struct gl_context *ctx, GLenum mode,
+ struct gl_transform_feedback_object *obj)
+{
+ struct brw_context *brw = brw_context(ctx);
+ struct intel_context *intel = &brw->intel;
+
+ /* 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();
+ }
+}
+
+void
gen7_end_transform_feedback(struct gl_context *ctx,
struct gl_transform_feedback_object *obj)
{