mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
freedreno: fence fix
A fence can outlive the ctx, so we shouldn't deref the ctx to get at the screen. We need some updates in libdrm_freedreno API to completely handle fences properly, but this is at least an improvement. Signed-off-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
parent
8427ad9125
commit
e6f912f07e
1 changed files with 3 additions and 1 deletions
|
|
@ -35,6 +35,7 @@
|
|||
struct pipe_fence_handle {
|
||||
struct pipe_reference reference;
|
||||
struct fd_context *ctx;
|
||||
struct fd_screen *screen;
|
||||
uint32_t timestamp;
|
||||
};
|
||||
|
||||
|
|
@ -68,7 +69,7 @@ boolean fd_screen_fence_finish(struct pipe_screen *screen,
|
|||
struct pipe_fence_handle *fence,
|
||||
uint64_t timeout)
|
||||
{
|
||||
if (fd_pipe_wait(fence->ctx->screen->pipe, fence->timestamp))
|
||||
if (fd_pipe_wait(fence->screen->pipe, fence->timestamp))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
|
@ -86,6 +87,7 @@ struct pipe_fence_handle * fd_fence_create(struct pipe_context *pctx)
|
|||
pipe_reference_init(&fence->reference, 1);
|
||||
|
||||
fence->ctx = ctx;
|
||||
fence->screen = ctx->screen;
|
||||
fence->timestamp = fd_ringbuffer_timestamp(ctx->ring);
|
||||
|
||||
return fence;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue