Add conformance tests for new buffer offset rules
authorJ.D. Rouan <jdrouan@google.com>
Mon, 24 Feb 2020 18:00:07 +0000 (10:00 -0800)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 28 May 2020 07:36:15 +0000 (03:36 -0400)
As described in vulkan#1701 and specified in vulkan!3444, the
bufferOffset requirement can be relaxed if the queue family supports
VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT.

Component: Vulkan
VK-GL-CTS issue: 2100

New tests:
dEQP-VK.api.copy_and_blit.*.image_to_buffer.buffer_offset_relaxed
dEQP-VK.api.copy_and_blit.*.buffer_to_image.buffer_offset_relaxed

Change-Id: I278b81de35cbd73779060fcfb51ac8131e173db3

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

index db9fbed..9543bea 100644 (file)
@@ -1856,6 +1856,8 @@ dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r
 dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r32g32b32a32_uint.r32g32b32a32_uint.optimal_general
 dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r32g32b32a32_uint.r32g32b32a32_uint.general_optimal
 dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r32g32b32a32_uint.r32g32b32a32_uint.general_general
+dEQP-VK.api.copy_and_blit.core.image_to_buffer.buffer_offset_relaxed
+dEQP-VK.api.copy_and_blit.core.buffer_to_image.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.core.buffer_to_depthstencil.d16_unorm_D
 dEQP-VK.api.copy_and_blit.core.buffer_to_depthstencil.buffer_offset_d16_unorm_D
 dEQP-VK.api.copy_and_blit.core.buffer_to_depthstencil.x8_d24_unorm_pack32_D
