anv: Implement VK_EXT_image_drm_format_modifier
- 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
-
- dEQP.VK.dEQP-VK.drm_format_modifiers.*
Edited by Lina Versace