Skip to content

anv: Implement VK_EXT_image_drm_format_modifier

Lina Versace requested to merge linyaa/mesa:anv-drm-format-mod into master
  • Completed user-visible features:
    • vkGetImageSubresourceLayout
    • vkGetImageDrmFormatModifierPropertiesEXT
    • vkGetPhysicalDeviceFormatProperties2
    • vkGetPhysicalDeviceImageFormatProperties2
    • vkCreateImage
    • vkGetImageSubresourceLayout
    • vkGetImageDrmFormatModifierPropertiesEXT
  • Completed under-the-hood features:
    • Transitions in aux state when image transfers ownership on the foreign queue.
    • Avoid perf regression for I915_FORMAT_MOD_TILED_Y. Allocate a driver-private bo for the aux surface and fast clear state.
    • Support binding I915_FORMAT_MOD_TILED_Y_CCS image to an imported padding-free dma-buf. This requires allocating driver-private memory for the fast clear state.
  • Testing
    • dEQP.VK.dEQP-VK.drm_format_modifiers.*
      • deqp @ fb86cfb19849570ccc6b4dc5aa0fe0e35432d442
      • DRM_FORMAT_MOD_LINEAR
      • I915_FORMAT_MOD_X_TILED
      • I915_FORMAT_MOD_Y_TILED, where hw does not support CCS
      • I915_FORMAT_MOD_Y_TILED, where hw supports CCS
      • I915_FORMAT_MOD_Y_TILED_CCS
    • KMS. I have a small toy app I use to test the extension with KMS (thanks Brian Ho@ !). I haven't pushed it anywhere yet (but I will). It allocates a gbm_bo; imports it; then clears and draws a triangle, in a loop. I tested the following:
      • VK_FORMAT_A8G8B8R8_UNORM_PACK32 + DRM_FORMAT_MOD_LINEAR
      • VK_FORMAT_A8G8B8R8_UNORM_PACK32 + I915_FORMAT_MOD_X_TILED
      • VK_FORMAT_A8G8B8R8_UNORM_PACK32 + I915_FORMAT_MOD_Y_TILED
      • VK_FORMAT_A8G8B8R8_UNORM_PACK32 + I915_FORMAT_MOD_Y_TILED_CCS
Edited by Lina Versace

Merge request reports