summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Olšák <maraeo@gmail.com>2011-06-02 00:50:45 +0200
committerMarek Olšák <maraeo@gmail.com>2011-06-02 16:50:46 +0200
commitbddf275db44695e3850c4b62b8f4b77d93299ae9 (patch)
tree53038f1c9fc6b45365222e4faccb2b275c81053a
parentf62e1f41b4d6047e72222aebbb0b55a508269b0c (diff)
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.
-rw-r--r--src/gallium/drivers/softpipe/sp_fence.c7
-rw-r--r--src/gallium/drivers/softpipe/sp_flush.c4
2 files changed, 5 insertions, 6 deletions
diff --git a/src/gallium/drivers/softpipe/sp_fence.c b/src/gallium/drivers/softpipe/sp_fence.c
index 7b79a0df4e..c2897ed1ef 100644
--- a/src/gallium/drivers/softpipe/sp_fence.c
+++ b/src/gallium/drivers/softpipe/sp_fence.c
@@ -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;
}
diff --git a/src/gallium/drivers/softpipe/sp_flush.c b/src/gallium/drivers/softpipe/sp_flush.c
index 720fea83cb..a2733e9587 100644
--- a/src/gallium/drivers/softpipe/sp_flush.c
+++ b/src/gallium/drivers/softpipe/sp_flush.c
@@ -96,9 +96,9 @@ softpipe_flush( struct pipe_context *pipe,
++frame_no;
}
#endif
-
+
if (fence)
- *fence = NULL;
+ *fence = (void*)(intptr_t)1;
}
void