Skip to content

virgl/drm: New optimization for uploading textures

virgl/drm: New optimization for uploading textures

  1. We can create resource with size of "1" on drm, because size is not passed to the renderer.
  2. We can't create resource with size of "1" on vtest, because shmem is created based on that.
  3. If renderer supports copy_transfer_from_host, then use staging buffer for transfer in both ways to and from host.

This will allow to reduce memory consumption in the guest.

v2:

  • add inline function for checking if we can use this optimization
  • add check in readback path. If renderer doesn't support copy transfer from host, then we need to go with previous path in readback (through transfer_get ioctl)

v3:

  • fix logic for readback

v4:

  • refactor the implementation to integrate it more to existing code base

v5:

  • reuse COPY_TRANSFER3D in both directions

v6:

  • encode direction in COPY_TRANSFER3D if host supports it

Reviewed-by: Gert Wollny gert.wollny@collabora.com

virglrenderer MR: 645

Edited by Maksym Wezdecki

Merge request reports