From 47eabd0e6b926535a68a7173eba2ceeb4ed9747e Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Tue, 11 May 2021 21:31:19 +0000 Subject: [PATCH] virgl: do not use winsys info for guest storage of classic resource winsys_stride is the stride of the host storage of the classic resource, and using that breaks the readback on the guest storage. v2: move the scrubbing to virgl_resource_from_handle The returned modifier also points directly to the host driver's real modifier but not a virtualized one. Leave plane_offset as zero here matches the prior behavior before introducing winsys info. Signed-off-by: Yiwei Zhang Reviewed-by: Gurchetan Singh (v1) Reviewed-by: Chia-I Wu (v2) Part-of: --- src/gallium/drivers/virgl/virgl_resource.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c index 76f0741cc03..4fc2eab8cfb 100644 --- a/src/gallium/drivers/virgl/virgl_resource.c +++ b/src/gallium/drivers/virgl/virgl_resource.c @@ -575,6 +575,13 @@ static struct pipe_resource *virgl_resource_from_handle(struct pipe_screen *scre &modifier, &res->blob_mem); + /* do not use winsys returns for guest storage info of classic resource */ + if (!res->blob_mem) { + winsys_stride = 0; + plane_offset = 0; + modifier = 0; + } + virgl_resource_layout(&res->u.b, &res->metadata, plane, winsys_stride, plane_offset, modifier); if (!res->hw_res) {