vulkan: add texture download, fix upload bugs, and add integration tests

Building on top of Xaver's texture allocation and upload commit:

  • Add download() to VulkanTexture for GPU-to-CPU readback
  • Add vulkanToQImageFormat() helper for Vulkan→QImage format conversion
  • Roll begin() into VulkanDevice::createCommandBuffer()
  • Add lavapipe fallback for faux render nodes (for CI)
  • Add isSoftwareRenderer() and type() to VulkanDevice

Fix bugs in the upload implementation:

  • Missing bindMemory calls in allocate() and update()
  • Missing begin()/end() on command buffers in update()
  • Wrong image offset in update(): used offset param instead of rect.position() + offset

Add integration tests covering upload, download, allocation, partial region updates, and multi-rect corner updates.

Tested on NVIDIA RTX 5070 Ti (Blackwell, driver 595.58.03)

Co-authored-by: Xaver Hugl xaver.hugl@kde.org

Edited by Diego Gomez

Merge request reports

Loading