aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-02-10 13:48:38 -0700
committerMark Lobodzinski <mark@lunarg.com>2017-02-13 10:00:42 -0700
commitb2e72ae4b7d70e0853ae565587e077b62acf8ad7 (patch)
treec44b0b587c7a22a4ee91187a4ea6e59c3666f885 /layers/core_validation.cpp
parent05d1c50ba8b5c5ab13971eff8481fb061ed0d562 (diff)
downloadusermoji-b2e72ae4b7d70e0853ae565587e077b62acf8ad7.tar.xz
layers: Move destroybuffer/bufferview out of CV
Moved pre/post routines to buffer module, along with a couple of functions. Change-Id: Ibb67bf18ed376a37666f171c4e30676fa18157ca
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp82
1 files changed, 1 insertions, 81 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 9f48c634..ce60fa7d 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -5116,24 +5116,6 @@ VKAPI_ATTR VkResult VKAPI_CALL GetQueryPoolResults(VkDevice device, VkQueryPool
return result;
}
-static bool validateIdleBuffer(const layer_data *dev_data, VkBuffer buffer) {
- bool skip_call = false;
- auto buffer_state = GetBufferState(dev_data, buffer);
- if (!buffer_state) {
- skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
- (uint64_t)(buffer), __LINE__, DRAWSTATE_DOUBLE_DESTROY, "DS",
- "Cannot free buffer 0x%" PRIxLEAST64 " that has not been allocated.", (uint64_t)(buffer));
- } else {
- if (buffer_state->in_use.load()) {
- skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
- (uint64_t)(buffer), __LINE__, VALIDATION_ERROR_00676, "DS",
- "Cannot free buffer 0x%" PRIxLEAST64 " that is in use by a command buffer. %s", (uint64_t)(buffer),
- validation_error_map[VALIDATION_ERROR_00676]);
- }
- }
- return skip_call;
-}
-
// Return true if given ranges intersect, else false
// Prereq : For both ranges, range->end - range->start > 0. This case should have already resulted
// in an error so not checking that here
@@ -5271,34 +5253,10 @@ static void RemoveMemoryRange(uint64_t handle, DEVICE_MEM_INFO *mem_info, bool i
}
}
-static void RemoveBufferMemoryRange(uint64_t handle, DEVICE_MEM_INFO *mem_info) { RemoveMemoryRange(handle, mem_info, false); }
+void RemoveBufferMemoryRange(uint64_t handle, DEVICE_MEM_INFO *mem_info) { RemoveMemoryRange(handle, mem_info, false); }
void RemoveImageMemoryRange(uint64_t handle, DEVICE_MEM_INFO *mem_info) { RemoveMemoryRange(handle, mem_info, true); }
-static bool PreCallValidateDestroyBuffer(layer_data *dev_data, VkBuffer buffer, BUFFER_STATE **buffer_state,
- VK_OBJECT *obj_struct) {
- *buffer_state = GetBufferState(dev_data, buffer);
- *obj_struct = {reinterpret_cast<uint64_t &>(buffer), VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT};
- if (dev_data->instance_data->disabled.destroy_buffer) return false;
- bool skip = false;
- if (*buffer_state) {
- skip |= validateIdleBuffer(dev_data, buffer);
- }
- return skip;
-}
-
-static void PostCallRecordDestroyBuffer(layer_data *dev_data, VkBuffer buffer, BUFFER_STATE *buffer_state, VK_OBJECT obj_struct) {
- invalidateCommandBuffers(dev_data, buffer_state->cb_bindings, obj_struct);
- for (auto mem_binding : buffer_state->GetBoundMemory()) {
- auto mem_info = GetMemObjInfo(dev_data, mem_binding);
- if (mem_info) {
- RemoveBufferMemoryRange(reinterpret_cast<uint64_t &>(buffer), mem_info);
- }
- }
- ClearMemoryObjectBindings(dev_data, reinterpret_cast<uint64_t &>(buffer), VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT);
- dev_data->bufferMap.erase(buffer_state->buffer);
-}
-
VKAPI_ATTR void VKAPI_CALL DestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks *pAllocator) {
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
BUFFER_STATE *buffer_state = nullptr;
@@ -5315,25 +5273,6 @@ VKAPI_ATTR void VKAPI_CALL DestroyBuffer(VkDevice device, VkBuffer buffer, const
}
}
-static bool PreCallValidateDestroyBufferView(layer_data *dev_data, VkBufferView buffer_view, BUFFER_VIEW_STATE **buffer_view_state,
- VK_OBJECT *obj_struct) {
- *buffer_view_state = GetBufferViewState(dev_data, buffer_view);
- *obj_struct = {reinterpret_cast<uint64_t &>(buffer_view), VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT};
- if (dev_data->instance_data->disabled.destroy_buffer_view) return false;
- bool skip = false;
- if (*buffer_view_state) {
- skip |= ValidateObjectNotInUse(dev_data, *buffer_view_state, *obj_struct, VALIDATION_ERROR_00701);
- }
- return skip;
-}
-
-static void PostCallRecordDestroyBufferView(layer_data *dev_data, VkBufferView buffer_view, BUFFER_VIEW_STATE *buffer_view_state,
- VK_OBJECT obj_struct) {
- // Any bound cmd buffers are now invalid
- invalidateCommandBuffers(dev_data, buffer_view_state->cb_bindings, obj_struct);
- dev_data->bufferViewMap.erase(buffer_view);
-}
-
VKAPI_ATTR void VKAPI_CALL DestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks *pAllocator) {
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
// Common data objects used pre & post call
@@ -5491,25 +5430,6 @@ VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements(VkDevice device, VkImage i
}
}
-static bool PreCallValidateDestroyImageView(layer_data *dev_data, VkImageView image_view, IMAGE_VIEW_STATE **image_view_state,
- VK_OBJECT *obj_struct) {
- *image_view_state = GetImageViewState(dev_data, image_view);
- *obj_struct = {reinterpret_cast<uint64_t &>(image_view), VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT};
- if (dev_data->instance_data->disabled.destroy_image_view) return false;
- bool skip = false;
- if (*image_view_state) {
- skip |= ValidateObjectNotInUse(dev_data, *image_view_state, *obj_struct, VALIDATION_ERROR_00776);
- }
- return skip;
-}
-
-static void PostCallRecordDestroyImageView(layer_data *dev_data, VkImageView image_view, IMAGE_VIEW_STATE *image_view_state,
- VK_OBJECT obj_struct) {
- // Any bound cmd buffers are now invalid
- invalidateCommandBuffers(dev_data, image_view_state->cb_bindings, obj_struct);
- dev_data->imageViewMap.erase(image_view);
-}
-
VKAPI_ATTR void VKAPI_CALL DestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks *pAllocator) {
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
// Common data objects used pre & post call