aboutsummaryrefslogtreecommitdiff
path: root/layers/draw_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/draw_state.cpp')
-rw-r--r--layers/draw_state.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 4c8823ce..2577dcad 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -4012,6 +4012,31 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
return result;
}
+VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL
+vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence *pFences) {
+ layer_data *dev_data =
+ get_my_data_ptr(get_dispatch_key(device), layer_data_map);
+ bool skipCall = false;
+ loader_platform_thread_lock_mutex(&globalLock);
+ for (uint32_t i = 0; i < fenceCount; ++i) {
+ if (dev_data->fenceMap[pFences[i]].in_use.load()) {
+ skipCall |=
+ log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT,
+ VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
+ reinterpret_cast<const uint64_t &>(pFences[i]),
+ __LINE__, DRAWSTATE_INVALID_FENCE, "DS",
+ "Fence %#" PRIx64 " is in use by a command buffer.",
+ reinterpret_cast<const uint64_t &>(pFences[i]));
+ }
+ }
+ loader_platform_thread_unlock_mutex(&globalLock);
+ VkResult result = VK_ERROR_VALIDATION_FAILED_EXT;
+ if (!skipCall)
+ result = dev_data->device_dispatch_table->ResetFences(
+ device, fenceCount, pFences);
+ return result;
+}
+
VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator)
{
get_my_data_ptr(get_dispatch_key(device), layer_data_map)->device_dispatch_table->DestroyFramebuffer(device, framebuffer, pAllocator);
@@ -7085,6 +7110,8 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkD
return (PFN_vkVoidFunction) vkDestroyDevice;
if (!strcmp(funcName, "vkDestroyFence"))
return (PFN_vkVoidFunction) vkDestroyFence;
+ if (!strcmp(funcName, "vkResetFences"))
+ return (PFN_vkVoidFunction)vkResetFences;
if (!strcmp(funcName, "vkDestroySemaphore"))
return (PFN_vkVoidFunction) vkDestroySemaphore;
if (!strcmp(funcName, "vkDestroyEvent"))