aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorMark Mueller <markm@lunarg.com>2016-05-30 16:46:38 -0600
committerMark Mueller <markm@lunarg.com>2016-06-01 13:32:10 -0600
commit87324738d20915ffa03c27928dd7b4fa3d31ab87 (patch)
tree359bc45f0ac45d1f17c5bfc84071f0fb86f90211 /layers/core_validation.cpp
parentd9f861f721532e7ae44a0a05bdad94ecf860a112 (diff)
downloadusermoji-87324738d20915ffa03c27928dd7b4fa3d31ab87.tar.xz
layers: LX506 fix vkFlushMappedMemoryRanges validation error
Fix LX506: vkFlushMappedMemoryRanges validation error with VkMappedMemoryRange::size = VK_WHOLE_SIZE. Resolution: Change test of size variable to correctly test the size passed by application against the relevant mapped memory Change-Id: I6d855482985512b5096696f5c37346dde8a391ac
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index aa342c49..f5e05092 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -9428,16 +9428,18 @@ static bool validateMemoryIsMapped(layer_data *my_data, const char *funcName, ui
"(" PRINTF_SIZE_T_SPECIFIER ").",
funcName, static_cast<size_t>(pMemRanges[i].offset), static_cast<size_t>(mem_element->second.memRange.offset));
}
- if ((mem_element->second.memRange.size != VK_WHOLE_SIZE) &&
- ((mem_element->second.memRange.offset + mem_element->second.memRange.size) <
- (pMemRanges[i].offset + pMemRanges[i].size))) {
+
+ const uint64_t my_dataTerminus =
+ (mem_element->second.memRange.size == VK_WHOLE_SIZE) ? mem_element->second.allocInfo.allocationSize :
+ (mem_element->second.memRange.offset + mem_element->second.memRange.size);
+ if (pMemRanges[i].size != VK_WHOLE_SIZE && (my_dataTerminus < (pMemRanges[i].offset + pMemRanges[i].size))) {
skipCall |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT,
VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, (uint64_t)pMemRanges[i].memory, __LINE__,
MEMTRACK_INVALID_MAP, "MEM", "%s: Flush/Invalidate upper-bound (" PRINTF_SIZE_T_SPECIFIER
") exceeds the Memory Object's upper-bound "
"(" PRINTF_SIZE_T_SPECIFIER ").",
funcName, static_cast<size_t>(pMemRanges[i].offset + pMemRanges[i].size),
- static_cast<size_t>(mem_element->second.memRange.offset + mem_element->second.memRange.size));
+ static_cast<size_t>(my_dataTerminus));
}
}
}