diff --git a/configure.ac b/configure.ac index a9babec9a4b..5f5e76040dc 100644 --- a/configure.ac +++ b/configure.ac @@ -78,7 +78,7 @@ LIBDRM_AMDGPU_REQUIRED=2.4.91 LIBDRM_INTEL_REQUIRED=2.4.75 LIBDRM_NVVIEUX_REQUIRED=2.4.66 LIBDRM_NOUVEAU_REQUIRED=2.4.66 -LIBDRM_FREEDRENO_REQUIRED=2.4.91 +LIBDRM_FREEDRENO_REQUIRED=2.4.92 LIBDRM_ETNAVIV_REQUIRED=2.4.89 dnl Versions for external dependencies diff --git a/meson.build b/meson.build index e52b4a51093..9a538e99511 100644 --- a/meson.build +++ b/meson.build @@ -1041,7 +1041,7 @@ _drm_amdgpu_ver = '2.4.91' _drm_radeon_ver = '2.4.71' _drm_nouveau_ver = '2.4.66' _drm_etnaviv_ver = '2.4.89' -_drm_freedreno_ver = '2.4.91' +_drm_freedreno_ver = '2.4.92' _drm_intel_ver = '2.4.75' _drm_ver = '2.4.75' diff --git a/src/gallium/drivers/freedreno/freedreno_fence.c b/src/gallium/drivers/freedreno/freedreno_fence.c index 1925f726a25..c4e20226b58 100644 --- a/src/gallium/drivers/freedreno/freedreno_fence.c +++ b/src/gallium/drivers/freedreno/freedreno_fence.c @@ -41,7 +41,7 @@ struct pipe_fence_handle { * fence_fd become valid and the week reference is dropped. */ struct fd_batch *batch; - struct fd_context *ctx; + struct fd_pipe *pipe; struct fd_screen *screen; int fence_fd; uint32_t timestamp; @@ -68,6 +68,7 @@ static void fd_fence_destroy(struct pipe_fence_handle *fence) { if (fence->fence_fd != -1) close(fence->fence_fd); + fd_pipe_del(fence->pipe); FREE(fence); } @@ -93,7 +94,7 @@ boolean fd_fence_finish(struct pipe_screen *pscreen, return ret == 0; } - if (fd_pipe_wait_timeout(fence->ctx->pipe, fence->timestamp, timeout)) + if (fd_pipe_wait_timeout(fence->pipe, fence->timestamp, timeout)) return false; return true; @@ -111,7 +112,7 @@ static struct pipe_fence_handle * fence_create(struct fd_context *ctx, pipe_reference_init(&fence->reference, 1); fence->batch = batch; - fence->ctx = ctx; + fence->pipe = fd_pipe_ref(ctx->pipe); fence->screen = ctx->screen; fence->timestamp = timestamp; fence->fence_fd = fence_fd;