Limit maximum allocation size in memory mapping tests
authorPyry Haulos <phaulos@google.com>
Fri, 19 Aug 2016 12:20:38 +0000 (13:20 +0100)
committerChris Forbes <chrisforbes@google.com>
Tue, 5 Dec 2017 20:43:56 +0000 (20:43 +0000)
Fixes also ReferenceMemory::m_flushed memory usage counting when
estimating reference memory usage (size should be divided by atomSize).

Fixes #468
Bug: b/69677943

Change-Id: Iad754e211e8070b09254d2451e03418fc2be541b

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

index 74aee73..23bb21b 100644 (file)
@@ -786,8 +786,8 @@ void MemoryObject::randomInvalidate (const DeviceInterface& vkd, VkDevice device
 
 enum
 {
-       // Use only 1/2 of each memory heap.
-       MAX_MEMORY_USAGE_DIV = 2
+       MAX_MEMORY_USAGE_DIV = 2, // Use only 1/2 of each memory heap.
+       MAX_MEMORY_ALLOC_DIV = 2, // Do not alloc more than 1/2 of available space.
 };
 
 template<typename T>
@@ -1067,14 +1067,14 @@ MemoryObject* MemoryHeap::allocateRandom (const DeviceInterface& vkd, VkDevice d
        }
 
        const MemoryType                type                                            = memoryTypeMaxSizePair.first;
-       const VkDeviceSize              maxAllocationSize                       = memoryTypeMaxSizePair.second;
+       const VkDeviceSize              maxAllocationSize                       = memoryTypeMaxSizePair.second / MAX_MEMORY_ALLOC_DIV;
        const VkDeviceSize              atomSize                                        = (type.type.propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) != 0
                                                                                                                ? 1
                                                                                                                : m_nonCoherentAtomSize;
        const VkDeviceSize              allocationSizeGranularity       = de::max(atomSize, getMemoryClass() == MEMORY_CLASS_DEVICE ? m_limits.devicePageSize : getHostPageSize());
        const VkDeviceSize              size                                            = randomSize(rng, atomSize, maxAllocationSize);
        const VkDeviceSize              memoryUsage                                     = roundUpToMultiple(size, allocationSizeGranularity);
-       const VkDeviceSize              referenceMemoryUsage            = size + divRoundUp<VkDeviceSize>(size, 8) + divRoundUp(size, atomSize);
+       const VkDeviceSize              referenceMemoryUsage            = size + divRoundUp<VkDeviceSize>(size, 8) + divRoundUp<VkDeviceSize>(size / atomSize, 8);
 
        DE_ASSERT(size <= maxAllocationSize);