Fix: Memory alignment
authorArkadiusz Sarwa <arkadiusz.sarwa@mobica.com>
Tue, 27 Feb 2018 11:38:31 +0000 (12:38 +0100)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Fri, 2 Mar 2018 09:41:54 +0000 (04:41 -0500)
Affects:
dEQP-VK.memory.mapping*

Components: Vulkan

VK-GL-CTS issue: 1039

Change-Id: Ia5093148fa145c9eecc03fe3b76102cdf77ad472

external/vulkancts/modules/vulkan/memory/vktMemoryMappingTests.cpp

index 8e5e572..d1d0ee4 100644 (file)
@@ -549,15 +549,15 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                const tcu::ScopedLogSection     section (log, "TestCaseInfo", "TestCaseInfo");
 
                log << TestLog::Message << "Seed: " << config.seed << TestLog::EndMessage;
-               log << TestLog::Message << "Allocation size: " << config.allocationSize << " * atom" <<  TestLog::EndMessage;
-               log << TestLog::Message << "Mapping, offset: " << config.mapping.offset << " * atom, size: " << config.mapping.size << " * atom" << TestLog::EndMessage;
+               log << TestLog::Message << "Allocation size: " << config.allocationSize  <<  TestLog::EndMessage;
+               log << TestLog::Message << "Mapping, offset: " << config.mapping.offset << ", size: " << config.mapping.size << TestLog::EndMessage;
 
                if (!config.flushMappings.empty())
                {
                        log << TestLog::Message << "Invalidating following ranges:" << TestLog::EndMessage;
 
                        for (size_t ndx = 0; ndx < config.flushMappings.size(); ndx++)
-                               log << TestLog::Message << "\tOffset: " << config.flushMappings[ndx].offset << " * atom, Size: " << config.flushMappings[ndx].size << " * atom" << TestLog::EndMessage;
+                               log << TestLog::Message << "\tOffset: " << config.flushMappings[ndx].offset << ", Size: " << config.flushMappings[ndx].size << TestLog::EndMessage;
                }
 
                if (config.remap)
@@ -568,7 +568,7 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                        log << TestLog::Message << "Flushing following ranges:" << TestLog::EndMessage;
 
                        for (size_t ndx = 0; ndx < config.invalidateMappings.size(); ndx++)
-                               log << TestLog::Message << "\tOffset: " << config.invalidateMappings[ndx].offset << " * atom, Size: " << config.invalidateMappings[ndx].size << " * atom" << TestLog::EndMessage;
+                               log << TestLog::Message << "\tOffset: " << config.invalidateMappings[ndx].offset << ", Size: " << config.invalidateMappings[ndx].size << TestLog::EndMessage;
                }
        }
 
@@ -583,7 +583,7 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                                                                                                                ? 1
                                                                                                                : nonCoherentAtomSize;
 
-                       VkDeviceSize                                    allocationSize                          = config.allocationSize * atomSize;
+                       VkDeviceSize                                    allocationSize                          = (config.allocationSize % atomSize == 0) ? config.allocationSize : config.allocationSize + (atomSize - (config.allocationSize % atomSize));
                        vk::VkMemoryRequirements                req                                                     =
                        {
                                (VkDeviceSize)allocationSize,
@@ -604,8 +604,8 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                                req = getBufferMemoryRequirements(vkd, device, buffer);
                        }
                        allocationSize = req.size;
