From 98fa64436e9553f92010d236c1858dbd242aa32a Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Thu, 14 Apr 2016 07:02:43 -0600 Subject: layers: GH337 Track fence from vkQueueBindSparse Correctly update fence tracking for vkQueueBindSparse() call. --- layers/core_validation.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index acbd996d..e0b1529b 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -10110,6 +10110,14 @@ vkQueueBindSparse(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo VkResult result = VK_ERROR_VALIDATION_FAILED_EXT; bool skip_call = false; loader_platform_thread_lock_mutex(&globalLock); + // First verify that fence is not in use + if ((fence != VK_NULL_HANDLE) && (bindInfoCount != 0) && dev_data->fenceMap[fence].in_use.load()) { + skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, + reinterpret_cast(fence), __LINE__, DRAWSTATE_INVALID_FENCE, "DS", + "Fence %#" PRIx64 " is already in use by another submission.", reinterpret_cast(fence)); + } + uint64_t fenceId = 0; + skip_call = add_fence_info(dev_data, fence, queue, &fenceId); for (uint32_t bindIdx = 0; bindIdx < bindInfoCount; ++bindIdx) { const VkBindSparseInfo &bindInfo = pBindInfo[bindIdx]; // Track objects tied to memory -- cgit v1.2.3