vrend_renderer_transfer_internal error since e420a5aa enables bidirectional copy transfer capability for gbm-backed egl-image resources.
Beginning with e420a5aa ("vrend: Add minigbm code path for copy_transfer from host") and continuing through tip-of-tree, opening Steam in an crosvm-managed Arch Linux Guest with ToT virgl guest driver on a linux host results in an unresponsive steam interface, and the following errors:
[rutabaga_gfx::virgl_renderer ] vrend_renderer_transfer_internal: context error reported 2 "Xwayland" IOV data size exceeds resource capacity 76
[devices::virtio::gpu ] Some(TransferFromHost3d) -> ErrRutabaga(ComponentError(22))
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x206)
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[rutabaga_gfx::virgl_renderer ] vrend_renderer_transfer_internal: context error reported 2 "Xwayland" IOV data size exceeds resource capacity 77
[devices::virtio::gpu ] Some(TransferFromHost3d) -> ErrRutabaga(ComponentError(22))
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x206)
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[drm:virtio_gpu_dequeue_ctrl_func ] *ERROR* response 0x1200 (command 0x207)
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
[devices::virtio::gpu ] Some(CmdSubmit3d) -> ErrRutabaga(ComponentError(22))
I run the VM with crosvm run --gpu=backend=virglrenderer,vulkan=true,egl=true,gles=false,glx=false,width=1920,height=1080 --disable-sandbox ...
and build virgl with -Dminigbm_allocation=true
.
Removing the caps->v2.capability_bits_v2 |= VIRGL_CAP_V2_COPY_TRANSFER_BOTH_DIRECTIONS
when building with -Dminigbm_allocation=true
(adding the surrounding #ifndef ENABLE_MINIGBM_ALLOCATION
back in) seems to resolve the issue, but I haven't looked into it further yet.