diff options
| author | Mike Schuchardt <mikes@lunarg.com> | 2017-09-27 14:56:21 -0600 |
|---|---|---|
| committer | Mike Schuchardt <mikes@lunarg.com> | 2017-10-06 16:52:00 -0600 |
| commit | 76bc0c65fe614fa00789b37fb6ad548ca582c6b3 (patch) | |
| tree | 2b30d2f07926d2c0a5880d04c659dfb9a62e6193 /layers | |
| parent | 5177c94516859c7bd8e394588b89921b67c96511 (diff) | |
| download | usermoji-76bc0c65fe614fa00789b37fb6ad548ca582c6b3.tar.xz | |
layers: Add caller to ValidateObjectNotInUse
Make ValidateObjectNotInUse more generic so it can be used for cases
other than delete/destroy
Change-Id: I8983be88a42323021306c9d314ce6558fadcbd5e
Diffstat (limited to 'layers')
| -rw-r--r-- | layers/buffer_validation.cpp | 9 | ||||
| -rw-r--r-- | layers/core_validation.cpp | 30 | ||||
| -rw-r--r-- | layers/core_validation_types.h | 3 |
3 files changed, 24 insertions, 18 deletions
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp index 23e7b4ed..59e1fc7b 100644 --- a/layers/buffer_validation.cpp +++ b/layers/buffer_validation.cpp @@ -850,7 +850,8 @@ bool PreCallValidateDestroyImage(layer_data *device_data, VkImage image, IMAGE_S if (disabled->destroy_image) return false; bool skip = false; if (*image_state) { - skip |= core_validation::ValidateObjectNotInUse(device_data, *image_state, *obj_struct, VALIDATION_ERROR_252007d0); + skip |= core_validation::ValidateObjectNotInUse(device_data, *image_state, *obj_struct, "vkDestroyImage", + VALIDATION_ERROR_252007d0); } return skip; } @@ -3558,7 +3559,8 @@ bool PreCallValidateDestroyImageView(layer_data *device_data, VkImageView image_ if (GetDisables(device_data)->destroy_image_view) return false; bool skip = false; if (*image_view_state) { - skip |= ValidateObjectNotInUse(device_data, *image_view_state, *obj_struct, VALIDATION_ERROR_25400804); + skip |= + ValidateObjectNotInUse(device_data, *image_view_state, *obj_struct, "vkDestroyImageView", VALIDATION_ERROR_25400804); } return skip; } @@ -3600,7 +3602,8 @@ bool PreCallValidateDestroyBufferView(layer_data *device_data, VkBufferView buff if (GetDisables(device_data)->destroy_buffer_view) return false; bool skip = false; if (*buffer_view_state) { - skip |= ValidateObjectNotInUse(device_data, *buffer_view_state, *obj_struct, VALIDATION_ERROR_23e00750); + skip |= + ValidateObjectNotInUse(device_data, *buffer_view_state, *obj_struct, "vkDestroyBufferView", VALIDATION_ERROR_23e00750); } return skip; } diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 86a7d959..f9c36be4 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -2834,15 +2834,15 @@ VKAPI_ATTR VkResult VKAPI_CALL AllocateMemory(VkDevice device, const VkMemoryAll } // For given obj node, if it is use, flag a validation error and return callback result, else return false -bool ValidateObjectNotInUse(const layer_data *dev_data, BASE_NODE *obj_node, VK_OBJECT obj_struct, +bool ValidateObjectNotInUse(const layer_data *dev_data, BASE_NODE *obj_node, VK_OBJECT obj_struct, const char *caller_name, UNIQUE_VALIDATION_ERROR_CODE error_code) { if (dev_data->instance_data->disabled.object_in_use) return false; bool skip = false; if (obj_node->in_use.load()) { - skip |= - log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, get_debug_report_enum[obj_struct.type], obj_struct.handle, - __LINE__, error_code, "DS", "Cannot delete %s 0x%" PRIx64 " that is currently in use by a command buffer. %s", - object_string[obj_struct.type], obj_struct.handle, validation_error_map[error_code]); + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, get_debug_report_enum[obj_struct.type], + obj_struct.handle, __LINE__, error_code, "DS", + "Cannot call %s on %s 0x%" PRIx64 " that is currently in use by a command buffer. %s", caller_name, + object_string[obj_struct.type], obj_struct.handle, validation_error_map[error_code]); } return skip; } @@ -2853,7 +2853,7 @@ static bool PreCallValidateFreeMemory(layer_data *dev_data, VkDeviceMemory mem, if (dev_data->instance_data->disabled.free_memory) return false; bool skip = false; if (*mem_info) { - skip |= ValidateObjectNotInUse(dev_data, *mem_info, *obj_struct, VALIDATION_ERROR_2880054a); + skip |= ValidateObjectNotInUse(dev_data, *mem_info, *obj_struct, "vkFreeMemory", VALIDATION_ERROR_2880054a); } return skip; } @@ -3229,7 +3229,7 @@ static bool PreCallValidateDestroySemaphore(layer_data *dev_data, VkSemaphore se if (dev_data->instance_data->disabled.destroy_semaphore) return false; bool skip = false; if (*sema_node) { - skip |= ValidateObjectNotInUse(dev_data, *sema_node, *obj_struct, VALIDATION_ERROR_268008e2); + skip |= ValidateObjectNotInUse(dev_data, *sema_node, *obj_struct, "vkDestroySemaphore", VALIDATION_ERROR_268008e2); } return skip; } @@ -3256,7 +3256,7 @@ static bool PreCallValidateDestroyEvent(layer_data *dev_data, VkEvent event, EVE if (dev_data->instance_data->disabled.destroy_event) return false; bool skip = false; if (*event_state) { - skip |= ValidateObjectNotInUse(dev_data, *event_state, *obj_struct, VALIDATION_ERROR_24c008f2); + skip |= ValidateObjectNotInUse(dev_data, *event_state, *obj_struct, "vkDestroyEvent", VALIDATION_ERROR_24c008f2); } return skip; } @@ -3289,7 +3289,7 @@ static bool PreCallValidateDestroyQueryPool(layer_data *dev_data, VkQueryPool qu if (dev_data->instance_data->disabled.destroy_query_pool) return false; bool skip = false; if (*qp_state) { - skip |= ValidateObjectNotInUse(dev_data, *qp_state, *obj_struct, VALIDATION_ERROR_26200632); + skip |= ValidateObjectNotInUse(dev_data, *qp_state, *obj_struct, "vkDestroyQueryPool", VALIDATION_ERROR_26200632); } return skip; } @@ -3856,7 +3856,7 @@ static bool PreCallValidateDestroyPipeline(layer_data *dev_data, VkPipeline pipe if (dev_data->instance_data->disabled.destroy_pipeline) return false; bool skip = false; if (*pipeline_state) { - skip |= ValidateObjectNotInUse(dev_data, *pipeline_state, *obj_struct, VALIDATION_ERROR_25c005fa); + skip |= ValidateObjectNotInUse(dev_data, *pipeline_state, *obj_struct, "vkDestroyPipeline", VALIDATION_ERROR_25c005fa); } return skip; } @@ -3901,7 +3901,7 @@ static bool PreCallValidateDestroySampler(layer_data *dev_data, VkSampler sample if (dev_data->instance_data->disabled.destroy_sampler) return false; bool skip = false; if (*sampler_state) { - skip |= ValidateObjectNotInUse(dev_data, *sampler_state, *obj_struct, VALIDATION_ERROR_26600874); + skip |= ValidateObjectNotInUse(dev_data, *sampler_state, *obj_struct, "vkDestroySampler", VALIDATION_ERROR_26600874); } return skip; } @@ -3948,7 +3948,8 @@ static bool PreCallValidateDestroyDescriptorPool(layer_data *dev_data, VkDescrip if (dev_data->instance_data->disabled.destroy_descriptor_pool) return false; bool skip = false; if (*desc_pool_state) { - skip |= ValidateObjectNotInUse(dev_data, *desc_pool_state, *obj_struct, VALIDATION_ERROR_2440025e); + skip |= + ValidateObjectNotInUse(dev_data, *desc_pool_state, *obj_struct, "vkDestroyDescriptorPool", VALIDATION_ERROR_2440025e); } return skip; } @@ -4215,7 +4216,8 @@ static bool PreCallValidateDestroyFramebuffer(layer_data *dev_data, VkFramebuffe if (dev_data->instance_data->disabled.destroy_framebuffer) return false; bool skip = false; if (*framebuffer_state) { - skip |= ValidateObjectNotInUse(dev_data, *framebuffer_state, *obj_struct, VALIDATION_ERROR_250006f8); + skip |= + ValidateObjectNotInUse(dev_data, *framebuffer_state, *obj_struct, "vkDestroyFrameBuffer", VALIDATION_ERROR_250006f8); } return skip; } @@ -4249,7 +4251,7 @@ static bool PreCallValidateDestroyRenderPass(layer_data *dev_data, VkRenderPass if (dev_data->instance_data->disabled.destroy_renderpass) return false; bool skip = false; if (*rp_state) { - skip |= ValidateObjectNotInUse(dev_data, *rp_state, *obj_struct, VALIDATION_ERROR_264006d2); + skip |= ValidateObjectNotInUse(dev_data, *rp_state, *obj_struct, "vkDestroyRenderPass", VALIDATION_ERROR_264006d2); } return skip; } diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index 8a6baa8f..7038d822 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -809,7 +809,8 @@ void AddCommandBufferBindingImage(const layer_data *, GLOBAL_CB_NODE *, IMAGE_ST void AddCommandBufferBindingImageView(const layer_data *, GLOBAL_CB_NODE *, IMAGE_VIEW_STATE *); void AddCommandBufferBindingBuffer(const layer_data *, GLOBAL_CB_NODE *, BUFFER_STATE *); void AddCommandBufferBindingBufferView(const layer_data *, GLOBAL_CB_NODE *, BUFFER_VIEW_STATE *); -bool ValidateObjectNotInUse(const layer_data *dev_data, BASE_NODE *obj_node, VK_OBJECT obj_struct, UNIQUE_VALIDATION_ERROR_CODE error_code); +bool ValidateObjectNotInUse(const layer_data *dev_data, BASE_NODE *obj_node, VK_OBJECT obj_struct, const char *caller_name, + UNIQUE_VALIDATION_ERROR_CODE error_code); void invalidateCommandBuffers(const layer_data *dev_data, std::unordered_set<GLOBAL_CB_NODE *> const &cb_nodes, VK_OBJECT obj); void RemoveImageMemoryRange(uint64_t handle, DEVICE_MEM_INFO *mem_info); void RemoveBufferMemoryRange(uint64_t handle, DEVICE_MEM_INFO *mem_info); |
