Commit 3dfe61ed6ec6 ("gallium: decrease the size of pipe_box - 24 -> 16 bytes") changed the size of pipe_box, but the virgl code was relying on pipe_box and drm_virtgpu_3d_box structs having the same size/layout doing a struct copy. Copy the fields one by one instead.
Cc: Marek Olšák <marek.ol...@amd.com> Cc: Dave Airlie <airl...@redhat.com> Signed-off-by: Rob Herring <r...@kernel.org> --- src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c index 4708126aed9d..0edae4767e6b 100644 --- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c +++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c @@ -264,7 +264,12 @@ virgl_bo_transfer_put(struct virgl_winsys *vws, memset(&tohostcmd, 0, sizeof(tohostcmd)); tohostcmd.bo_handle = res->bo_handle; - tohostcmd.box = *(struct drm_virtgpu_3d_box *)box; + tohostcmd.box.x = box->x; + tohostcmd.box.y = box->y; + tohostcmd.box.z = box->z; + tohostcmd.box.w = box->width; + tohostcmd.box.h = box->height; + tohostcmd.box.d = box->depth; tohostcmd.offset = buf_offset; tohostcmd.level = level; // tohostcmd.stride = stride; @@ -288,7 +293,12 @@ virgl_bo_transfer_get(struct virgl_winsys *vws, fromhostcmd.offset = buf_offset; // fromhostcmd.stride = stride; // fromhostcmd.layer_stride = layer_stride; - fromhostcmd.box = *(struct drm_virtgpu_3d_box *)box; + fromhostcmd.box.x = box->x; + fromhostcmd.box.y = box->y; + fromhostcmd.box.z = box->z; + fromhostcmd.box.w = box->width; + fromhostcmd.box.h = box->height; + fromhostcmd.box.d = box->depth; return drmIoctl(vdws->fd, DRM_IOCTL_VIRTGPU_TRANSFER_FROM_HOST, &fromhostcmd); } -- 2.11.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev