summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Vetter <[email protected]>2011-09-25 18:02:34 +0200
committerDaniel Vetter <[email protected]>2011-10-07 14:31:17 +0200
commit0a6131b15c874c076781a8dc347b4e51be15801a (patch)
tree144b8b2e4971ae4f8cd0f58fc705ab8f63cb515a /src
parentb8f3381f2c8afc469ac48e1a4f9c50ba2438d43b (diff)
i915g: disable scissor in fast clear
Docs say this is obeyed. Signed-off-by: Daniel Vetter <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/i915/i915_clear.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gallium/drivers/i915/i915_clear.c b/src/gallium/drivers/i915/i915_clear.c
index aa453bce580..a0aba0201f5 100644
--- a/src/gallium/drivers/i915/i915_clear.c
+++ b/src/gallium/drivers/i915/i915_clear.c
@@ -102,15 +102,17 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers,
if (i915->hardware_dirty)
i915_emit_hardware_state(i915);
- if (!BEGIN_BATCH(7 + 7)) {
+ if (!BEGIN_BATCH(1 + 7 + 7)) {
FLUSH_BATCH(NULL);
i915_emit_hardware_state(i915);
i915->vbo_flushed = 1;
- assert(BEGIN_BATCH(7 + 7));
+ assert(BEGIN_BATCH(1 + 7 + 7));
}
+ OUT_BATCH(_3DSTATE_SCISSOR_ENABLE_CMD | DISABLE_SCISSOR_RECT);
+
OUT_BATCH(_3DSTATE_CLEAR_PARAMETERS);
OUT_BATCH(clear_params | CLEARPARAM_CLEAR_RECT);
/* Used for zone init prim */
@@ -130,8 +132,8 @@ i915_clear_emit(struct pipe_context *pipe, unsigned buffers,
OUT_BATCH_F(desty);
/* Flush after clear, its expected to be a costly operation.
- * This is not required, just a heuristic
- */
+ * This is not required, just a heuristic, but without the flush we'd need to
+ * clobber the SCISSOR_ENABLE dynamic state. */
FLUSH_BATCH(NULL);
i915->last_fired_vertices = i915->fired_vertices;