From e9f25619d276d2d12142658313d730056109351e Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Tue, 28 Mar 2023 17:27:24 +0300 Subject: meta-core/recipes-graphics/mesa: Backport a fix from 22.2.5 This adds 0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch which is a backport from mesa 22.2.5 as a tentative fix for running on virgl on the x86 platform. This issue seems have been fixed 22.2.4 and 22.2.5, but the original change was initially quite a long time before in 22.0.X and we seem to be using 22.0.3. This also seems to affect Xen when updating it from 4.16 to 4.18. Bug-AGL: SPEC-4724 Change-Id: I255e30d8e513b8f3bbfa720a24c1afcbd40af2c9 Reported-by: Rahul Kumar Tested-by: Rahul Kumar Signed-off-by: Marius Vlad Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/28580 Tested-by: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller --- ...-a-use-staging-when-a-resources-created-w.patch | 48 ++++++++++++++++++++++ .../recipes-graphics/mesa/mesa_%.bbappend | 4 ++ 2 files changed, 52 insertions(+) create mode 100644 meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa/0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch 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 +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: +(cherry picked from commit e496d24cb2d5339566c08c79a8aa7809c240613c) + +Signed-off-by: Marius Vlad +(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)} -- cgit 1.2.3-korg