Merge vk-gl-cts/vulkan-cts-1.0.1 into vk-gl-cts/vulkan-cts-1.0.2
authorAlexander Galazin <alexander.galazin@arm.com>
Thu, 31 Aug 2017 17:02:20 +0000 (19:02 +0200)
committerAlexander Galazin <Alexander.Galazin@arm.com>
Thu, 31 Aug 2017 17:23:54 +0000 (13:23 -0400)
Change-Id: I5dfa06e462512838179803963ddd04094679aa4f

1  2 
external/vulkancts/modules/vulkan/api/vktApiBufferTests.cpp

  #include "vkPrograms.hpp"
  #include "vkQueryUtil.hpp"
  #include "vkRefUtil.hpp"
 -#include "vkPlatform.hpp"
  #include "vktTestCase.hpp"
+ #include "tcuPlatform.hpp"
  
 +#include <algorithm>
 +
  namespace vkt
  {
  namespace api
@@@ -300,12 -270,24 +330,24 @@@ tcu::TestStatus BufferTestInstance::buf
                buffer = createBuffer(vk, vkDevice, &bufferParams);
                vk.getBufferMemoryRequirements(vkDevice, *buffer, &memReqs);
  
 -              const deUint32          heapTypeIndex   = (deUint32)deCtz32(memReqs.memoryTypeBits);
 -              const VkMemoryType      memoryType              = memoryProperties.memoryTypes[heapTypeIndex];
 -              const VkMemoryHeap      memoryHeap              = memoryProperties.memoryHeaps[memoryType.heapIndex];
 -              const deUint32          shrinkBits              = 4;    // number of bits to shift when reducing the size with each iteration
 +              const deUint32                                  heapTypeIndex                                   = (deUint32)deCtz32(memReqs.memoryTypeBits);
 +              const VkMemoryType                              memoryType                                              = memoryProperties.memoryTypes[heapTypeIndex];
 +              const VkMemoryHeap                              memoryHeap                                              = memoryProperties.memoryHeaps[memoryType.heapIndex];
-               const VkDeviceSize                              maxBufferSize                                   = deAlign64(memoryHeap.size >> 1u, memReqs.alignment);
 +              const deUint32                                  shrinkBits                                              = 4u;   // number of bits to shift when reducing the size with each iteration
  
 -              const VkDeviceSize maxBufferSize = alignDeviceSize(availableBufferSize >> 1, memReqs.alignment);
+               // Buffer size - Choose half of the reported heap size for the maximum buffer size, we
+               // should attempt to test as large a portion as possible.
+               //
+               // However on a system where device memory is shared with the system, the maximum size
+               // should be tested against the platform memory limits as significant portion of the heap
+               // may already be in use by the operating system and other running processes.
+               const VkDeviceSize  availableBufferSize = getMaxBufferSize(memoryHeap.size,
+                                                                                                                                  memReqs.alignment,
+                                                                                                                                  getPlatformMemoryLimits(m_context));
+               // For our test buffer size, halve the maximum available size and align
++              const VkDeviceSize maxBufferSize = deAlign64(availableBufferSize >> 1, memReqs.alignment);
                size = std::min(size, maxBufferSize);
  
                while (*memory == DE_NULL)