@@ -3314,6 +3316,8 @@ dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32768_dst6x32768.r16g16b16_sfloat.r16g16b16_sfloat.optimal_general
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32768_dst6x32768.r16g16b16_sfloat.r16g16b16_sfloat.general_optimal
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32768_dst6x32768.r16g16b16_sfloat.r16g16b16_sfloat.general_general
+dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.buffer_offset_relaxed
+dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_depthstencil.d16_unorm_D
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_depthstencil.buffer_offset_d16_unorm_D
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_depthstencil.x8_d24_unorm_pack32_D
index d4e1b4d..2dda537 100644 (file)
@@ -24494,12 +24494,14 @@ dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r
 dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r32g32b32a32_uint.r32g32b32a32_uint.general_general
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.whole
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.buffer_offset
+dEQP-VK.api.copy_and_blit.core.image_to_buffer.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.regions
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.whole
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.regions
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.buffer_offset
+dEQP-VK.api.copy_and_blit.core.buffer_to_image.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.core.buffer_to_depthstencil.d16_unorm_D
@@ -78617,12 +78619,14 @@ dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32768_dst6x32768.r16g16b16_sfloat.r16g16b16_sfloat.general_general
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.whole
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.buffer_offset
+dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.regions
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.whole
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.regions
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.buffer_offset
+dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_depthstencil.d16_unorm_D
index a306e93..75f9f68 100644 (file)
@@ -5889,6 +5889,33 @@ void addImageToBufferTests (tcu::TestCaseGroup* group, AllocationKind allocation
        {
                TestParams      params;
                params.src.image.imageType                      = VK_IMAGE_TYPE_2D;
+               params.src.image.format                         = VK_FORMAT_R8_UNORM;
+               params.src.image.extent                         = defaultExtent;
+               params.src.image.tiling                         = VK_IMAGE_TILING_OPTIMAL;
+               params.src.image.operationLayout        = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
+               params.dst.buffer.size                          = defaultSize * defaultSize;
+               params.allocationKind                           = allocationKind;
+
+               const VkBufferImageCopy bufferImageCopy =
+               {
+                       defaultSize * defaultHalfSize + 1u,             // VkDeviceSize                         bufferOffset;
+                       0u,                                                                                     // deUint32                                     bufferRowLength;
+                       0u,                                                                                     // deUint32                                     bufferImageHeight;
+                       defaultSourceLayer,                                                     // VkImageSubresourceLayers     imageSubresource;
+                       {defaultFourthSize, defaultFourthSize, 0},      // VkOffset3D                           imageOffset;
+                       defaultHalfExtent                                                       // VkExtent3D                           imageExtent;
+               };
+               CopyRegion      copyRegion;
+               copyRegion.bufferImageCopy      = bufferImageCopy;
+
+               params.regions.push_back(copyRegion);
+
+               group->addChild(new CopyImageToBufferTestCase(testCtx, "buffer_offset_relaxed", "Copy from image to buffer with buffer offset not a multiple of 4", params));
+       }
+
+       {
+               TestParams      params;
+               params.src.image.imageType                      = VK_IMAGE_TYPE_2D;
                params.src.image.format                         = VK_FORMAT_R8G8B8A8_UNORM;
                params.src.image.extent                         = defaultExtent;
                params.src.image.tiling                         = VK_IMAGE_TILING_OPTIMAL;
@@ -6229,6 +6256,33 @@ void addBufferToImageTests (tcu::TestCaseGroup* group, AllocationKind allocation
        }
 
        {
+               TestParams      params;
+               params.src.buffer.size                          = defaultSize * defaultSize;
+               params.dst.image.imageType                      = VK_IMAGE_TYPE_2D;
+               params.dst.image.format                         = VK_FORMAT_R8_UNORM;
+               params.dst.image.extent                         = defaultExtent;
+               params.dst.image.tiling                         = VK_IMAGE_TILING_OPTIMAL;
+               params.dst.image.operationLayout        = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
+               params.allocationKind                           = allocationKind;
+
+               const VkBufferImageCopy bufferImageCopy =
+               {
+                       defaultFourthSize + 1u,                                 // VkDeviceSize                         bufferOffset;
+                       defaultHalfSize + defaultFourthSize,            // deUint32                                     bufferRowLength;
+                       defaultHalfSize + defaultFourthSize,            // deUint32                                     bufferImageHeight;
+                       defaultSourceLayer,                                                     // VkImageSubresourceLayers     imageSubresource;
+                       {defaultFourthSize, defaultFourthSize, 0},      // VkOffset3D                           imageOffset;
+                       defaultHalfExtent                                                       // VkExtent3D                           imageExtent;
+               };
+               CopyRegion      copyRegion;
+               copyRegion.bufferImageCopy      = bufferImageCopy;
+
+               params.regions.push_back(copyRegion);
+
+               group->addChild(new CopyBufferToImageTestCase(testCtx, "buffer_offset_relaxed", "Copy from buffer to image with buffer offset not a multiple of 4", params));
+       }
+
+       {
                TestParams                              params;
                params.src.buffer.size                          = (defaultHalfSize - 1u) * defaultSize + defaultHalfSize;
                params.dst.image.imageType                      = VK_IMAGE_TYPE_2D;
index d10394e..fcce37a 100644 (file)
@@ -24492,12 +24492,14 @@ dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r
 dEQP-VK.api.copy_and_blit.core.image_to_image.dimensions.src6x32768_dst6x32768.r32g32b32a32_uint.r32g32b32a32_uint.general_general
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.whole
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.buffer_offset
+dEQP-VK.api.copy_and_blit.core.image_to_buffer.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.regions
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.core.image_to_buffer.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.whole
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.regions
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.buffer_offset
+dEQP-VK.api.copy_and_blit.core.buffer_to_image.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.core.buffer_to_image.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.core.buffer_to_depthstencil.d16_unorm_D
@@ -78616,12 +78618,14 @@ dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_image.dimensions.src6x32768_dst6x32768.r16g16b16_sfloat.r16g16b16_sfloat.general_general
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.whole
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.buffer_offset
+dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.regions
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.whole
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.regions
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.buffer_offset
+dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.buffer_offset_relaxed
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.tightly_sized_buffer
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_image.tightly_sized_buffer_offset
 dEQP-VK.api.copy_and_blit.dedicated_allocation.buffer_to_depthstencil.d16_unorm_D