Module: Mesa Branch: main Commit: 9ab9df39417af23bf07967fb66eaf8f9e6c8dab3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ab9df39417af23bf07967fb66eaf8f9e6c8dab3
Author: Lucas Stach <l.st...@pengutronix.de> Date: Mon Oct 16 20:03:39 2023 +0200 etnaviv: track resource sharing Track if resources are shared outside of the screen, which means changes to the resource must be visible to the external observers after a flush and the resource might be manipulated by other agents than the contexts from the screen. Signed-off-by: Lucas Stach <l.st...@pengutronix.de> Reviewed-by: Christian Gmeiner <cgmei...@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25756> --- src/gallium/drivers/etnaviv/etnaviv_resource.c | 2 ++ src/gallium/drivers/etnaviv/etnaviv_resource.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c index aab21d95d95..87fdf8a4a90 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c @@ -678,6 +678,7 @@ etna_resource_from_handle(struct pipe_screen *pscreen, rsc->layout = modifier_to_layout(modifier); rsc->modifier = modifier; + rsc->shared = true; if (usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) rsc->explicit_flush = true; @@ -780,6 +781,7 @@ etna_resource_get_handle(struct pipe_screen *pscreen, } handle->modifier = etna_resource_modifier(rsc); + rsc->shared = true; if (!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH)) rsc->explicit_flush = false; diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.h b/src/gallium/drivers/etnaviv/etnaviv_resource.h index 1c480a8666f..df1b1c42032 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.h +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.h @@ -209,6 +209,8 @@ struct etna_resource { struct pipe_resource *render; /* frontend flushes resource via an explicit call to flush_resource */ bool explicit_flush; + /* resource is shared outside of the screen */ + bool shared; }; /* returns TRUE if a is newer than b */