Extend Android Hardware Buffer external memory format tests
authorRosen Zhelev <rosen.zhelev@arm.com>
Fri, 13 Mar 2020 16:23:13 +0000 (16:23 +0000)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Mon, 11 May 2020 15:34:35 +0000 (11:34 -0400)
Add testing of depth and stencil Android Hardware Buffer formats.
These are added in Android API version 28 and present in the Format
Equivalence Table for VK_ANDROID_external_memory_android_hardware_buffer

Added tests:
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d16_unorm
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.x8_d24_unorm_pack32
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d24_unorm_s8_uint
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat_s8_uint
dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.s8_uint

Components: Vulkan

VK-GL-CTS issue: 2280

Change-Id: Ia90efc34f600eea6a1510276f3edab668c253459

android/cts/master/vk-master-2020-03-01.txt
android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/api/vktApiExternalMemoryTests.cpp
external/vulkancts/modules/vulkan/util/vktExternalMemoryUtil.cpp
external/vulkancts/mustpass/master/vk-default.txt

index 3bf3d4e..8fd53db 100644 (file)
@@ -26230,6 +26230,12 @@ dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_e
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_extra_bytes_offset_4
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_extra_bytes_offset_8
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_extra_bytes_offset_12
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d16_unorm
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.x8_d24_unorm_pack32
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d24_unorm_s8_uint
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat_s8_uint
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.s8_uint
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.import_twice
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.import_multiple_times
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.dup
index 44225bf..f3500a8 100644 (file)
@@ -114052,6 +114052,12 @@ dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.r8g8b8a8_unorm
 dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.r5g6b5_unorm_pack16
 dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.r16g16b16a16_sfloat
 dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.a2b10g10r10_unorm_pack32
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d16_unorm
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.x8_d24_unorm_pack32
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d24_unorm_s8_uint
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat_s8_uint
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.s8_uint
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.import_twice
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.import_multiple_times
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.dup
index c15fff5..75b9e7b 100644 (file)
@@ -29,6 +29,7 @@
 #include "vkPlatform.hpp"
 #include "vkMemUtil.hpp"
 #include "vkApiVersion.hpp"
+#include "vkImageUtil.hpp"
 
 #include "tcuTestLog.hpp"
 #include "tcuCommandLine.hpp"
@@ -4002,13 +4003,16 @@ tcu::TestStatus testAndroidHardwareBufferImageFormat  (Context& context, vk::VkF
 
        vki.getPhysicalDeviceFeatures2(physicalDevice, &deviceFeatures);
 
+       const vk::VkImageUsageFlagBits framebufferUsageFlag = vk::isDepthStencilFormat(format) ? vk::VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
+                                                                                                                                                                                  : vk::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+
        const vk::VkImageUsageFlagBits                            usageFlags[]            =
        {
                vk::VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
                vk::VK_IMAGE_USAGE_TRANSFER_DST_BIT,
                vk::VK_IMAGE_USAGE_SAMPLED_BIT,
                vk::VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
-               vk::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
+               framebufferUsageFlag,
        };
        const vk::VkImageCreateFlagBits                           createFlags[]           =
        {
@@ -4370,6 +4374,12 @@ de::MovePtr<tcu::TestCaseGroup> createMemoryTests (tcu::TestContext& testCtx, vk
                        vk::VK_FORMAT_R5G6B5_UNORM_PACK16,
                        vk::VK_FORMAT_R16G16B16A16_SFLOAT,
                        vk::VK_FORMAT_A2B10G10R10_UNORM_PACK32,
+                       vk::VK_FORMAT_D16_UNORM,
+                       vk::VK_FORMAT_X8_D24_UNORM_PACK32,
+                       vk::VK_FORMAT_D24_UNORM_S8_UINT,
+                       vk::VK_FORMAT_D32_SFLOAT,
+                       vk::VK_FORMAT_D32_SFLOAT_S8_UINT,
+                       vk::VK_FORMAT_S8_UINT,
                };
                const size_t            numOfAhbFormats = DE_LENGTH_OF_ARRAY(ahbFormats);
 
index e7bf419..9559729 100644 (file)
@@ -1443,6 +1443,8 @@ deUint64 AndroidHardwareBufferExternalApi26::vkUsageToAhbUsage(vk::VkImageUsageF
          case vk::VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT:
                return AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE;
          case vk::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT:
+         case vk::VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT:
+               // Alias of AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER which is defined in later Android API versions.
                return AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT;
          default:
                  return 0u;
@@ -1494,6 +1496,7 @@ class AndroidHardwareBufferExternalApi28 : public  AndroidHardwareBufferExternal
 public:
 
        virtual deUint64 vkCreateToAhbUsage(vk::VkImageCreateFlagBits vkFlag);
+       virtual deUint32 vkFormatToAhbFormat(vk::VkFormat vkFormat);
        virtual deUint64 mustSupportAhbUsageFlags();
 
        AndroidHardwareBufferExternalApi28() : AndroidHardwareBufferExternalApi26() {};
@@ -1516,6 +1519,27 @@ deUint64 AndroidHardwareBufferExternalApi28::vkCreateToAhbUsage(vk::VkImageCreat
        }
 }
 
+deUint32 AndroidHardwareBufferExternalApi28::vkFormatToAhbFormat(vk::VkFormat vkFormat)
+{
+       switch(vkFormat)
+       {
+         case vk::VK_FORMAT_D16_UNORM:
+               return AHARDWAREBUFFER_FORMAT_D16_UNORM;
+         case vk::VK_FORMAT_X8_D24_UNORM_PACK32:
+               return AHARDWAREBUFFER_FORMAT_D24_UNORM;
+         case vk::VK_FORMAT_D24_UNORM_S8_UINT:
+               return AHARDWAREBUFFER_FORMAT_D24_UNORM_S8_UINT;
+         case vk::VK_FORMAT_D32_SFLOAT:
+               return AHARDWAREBUFFER_FORMAT_D32_FLOAT;
+         case vk::VK_FORMAT_D32_SFLOAT_S8_UINT:
+               return AHARDWAREBUFFER_FORMAT_D32_FLOAT_S8_UINT;
+         case vk::VK_FORMAT_S8_UINT:
+               return AHARDWAREBUFFER_FORMAT_S8_UINT;
+         default:
+               return AndroidHardwareBufferExternalApi26::vkFormatToAhbFormat(vkFormat);
+       }
+}
+
 deUint64 AndroidHardwareBufferExternalApi28::mustSupportAhbUsageFlags()
 {
        return AndroidHardwareBufferExternalApi26::mustSupportAhbUsageFlags() | AHARDWAREBUFFER_USAGE_GPU_CUBE_MAP | AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE;
index 2b13d36..a3f05ae 100644 (file)
@@ -114051,6 +114051,12 @@ dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.r8g8b8a8_unorm
 dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.r5g6b5_unorm_pack16
 dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.r16g16b16a16_sfloat
 dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.a2b10g10r10_unorm_pack32
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d16_unorm
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.x8_d24_unorm_pack32
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d24_unorm_s8_uint
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.d32_sfloat_s8_uint
+dEQP-VK.api.external.memory.android_hardware_buffer.image_formats.s8_uint
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.import_twice
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.import_multiple_times
 dEQP-VK.api.external.memory.dma_buf.suballocated.device_only.dup