mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 22:30:12 +01:00
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: c9d99b7eec
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>
This commit is contained in:
parent
c22fbeb72a
commit
e496d24cb2
1 changed files with 1 additions and 0 deletions
|
|
@ -100,6 +100,7 @@ static bool virgl_can_copy_transfer_from_host(struct virgl_screen *vs,
|
||||||
{
|
{
|
||||||
return virgl_can_use_staging(vs, res) &&
|
return virgl_can_use_staging(vs, res) &&
|
||||||
!is_stencil_array(res) &&
|
!is_stencil_array(res) &&
|
||||||
|
!(bind & VIRGL_BIND_SHARED) &&
|
||||||
virgl_has_readback_format(&vs->base, pipe_to_virgl_format(res->b.format), false) &&
|
virgl_has_readback_format(&vs->base, pipe_to_virgl_format(res->b.format), false) &&
|
||||||
((!(vs->caps.caps.v2.capability_bits & VIRGL_CAP_HOST_IS_GLES)) ||
|
((!(vs->caps.caps.v2.capability_bits & VIRGL_CAP_HOST_IS_GLES)) ||
|
||||||
virgl_can_readback_from_rendertarget(vs, res) ||
|
virgl_can_readback_from_rendertarget(vs, res) ||
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue