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:
|
* For now they can stay, but will likely change/move before final:
|
||||||
*/
|
*/
|
||||||
unsigned bmSetFence( struct intel_context * );
|
unsigned bmSetFence( struct intel_context * );
|
||||||
|
unsigned bmSetFenceLock( struct intel_context * );
|
||||||
unsigned bmLockAndFence( struct intel_context *intel );
|
unsigned bmLockAndFence( struct intel_context *intel );
|
||||||
int bmTestFence( struct intel_context *, unsigned fence );
|
int bmTestFence( struct intel_context *, unsigned fence );
|
||||||
void bmFinishFence( 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 * );
|
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 )
|
static int check_fenced( struct intel_context *intel )
|
||||||
{
|
{
|
||||||
struct bufmgr *bm = intel->bm;
|
struct bufmgr *bm = intel->bm;
|
||||||
|
@ -1328,11 +1327,19 @@ unsigned bmSetFence( struct intel_context *intel )
|
||||||
return intel->bm->last_fence;
|
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 )
|
unsigned bmLockAndFence( struct intel_context *intel )
|
||||||
{
|
{
|
||||||
if (intel->bm->need_fence) {
|
if (intel->bm->need_fence) {
|
||||||
LOCK_HARDWARE(intel);
|
LOCK_HARDWARE(intel);
|
||||||
|
LOCK(intel->bm);
|
||||||
bmSetFence(intel);
|
bmSetFence(intel);
|
||||||
|
UNLOCK(intel->bm);
|
||||||
UNLOCK_HARDWARE(intel);
|
UNLOCK_HARDWARE(intel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1350,7 +1357,12 @@ void bmFinishFence( struct intel_context *intel, unsigned fence )
|
||||||
check_fenced(intel);
|
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.
|
/* Specifically ignore texture memory sharing.
|
||||||
|
|
|
@ -66,7 +66,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv,
|
||||||
intelFlush( &intel->ctx );
|
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
|
/* The LOCK_HARDWARE is required for the cliprects. Buffer offsets
|
||||||
* should work regardless.
|
* should work regardless.
|
||||||
|
@ -155,7 +155,7 @@ void intelCopyBuffer( const __DRIdrawablePrivate *dPriv,
|
||||||
|
|
||||||
intel_batchbuffer_flush( intel->batch );
|
intel_batchbuffer_flush( intel->batch );
|
||||||
intel->second_last_swap_fence = intel->last_swap_fence;
|
intel->second_last_swap_fence = intel->last_swap_fence;
|
||||||
intel->last_swap_fence = bmSetFence( intel );
|
intel->last_swap_fence = bmSetFenceLock( intel );
|
||||||
UNLOCK_HARDWARE( intel );
|
UNLOCK_HARDWARE( intel );
|
||||||
|
|
||||||
if (!rect)
|
if (!rect)
|
||||||
|
|
Loading…
Reference in New Issue