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>
This commit is contained in:
Daniel Vetter 2011-03-25 22:09:28 +01:00
parent bfa6f5d94f
commit ad515f817a
2 changed files with 9 additions and 14 deletions

View File

@ -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 */

View File

@ -166,13 +166,6 @@ static void keep_gpu_busy(void)
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;
@ -288,13 +281,6 @@ static void blitter_copyfunc(struct scratch_buf *src, unsigned src_x, unsigned s
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();