softpipe: add a better fake implementation of fences
The flush function, when asked for, should not return a NULL fence. NULL can only be returned if fences are not implemented, and st/mesa doesn't call any of the fence functions if it receives a NULL fence (because some drivers don't even set the fence hooks). ARB_sync is exposed if fence_finish is set.
This commit is contained in:
@@ -36,8 +36,7 @@ softpipe_fence_reference(struct pipe_screen *screen,
|
||||
struct pipe_fence_handle **ptr,
|
||||
struct pipe_fence_handle *fence)
|
||||
{
|
||||
assert(!*ptr);
|
||||
assert(!fence);
|
||||
*ptr = fence;
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +44,7 @@ static boolean
|
||||
softpipe_fence_signalled(struct pipe_screen *screen,
|
||||
struct pipe_fence_handle *fence)
|
||||
{
|
||||
assert(!fence);
|
||||
assert(fence);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -55,7 +54,7 @@ softpipe_fence_finish(struct pipe_screen *screen,
|
||||
struct pipe_fence_handle *fence,
|
||||
uint64_t timeout)
|
||||
{
|
||||
assert(!fence);
|
||||
assert(fence);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -96,9 +96,9 @@ softpipe_flush( struct pipe_context *pipe,
|
||||
++frame_no;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (fence)
|
||||
*fence = NULL;
|
||||
*fence = (void*)(intptr_t)1;
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user