diff options
Diffstat (limited to 'meta-agl-bsp/meta-core')
-rw-r--r-- | meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa/0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch | 48 | ||||
-rw-r--r-- | meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend | 4 |
2 files changed, 52 insertions, 0 deletions
diff --git a/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa/0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa/0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch new file mode 100644 index 000000000..9d6b2f3d0 --- /dev/null +++ b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa/0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch @@ -0,0 +1,48 @@ +From f50ff0b5cf2bfedfc2fd660ccfbfd5cfc3c131d1 Mon Sep 17 00:00:00 2001 +From: Marius Vlad <marius.vlad@collabora.com> +Date: Tue, 28 Mar 2023 15:33:26 +0300 +Subject: [PATCH] virgl: don't a use staging when a resources created with the + shared flag + +There seems to be a problem with running firefox by using Xwayland that +results in a shared resources being not always tagged as using staging. + +As a result one process tries to map the resource that was allocated as +one that uses staging without actually using the staging resource, and +hence the mapped range only accounts for the small region that we have +to allocated because a zero-allocation doesn't work, but the application +mapping the resource assumes that a properly sized range is mapped, and +consequently this results in invalid memory access. + +To work around this issue disable creating staging for resources that +are created by using shared binding. It is not clear to me whether this +is the best fix, but it seems to quell the issue. + +Fixes: c9d99b7eec7ec14d6d71d381a424b6280d75a882 +virgl: Fix texture transfers by using a staging resource + +Related: https://gitlab.freedesktop.org/virgl/virglrenderer/-/issues/291 +Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19655> +(cherry picked from commit e496d24cb2d5339566c08c79a8aa7809c240613c) + +Signed-off-by: Marius Vlad <marius.vlad@collabora.com> +(cherry picked from commit 39e9ea1419beb22ab7f4913b6d55f845f94d689a) +--- + src/gallium/drivers/virgl/virgl_resource.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c +index 7185c9a90ff..257b790d437 100644 +--- a/src/gallium/drivers/virgl/virgl_resource.c ++++ b/src/gallium/drivers/virgl/virgl_resource.c +@@ -100,6 +100,7 @@ static bool virgl_can_copy_transfer_from_host(struct virgl_screen *vs, + { + return virgl_can_use_staging(vs, res) && + !is_stencil_array(res) && ++ !(bind & VIRGL_BIND_SHARED) && + virgl_has_readback_format(&vs->base, pipe_to_virgl_format(res->b.format), false) && + ((!(vs->caps.caps.v2.capability_bits & VIRGL_CAP_FAKE_FP64)) || + virgl_can_readback_from_rendertarget(vs, res) || +-- +2.35.1 + diff --git a/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend index 3d5903d85..27dd78371 100644 --- a/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend +++ b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend @@ -1 +1,5 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch" + require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)} |