i965: xdemos/glxthreads get: Assertion `block->fenced' failed (9201)
Signed-off-by: Keith Packard <keithp@neko.keithp.com>
This commit is contained in:
parent
652ae2c376
commit
ef02f8be10
|
@ -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 * );
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue