virgl/drm: New optimization for uploading textures
virgl/drm: New optimization for uploading textures
- We can create resource with size of "1" on drm, because size is not passed to the renderer.
- We can't create resource with size of "1" on vtest, because shmem is created based on that.
- 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