lib: fix gen5 workaround emission

Using BEGIN_BATCH can lead to a nice inf recursion through require_space
-> flush_batch -> BEGIN_BATCH.

Also fix things up to always require BATCH_RESERVED. We need 2 dwords
for the gen5 workaround and 2 dwords for MI_BB_END.
This commit is contained in:
Daniel Vetter 2012-05-29 22:14:06 +02:00
parent 04dfa492d1
commit bfbe813f8f
2 changed files with 6 additions and 5 deletions

View File

@ -84,10 +84,11 @@ intel_batchbuffer_flush_on_ring(struct intel_batchbuffer *batch, int ring)
return;
if (IS_GEN5(batch->devid)) {
BEGIN_BATCH(2);
OUT_BATCH(CMD_POLY_STIPPLE_OFFSET << 16);
OUT_BATCH(0);
ADVANCE_BATCH();
/* emit gen5 w/a without batch space checks - we reserve that
* already. */
*(uint32_t *) (batch->ptr) = CMD_POLY_STIPPLE_OFFSET << 16;
*(uint32_t *) (batch->ptr) = 0;
batch->ptr += 8;
}
/* Round batchbuffer usage to 2 DWORDs. */

View File

@ -63,7 +63,7 @@ static inline void
intel_batchbuffer_require_space(struct intel_batchbuffer *batch,
unsigned int sz)
{
assert(sz < BATCH_SZ - 8);
assert(sz < BATCH_SZ - BATCH_RESERVED);
if (intel_batchbuffer_space(batch) < sz)
intel_batchbuffer_flush(batch);
}