From 87324738d20915ffa03c27928dd7b4fa3d31ab87 Mon Sep 17 00:00:00 2001 From: Mark Mueller Date: Mon, 30 May 2016 16:46:38 -0600 Subject: 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 --- layers/core_validation.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'layers/core_validation.cpp') 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(pMemRanges[i].offset), static_cast(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(pMemRanges[i].offset + pMemRanges[i].size), - static_cast(mem_element->second.memRange.offset + mem_element->second.memRange.size)); + static_cast(my_dataTerminus)); } } } -- cgit v1.2.3