i915: Fixed fence related problems
This commit is contained in:
@@ -386,8 +386,10 @@ intel_batchbuffer_flush(struct intel_batchbuffer *batch)
|
||||
GLboolean was_locked = intel->locked;
|
||||
struct _DriFenceObject *fence;
|
||||
|
||||
if (used == 0)
|
||||
if (used == 0) {
|
||||
driFenceReference(batch->last_fence);
|
||||
return batch->last_fence;
|
||||
}
|
||||
|
||||
/* Add the MI_BATCH_BUFFER_END. Always add an MI_FLUSH - this is a
|
||||
* performance drain that we would like to avoid.
|
||||
|
||||
@@ -113,10 +113,10 @@ static void intel_i915_batch_reloc( struct i915_winsys *sws,
|
||||
delta );
|
||||
#else /* new */
|
||||
intel_offset_relocation( intel->batch,
|
||||
delta,
|
||||
dri_bo( buf ),
|
||||
flags,
|
||||
mask );
|
||||
delta,
|
||||
dri_bo( buf ),
|
||||
flags,
|
||||
mask );
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -132,9 +132,13 @@ static void intel_i915_batch_flush( struct i915_winsys *sws,
|
||||
struct pipe_fence_handle *pipe;
|
||||
} fu;
|
||||
|
||||
if (fence)
|
||||
assert(!*fence);
|
||||
|
||||
fu.dri = intel_batchbuffer_flush( intel->batch );
|
||||
|
||||
if (!fu.dri && fence) {
|
||||
if (!fu.dri) {
|
||||
assert(0);
|
||||
*fence = NULL;
|
||||
return;
|
||||
}
|
||||
@@ -143,11 +147,9 @@ static void intel_i915_batch_flush( struct i915_winsys *sws,
|
||||
if (fence)
|
||||
*fence = fu.pipe;
|
||||
else
|
||||
iws->pws->fence_reference(iws->pws, &fu.dri, NULL);
|
||||
driFenceUnReference(&fu.dri);
|
||||
}
|
||||
|
||||
|
||||
// if (0) intel_i915_batch_wait_idle( sws );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user