summaryrefslogtreecommitdiff
path: root/lib/intel_batchbuffer.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2011-03-25 22:09:28 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2011-03-25 22:09:28 +0100
commitad515f817a7e669ec1b7596c88a97349094728e8 (patch)
tree1d90552a6ef07bf92ed60967da9840d775ec13c7 /lib/intel_batchbuffer.c
parentbfa6f5d94ffccfe00a6232e5adaf61d60c7cdde2 (diff)
Move gen5 blitter work-around to lib
Suggested by Chris Wilson to prevent utterly strange gpu hangs. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'lib/intel_batchbuffer.c')
-rw-r--r--lib/intel_batchbuffer.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 449d46de..14446df6 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -72,6 +72,8 @@ intel_batchbuffer_free(struct intel_batchbuffer *batch)
free(batch);
}
+#define CMD_POLY_STIPPLE_OFFSET 0x7906
+
void
intel_batchbuffer_flush(struct intel_batchbuffer *batch)
{
@@ -82,6 +84,13 @@ intel_batchbuffer_flush(struct intel_batchbuffer *batch)
if (used == 0)
return;
+ if (IS_GEN5(batch->devid)) {
+ BEGIN_BATCH(2);
+ OUT_BATCH(CMD_POLY_STIPPLE_OFFSET << 16);
+ OUT_BATCH(0);
+ ADVANCE_BATCH();
+ }
+
/* Round batchbuffer usage to 2 DWORDs. */
if ((used & 4) == 0) {
*(uint32_t *) (batch->ptr) = 0; /* noop */