From 99a86825c8b22db7d9727678befffe8ab94a251c Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Fri, 10 Feb 2017 14:01:27 -0700 Subject: layers: Refactor CmdFillBuffer Separated validation from state updates, refactored for pre/post and moved these functions out of core_validation. Also updated for coding style. Change-Id: I9b24bc8c951fd1df99a65db5fa8f1d0412488192 --- layers/buffer_validation.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'layers/buffer_validation.cpp') diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp index 695290da..bd65e47c 100644 --- a/layers/buffer_validation.cpp +++ b/layers/buffer_validation.cpp @@ -2384,3 +2384,25 @@ void PostCallRecordDestroyBufferView(layer_data *device_data, VkBufferView buffe invalidateCommandBuffers(device_data, buffer_view_state->cb_bindings, obj_struct); GetBufferViewMap(device_data)->erase(buffer_view); } + +bool PreCallValidateCmdFillBuffer(layer_data *device_data, GLOBAL_CB_NODE *cb_node, BUFFER_STATE *buffer_state) { + bool skip = false; + skip |= ValidateMemoryIsBoundToBuffer(device_data, buffer_state, "vkCmdFillBuffer()", VALIDATION_ERROR_02529); + skip |= ValidateCmd(device_data, cb_node, CMD_FILLBUFFER, "vkCmdFillBuffer()"); + // Validate that DST buffer has correct usage flags set + skip |= ValidateBufferUsageFlags(device_data, buffer_state, VK_BUFFER_USAGE_TRANSFER_DST_BIT, true, VALIDATION_ERROR_01137, + "vkCmdFillBuffer()", "VK_BUFFER_USAGE_TRANSFER_DST_BIT"); + skip |= insideRenderPass(device_data, cb_node, "vkCmdFillBuffer()", VALIDATION_ERROR_01142); + return skip; +} + +void PreCallRecordCmdFillBuffer(layer_data *device_data, GLOBAL_CB_NODE *cb_node, BUFFER_STATE *buffer_state) { + std::function function = [=]() { + SetBufferMemoryValid(device_data, buffer_state, true); + return false; + }; + cb_node->validate_functions.push_back(function); + // Update bindings between buffer and cmd buffer + AddCommandBufferBindingBuffer(device_data, cb_node, buffer_state); + core_validation::UpdateCmdBufferLastCmd(cb_node, CMD_FILLBUFFER); +} -- cgit v1.2.3