aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa/0001-virgl-don-t-a-use-staging-when-a-resources-created-w.patch48
-rw-r--r--meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend4
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)}