-                       VkDeviceSize                                    mappingSize                                     = config.mapping.size * atomSize;
-                       VkDeviceSize                                    mappingOffset                           = config.mapping.offset * atomSize;
+                       VkDeviceSize                                    mappingSize                                     =  (config.mapping.size % atomSize == 0) ? config.mapping.size : config.mapping.size + (atomSize - (config.mapping.size % atomSize));
+                       VkDeviceSize                                    mappingOffset                           =  (config.mapping.offset % atomSize == 0) ? config.mapping.offset : config.mapping.offset + (atomSize - (config.mapping.offset % atomSize));
                        if (config.mapping.size == config.allocationSize && config.mapping.offset == 0u)
                        {
                                mappingSize = allocationSize;
@@ -634,7 +634,11 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                                log << TestLog::Message << "Invalidating following ranges:" << TestLog::EndMessage;
 
                                for (size_t ndx = 0; ndx < config.flushMappings.size(); ndx++)
-                                       log << TestLog::Message << "\tOffset: " << config.flushMappings[ndx].offset * atomSize << ", Size: " << config.flushMappings[ndx].size * atomSize << TestLog::EndMessage;
+                               {
+                                       const VkDeviceSize      offset  = (config.flushMappings[ndx].offset % atomSize == 0) ? config.flushMappings[ndx].offset : config.flushMappings[ndx].offset + (atomSize - (config.flushMappings[ndx].offset % atomSize));
+                                       const VkDeviceSize      size    = (config.flushMappings[ndx].size % atomSize == 0) ? config.flushMappings[ndx].size : config.flushMappings[ndx].size + (atomSize - (config.flushMappings[ndx].size % atomSize));
+                                       log << TestLog::Message << "\tOffset: " << offset << ", Size: " << size << TestLog::EndMessage;
+                               }
                        }
 
                        if (!config.invalidateMappings.empty())
@@ -642,7 +646,11 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                                log << TestLog::Message << "Flushing following ranges:" << TestLog::EndMessage;
 
                                for (size_t ndx = 0; ndx < config.invalidateMappings.size(); ndx++)
-                                       log << TestLog::Message << "\tOffset: " << config.invalidateMappings[ndx].offset * atomSize << ", Size: " << config.invalidateMappings[ndx].size * atomSize << TestLog::EndMessage;
+                               {
+                                       const VkDeviceSize      offset = (config.invalidateMappings[ndx].offset % atomSize == 0) ? config.invalidateMappings[ndx].offset : config.invalidateMappings[ndx].offset + (atomSize - (config.invalidateMappings[ndx].offset % atomSize));
+                                       const VkDeviceSize      size = (config.invalidateMappings[ndx].size % atomSize == 0) ? config.invalidateMappings[ndx].size : config.invalidateMappings[ndx].size + (atomSize - (config.invalidateMappings[ndx].size % atomSize));
+                                       log << TestLog::Message << "\tOffset: " << offset << ", Size: " << size << TestLog::EndMessage;
+                               }
                        }
 
                        if ((memoryType.propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) == 0)
@@ -689,8 +697,8 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                                                        DE_NULL,
 
                                                        *memory,
-                                                       config.flushMappings[ndx].offset * atomSize,
-                                                       config.flushMappings[ndx].size * atomSize
+                                                       (config.flushMappings[ndx].offset % atomSize == 0) ? config.flushMappings[ndx].offset : config.flushMappings[ndx].offset + (atomSize - (config.flushMappings[ndx].offset % atomSize)),
+                                                       (config.flushMappings[ndx].size % atomSize == 0) ? config.flushMappings[ndx].size : config.flushMappings[ndx].size + (atomSize - (config.flushMappings[ndx].size % atomSize)),
                                                };
 
                                                ranges.push_back(range);
@@ -721,8 +729,8 @@ tcu::TestStatus testMemoryMapping (Context& context, const TestConfig config)
                                                        DE_NULL,
 
                                                        *memory,
-                                                       config.invalidateMappings[ndx].offset * atomSize,
-                                                       config.invalidateMappings[ndx].size * atomSize
+                                                       (config.invalidateMappings[ndx].offset % atomSize == 0) ? config.invalidateMappings[ndx].offset : config.invalidateMappings[ndx].offset + (atomSize - (config.invalidateMappings[ndx].offset % atomSize)),
+                                                       (config.invalidateMappings[ndx].size % atomSize == 0) ? config.invalidateMappings[ndx].size : config.invalidateMappings[ndx].size + (atomSize - (config.invalidateMappings[ndx].size % atomSize)),
                                                };
 
                                                ranges.push_back(range);