i965: xdemos/glxthreads get: Assertion `block->fenced' failed (9201)

Signed-off-by: Keith Packard <keithp@neko.keithp.com>
This commit is contained in:
Zou Nan hai 2006-12-13 15:27:17 +08:00 committed by Keith Packard
parent 652ae2c376
commit ef02f8be10
3 changed files with 18 additions and 4 deletions

View File

@ -199,9 +199,11 @@ void *bmFindVirtual( struct intel_context *intel,
* For now they can stay, but will likely change/move before final:
*/
unsigned bmSetFence( struct intel_context * );
unsigned bmSetFenceLock( struct intel_context * );
unsigned bmLockAndFence( struct intel_context *intel );
int bmTestFence( struct intel_context *, unsigned fence );
void bmFinishFence( struct intel_context *, unsigned fence );
void bmFinishFenceLock( struct intel_context *, unsigned fence );
void bm_fake_NotifyContendedLockTake( struct intel_context * );

View File

@ -338,7 +338,6 @@ static int evict_mru( struct intel_context *intel, GLuint *pool )
}
static int check_fenced( struct intel_context *intel )
{
struct bufmgr *bm = intel->bm;
@ -1328,11 +1327,19 @@ unsigned bmSetFence( struct intel_context *intel )
return intel->bm->last_fence;
}
unsigned bmSetFenceLock( struct intel_context *intel )
{
LOCK(intel->bm);
bmSetFence(intel);
UNLOCK(intel->bm);
}
unsigned bmLockAndFence( struct intel_context *intel )
{
if (intel->bm->need_fence) {
LOCK_HARDWARE(intel);
LOCK(intel->bm);
bmSetFence(intel);
UNLOCK(intel->bm);
UNLOCK_HARDWARE(intel);
}
@ -1350,7 +1357,12 @@ void bmFinishFence( struct intel_context *intel, unsigned fence )
check_fenced(intel);
}
void bmFinishFenceLock( struct intel_context *intel, unsigned fence )
{
LOCK(intel->bm);
bmFinishFence(intel, fence);
UNLOCK(intel->bm);
}
/* Specifically ignore texture memory sharing.

View File

@ -66,7 +66,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv,
intelFlush( &intel->ctx );
bmFinishFence(intel, intel->last_swap_fence);
bmFinishFenceLock(intel, intel->last_swap_fence);
/* The LOCK_HARDWARE is required for the cliprects. Buffer offsets
* should work regardless.
@ -155,7 +155,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv,
intel_batchbuffer_flush( intel->batch );
intel->second_last_swap_fence = intel->last_swap_fence;
intel->last_swap_fence = bmSetFence( intel );
intel->last_swap_fence = bmSetFenceLock( intel );
UNLOCK_HARDWARE( intel );
if (!rect)