aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2015-12-11 14:55:11 -0700
committerMark Lobodzinski <mark@lunarg.com>2015-12-11 14:55:11 -0700
commitedffcf4bab3f84c2d0a9381f20e3f8f0d4464dca (patch)
tree8235f0ced417b8df47577485414f73bd7a8f393d /layers
parent8aa380a7e3482917ad3d2823f716ae079ef0231e (diff)
downloadusermoji-edffcf4bab3f84c2d0a9381f20e3f8f0d4464dca.tar.xz
layers: LX234, Fix memory validation for VK_WHOLE_SIZE in memory ranges
Diffstat (limited to 'layers')
-rw-r--r--layers/mem_tracker.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index c7b592a6..e7462f28 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1371,10 +1371,18 @@ validateMemRange(
}
// Validate that offset + size is within object's allocationSize
- if ((offset + size) > mem_element->second.allocInfo.allocationSize) {
- skipCall = log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DEVICE_MEMORY, (uint64_t)mem, 0,
- MEMTRACK_INVALID_MAP, "MEM", "Mapping Memory from %" PRIu64 " to %" PRIu64 " with total array size %" PRIu64,
- offset, size + offset, mem_element->second.allocInfo.allocationSize);
+ if (size == VK_WHOLE_SIZE) {
+ if (offset >= mem_element->second.allocInfo.allocationSize) {
+ skipCall = log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DEVICE_MEMORY, (uint64_t)mem, 0,
+ MEMTRACK_INVALID_MAP, "MEM", "Mapping Memory from %" PRIu64 " to %" PRIu64 " with total array size %" PRIu64,
+ offset, mem_element->second.allocInfo.allocationSize, mem_element->second.allocInfo.allocationSize);
+ }
+ } else {
+ if ((offset + size) > mem_element->second.allocInfo.allocationSize) {
+ skipCall = log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_DEVICE_MEMORY, (uint64_t)mem, 0,
+ MEMTRACK_INVALID_MAP, "MEM", "Mapping Memory from %" PRIu64 " to %" PRIu64 " with total array size %" PRIu64,
+ offset, size + offset, mem_element->second.allocInfo.allocationSize);
+ }
}
}
return skipCall;