aboutsummaryrefslogtreecommitdiff
path: root/layers/mem_tracker.cpp
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2016-01-14 15:57:46 +1300
committerMark Lobodzinski <mark@lunarg.com>2016-01-14 10:08:54 -0700
commit1c1aba757a43058027dc7451d9628acadeea26fb (patch)
tree68e968d4d9953616ab122244aa1cc5476f8621e0 /layers/mem_tracker.cpp
parentdb31a54c64f14a89d64245ee4d3b31fdad82acf9 (diff)
downloadusermoji-1c1aba757a43058027dc7451d9628acadeea26fb.tar.xz
layers: MR130, Handle VK_WHOLE_SIZE properly in mem_tracker:initializeAndTrackMemory
VK_WHOLE_SIZE is ~0ull. If this were passed as `size`, we'd try to allocate ~1ull bytes, and then memset them all to 0xb. This tends to explode.
Diffstat (limited to 'layers/mem_tracker.cpp')
-rw-r--r--layers/mem_tracker.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 321cf1e6..2f7620b4 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1513,6 +1513,9 @@ initializeAndTrackMemory(
if (memProps.memoryTypes[index].propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) {
mem_element->second.pData = 0;
} else {
+ if (size == VK_WHOLE_SIZE) {
+ size = mem_element->second.allocInfo.allocationSize;
+ }
mem_element->second.pData = malloc(2 * size);
memset(mem_element->second.pData, NoncoherentMemoryFillValue, 2 * size);
*ppData = static_cast<char*>(mem_element->second.pData) + (size / 2);