Suggested by Chris Wilson to prevent utterly strange gpu hangs.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
free(batch);
}
+#define CMD_POLY_STIPPLE_OFFSET 0x7906
+
void
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 */
OUT_BATCH(src_pitch);
OUT_RELOC(busy_bo, I915_GEM_DOMAIN_RENDER, 0, 0);
ADVANCE_BATCH();
-
- if (IS_GEN5(devid)) {
- BEGIN_BATCH(2);
- OUT_BATCH(CMD_POLY_STIPPLE_OFFSET << 16);
- OUT_BATCH(0);
- ADVANCE_BATCH();
- }
}
static unsigned int copyfunc_seq = 0;
OUT_RELOC(src->bo, I915_GEM_DOMAIN_RENDER, 0, 0);
ADVANCE_BATCH();
- if (IS_GEN5(devid)) {
- BEGIN_BATCH(2);
- OUT_BATCH(CMD_POLY_STIPPLE_OFFSET << 16);
- OUT_BATCH(0);
- ADVANCE_BATCH();
- }
-
if (!(keep_gpu_busy_counter & 1) && !fence_storm)
keep_gpu_busy();