aboutsummaryrefslogtreecommitdiff
path: root/layers/mem_tracker.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2016-01-05 16:38:09 -0700
committerMark Lobodzinski <mark@lunarg.com>2016-01-07 15:48:58 -0700
commiteac4fefbaffd7d3ee0b1ec0e8bf76ee8addb05a9 (patch)
treeef2aff40f948acc6be22d31ea8270821962154f3 /layers/mem_tracker.cpp
parent465f5eefb1935edc6aef8dd6eba24e040d22f14f (diff)
downloadusermoji-eac4fefbaffd7d3ee0b1ec0e8bf76ee8addb05a9.tar.xz
layers: LX256, Suppress warnings on pre-signaled fences in MemTracker
Diffstat (limited to 'layers/mem_tracker.cpp')
-rw-r--r--layers/mem_tracker.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 4425c0b7..8f81834b 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -1886,6 +1886,9 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
MT_FENCE_INFO* pFI = &my_data->fenceMap[*pFence];
memset(pFI, 0, sizeof(MT_FENCE_INFO));
memcpy(&(pFI->createInfo), pCreateInfo, sizeof(VkFenceCreateInfo));
+ if (pCreateInfo->flags & VK_FENCE_CREATE_SIGNALED_BIT) {
+ pFI->firstTimeFlag = VK_TRUE;
+ }
loader_platform_thread_unlock_mutex(&globalLock);
}
return result;
@@ -1934,16 +1937,17 @@ verifyFenceStatus(
VkBool32 skipCall = VK_FALSE;
auto pFenceInfo = my_data->fenceMap.find(fence);
if (pFenceInfo != my_data->fenceMap.end()) {
- if (pFenceInfo->second.createInfo.flags & VK_FENCE_CREATE_SIGNALED_BIT) {
- // TODO: Possibly move this to a lower-level warning if we ever add, say, a VERBOSE warning option. There are too many
- // cases where ISVs want to be able to do this to make it a normal warning or perf-warning.
- skipCall |= log_msg(my_data->report_data, VK_DEBUG_REPORT_INFO_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, (uint64_t) fence, __LINE__, MEMTRACK_INVALID_FENCE_STATE, "MEM",
- "%s specified fence %#" PRIxLEAST64 " already in SIGNALED state.", apiCall, (uint64_t) fence);
- }
- if (!pFenceInfo->second.queue) { // Checking status of unsubmitted fence
- // TODO: I don't see a Valid Usage section for ResetFences. This behavior should be documented there.
- skipCall |= log_msg(my_data->report_data, VK_DEBUG_REPORT_WARN_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, (uint64_t) fence, __LINE__, MEMTRACK_INVALID_FENCE_STATE, "MEM",
- "%s called for fence %#" PRIxLEAST64 " which has not been submitted on a Queue.", apiCall, (uint64_t) fence);
+ if (pFenceInfo->second.firstTimeFlag != VK_TRUE) {
+ if ((pFenceInfo->second.createInfo.flags & VK_FENCE_CREATE_SIGNALED_BIT) & pFenceInfo->second.firstTimeFlag!= VK_TRUE) {
+ skipCall |= log_msg(my_data->report_data, VK_DEBUG_REPORT_INFO_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, (uint64_t) fence, __LINE__, MEMTRACK_INVALID_FENCE_STATE, "MEM",
+ "%s specified fence %#" PRIxLEAST64 " already in SIGNALED state.", apiCall, (uint64_t) fence);
+ }
+ if (!pFenceInfo->second.queue) { // Checking status of unsubmitted fence
+ skipCall |= log_msg(my_data->report_data, VK_DEBUG_REPORT_WARN_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, (uint64_t) fence, __LINE__, MEMTRACK_INVALID_FENCE_STATE, "MEM",
+ "%s called for fence %#" PRIxLEAST64 " which has not been submitted on a Queue.", apiCall, (uint64_t) fence);
+ }
+ } else {
+ pFenceInfo->second.firstTimeFlag = VK_FALSE;
}
}
return skipCall;