Check vkCmdFillBuffer with sizes not multiple of 4
authorRicardo Garcia <rgarcia@igalia.com>
Mon, 15 Apr 2019 08:40:34 +0000 (10:40 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Mon, 6 May 2019 08:21:17 +0000 (04:21 -0400)
Use vkCmdFillBuffer passing VK_WHOLE_SIZE as the size when the whole
buffer size is not a multiple of 4. The extra bytes at the end should
remain untouched by the fill operation, as per the spec.

New tests:
dEQP-VK.api.fill_and_update_buffer.*.fill_buffer_vk_whole_size_*

Components: Vulkan
VK-GL-CTS issue: 1156

Change-Id: Ie9ac7ccbf8ce42a835ef4e073feaa01c010ab4cb

android/cts/master/vk-master.txt
external/vulkancts/modules/vulkan/api/vktApiFillBufferTests.cpp
external/vulkancts/mustpass/master/vk-default-no-waivers.txt
external/vulkancts/mustpass/master/vk-default.txt

index aa88863..68e98d9 100755 (executable)
@@ -87522,6 +87522,22 @@ dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.suballocation.update_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.suballocation.update_buffer_second_part
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_12
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_whole
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_whole
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_first_one
@@ -87530,6 +87546,22 @@ dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_second_part
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_extra_bytes_offset_0
+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.descriptor_pool.repeated_reset_short
 dEQP-VK.api.descriptor_pool.repeated_reset_long
 dEQP-VK.api.descriptor_pool.repeated_free_reset_short
index 140d8ea..f853d80 100644 (file)
@@ -40,6 +40,7 @@
 #include "tcuTextureUtil.hpp"
 #include "tcuVectorType.hpp"
 #include "deSharedPtr.hpp"
+#include <limits>
 
 namespace vkt
 {
@@ -66,6 +67,112 @@ struct TestParams
        de::SharedPtr<IBufferAllocator> bufferAllocator;
 };
 
+
+class FillWholeBufferTestInstance : public vkt::TestInstance
+{
+public:
+                                                       FillWholeBufferTestInstance     (Context& context, const TestParams& testParams);
+       virtual tcu::TestStatus iterate                                         (void) override;
+protected:
+       // dstSize will be used as the buffer size.
+       // dstOffset will be used as the offset for vkCmdFillBuffer.
+       // size in vkCmdFillBuffer will always be VK_WHOLE_SIZE.
+       const TestParams                m_params;
+
+       Move<VkCommandPool>             m_cmdPool;
+       Move<VkCommandBuffer>   m_cmdBuffer;
+
+       Move<VkBuffer>                  m_destination;
+       de::MovePtr<Allocation> m_destinationBufferAlloc;
+};
+
+FillWholeBufferTestInstance::FillWholeBufferTestInstance(Context& context, const TestParams& testParams)
+       : vkt::TestInstance(context), m_params(testParams)
+{
+       const DeviceInterface&  vk                                      = context.getDeviceInterface();
+       const VkDevice                  vkDevice                        = context.getDevice();
+       const deUint32                  queueFamilyIndex        = context.getUniversalQueueFamilyIndex();
+       Allocator&                              memAlloc                        = context.getDefaultAllocator();
+
+       m_cmdPool = createCommandPool(vk, vkDevice, VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, queueFamilyIndex);
+       m_cmdBuffer = allocateCommandBuffer(vk, vkDevice, *m_cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY);
+       testParams.bufferAllocator->createTestBuffer(m_params.dstSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT, context, memAlloc, m_destination, MemoryRequirement::HostVisible, m_destinationBufferAlloc);
+}
+
+tcu::TestStatus FillWholeBufferTestInstance::iterate(void)
+{
+       const DeviceInterface&          vk                                      = m_context.getDeviceInterface();
+       const VkDevice                          vkDevice                        = m_context.getDevice();
+       const VkQueue                           queue                           = m_context.getUniversalQueue();
+
+       // Make sure some stuff below will work.
+       DE_ASSERT(m_params.dstSize >= sizeof(deUint32));
+       DE_ASSERT(m_params.dstSize <  static_cast<VkDeviceSize>(std::numeric_limits<size_t>::max()));
+       DE_ASSERT(m_params.dstOffset < m_params.dstSize);
+
+       // Fill buffer from the host and flush buffer memory.
+       deUint8* bytes = reinterpret_cast<deUint8*>(m_destinationBufferAlloc->getHostPtr());
+       deMemset(bytes, 0xff, static_cast<size_t>(m_params.dstSize));
+       flushAlloc(vk, vkDevice, *m_destinationBufferAlloc);
+
+       const VkBufferMemoryBarrier     gpuToHostBarrier        =
+       {
+               VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,        // VkStructureType                      sType;
+               DE_NULL,                                                                        // const void*                          pNext;
+               VK_ACCESS_TRANSFER_WRITE_BIT,                           // VkAccessFlags                        srcAccessMask;
+               VK_ACCESS_HOST_READ_BIT,                                        // VkAccessFlags                        dstAccessMask;
+               VK_QUEUE_FAMILY_IGNORED,                                        // deUint32                                     srcQueueFamilyIndex;
+               VK_QUEUE_FAMILY_IGNORED,                                        // deUint32                                     dstQueueFamilyIndex;
+               *m_destination,                                                         // VkBuffer                                     buffer;
+               0u,                                                                                     // VkDeviceSize                         offset;
+               VK_WHOLE_SIZE                                                           // VkDeviceSize                         size;
+       };
+
+       // Fill buffer using VK_WHOLE_SIZE.
+       beginCommandBuffer(vk, *m_cmdBuffer);
+       vk.cmdFillBuffer(*m_cmdBuffer, *m_destination, m_params.dstOffset, VK_WHOLE_SIZE, deUint32{0x01010101});
+       vk.cmdPipelineBarrier(*m_cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, 0, 0, DE_NULL, 1, &gpuToHostBarrier, 0, DE_NULL);
+       endCommandBuffer(vk, *m_cmdBuffer);
+       submitCommandsAndWait(vk, vkDevice, queue, m_cmdBuffer.get());
+
+       // Invalidate buffer memory and check the buffer contains the expected results.
+       invalidateAlloc(vk, vkDevice, *m_destinationBufferAlloc);
+
+       const VkDeviceSize startOfExtra = (m_params.dstSize / sizeof(deUint32)) * sizeof(deUint32);
+       for (VkDeviceSize i = 0; i < m_params.dstSize; ++i)
+       {
+               const deUint8 expectedByte = ((i >= m_params.dstOffset && i < startOfExtra)? 0x01 : 0xff);
+               if (bytes[i] != expectedByte)
+               {
+                       std::ostringstream msg;
+                       msg << "Invalid byte at position " << i << " in the buffer (found 0x"
+                               << std::hex << static_cast<int>(bytes[i]) << " but expected 0x" << static_cast<int>(expectedByte) << ")";
+                       return tcu::TestStatus::fail(msg.str());
+               }
+       }
+
+       return tcu::TestStatus::pass("Pass");
+}
+
+class FillWholeBufferTestCase : public vkt::TestCase
+{
+public:
+                                                       FillWholeBufferTestCase (tcu::TestContext&      testCtx,
+                                                                                                        const std::string&     name,
+                                                                                                        const std::string&     description,
+                                                                                                        const TestParams       params)
+               : vkt::TestCase(testCtx, name, description), m_params(params)
+       {}
+
+       virtual TestInstance*   createInstance                  (Context&                       context) const override
+       {
+               return static_cast<TestInstance*>(new FillWholeBufferTestInstance(context, m_params));
+       }
+private:
+       const TestParams                m_params;
+};
+
+
 class FillBufferTestInstance : public vkt::TestInstance
 {
 public:
@@ -366,17 +473,17 @@ tcu::TestCaseGroup*                                       createFillAndUpdateBufferTests  (tcu::TestContext&                      test
                }
                fillAndUpdateBufferTests->addChild(bufferViewAllocationGroupTests[subgroupNdx]);
        }
-       TestParams                                              params;
-       params.dstSize = TestParams::TEST_DATA_SIZE;
 
+       TestParams                                              params;
 
        for (deUint32 buffersAllocationNdx = 0u; buffersAllocationNdx < DE_LENGTH_OF_ARRAY(bufferAllocators); ++buffersAllocationNdx)
        {
-               DE_ASSERT(params.dstSize <= TestParams::TEST_DATA_SIZE);
+               params.dstSize                  = TestParams::TEST_DATA_SIZE;
+               params.bufferAllocator  = bufferAllocators[buffersAllocationNdx];
+
                deUint8* data = (deUint8*) params.testData;
                for (deUint32 b = 0u; b < (params.dstSize * sizeof(params.testData[0])); b++)
                        data[b] = (deUint8) (b % 255);
-               params.bufferAllocator = bufferAllocators[buffersAllocationNdx];
                const deUint32                          testCaseGroupNdx                                        = buffersAllocationNdx;
                tcu::TestCaseGroup*                     currentTestsGroup                                       = bufferViewAllocationGroupTests[testCaseGroupNdx];
 
@@ -423,6 +530,25 @@ tcu::TestCaseGroup*                                        createFillAndUpdateBufferTests  (tcu::TestContext&                      test
                        currentTestsGroup->addChild(new FillBufferTestCase(testCtx, "fill_" + testName, "Fill " + description, params));
                        currentTestsGroup->addChild(new UpdateBufferTestCase(testCtx, "update_" + testName, "Update " + description, params));
                }
+
+               // VK_WHOLE_SIZE tests.
+               {
+                       for (VkDeviceSize i = 0; i < sizeof(deUint32); ++i)
+                       {
+                               for (VkDeviceSize j = 0; j < sizeof(deUint32); ++j)
+                               {
+                                       params.dstSize          = TestParams::TEST_DATA_SIZE + i;
+                                       params.dstOffset        = j * sizeof(deUint32);
+                                       params.size                     = VK_WHOLE_SIZE;
+
+                                       const VkDeviceSize      extraBytes      = params.dstSize % sizeof(deUint32);
+                                       const std::string       name            = "fill_buffer_vk_whole_size_" + de::toString(extraBytes) + "_extra_bytes_offset_" + de::toString(params.dstOffset);
+                                       const std::string       description     = "vkCmdFillBuffer with VK_WHOLE_SIZE, " + de::toString(extraBytes) + " extra bytes and offset " + de::toString(params.dstOffset);
+
+                                       currentTestsGroup->addChild(new FillWholeBufferTestCase{testCtx, name, description, params});
+                               }
+                       }
+               }
        }
 
        return fillAndUpdateBufferTests.release();
index e3b697e..82c4a3f 100644 (file)
@@ -87520,6 +87520,22 @@ dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.suballocation.update_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.suballocation.update_buffer_second_part
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_12
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_whole
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_whole
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_first_one
@@ -87528,6 +87544,22 @@ dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_second_part
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_extra_bytes_offset_0
+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.descriptor_pool.repeated_reset_short
 dEQP-VK.api.descriptor_pool.repeated_reset_long
 dEQP-VK.api.descriptor_pool.repeated_free_reset_short
index 184e567..cf2fa95 100644 (file)
@@ -87520,6 +87520,22 @@ dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.suballocation.update_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.suballocation.update_buffer_second_part
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_0_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_1_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_2_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.suballocation.fill_buffer_vk_whole_size_3_extra_bytes_offset_12
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_whole
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_whole
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_first_one
@@ -87528,6 +87544,22 @@ dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_second_one
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_second_part
 dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.update_buffer_second_part
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_0_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_1_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_0
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_4
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_8
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_2_extra_bytes_offset_12
+dEQP-VK.api.fill_and_update_buffer.dedicated_alloc.fill_buffer_vk_whole_size_3_extra_bytes_offset_0
+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.descriptor_pool.repeated_reset_short
 dEQP-VK.api.descriptor_pool.repeated_reset_long
 dEQP-VK.api.descriptor_pool.repeated_free_reset_short