diff options
| author | Mark Mueller <markm@lunarg.com> | 2016-05-30 16:46:38 -0600 |
|---|---|---|
| committer | Mark Mueller <markm@lunarg.com> | 2016-06-01 13:32:10 -0600 |
| commit | 87324738d20915ffa03c27928dd7b4fa3d31ab87 (patch) | |
| tree | 359bc45f0ac45d1f17c5bfc84071f0fb86f90211 /layers/core_validation.cpp | |
| parent | d9f861f721532e7ae44a0a05bdad94ecf860a112 (diff) | |
| download | usermoji-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.cpp | 10 |
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)); } } } |
