From 413eae5c4dc394f99f4b89e91346ce77fe74bc11 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Tue, 31 May 2016 16:34:40 +1200 Subject: layers: Remove old hacks for imprecise descriptor tracking for compute We do it properly now. Signed-off-by: Chris Forbes --- layers/core_validation.cpp | 15 --------------- layers/descriptor_sets.cpp | 10 +--------- layers/descriptor_sets.h | 3 --- 3 files changed, 1 insertion(+), 27 deletions(-) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 2c932512..933c2f2d 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -2659,17 +2659,6 @@ static bool validate_and_update_drawtime_descriptor_state( } return result; } -// TODO : This is a temp function that naively updates bound storage images and buffers based on which descriptor sets are bound. -// When validate_and_update_draw_state() handles compute shaders so that active_slots is correct for compute pipelines, this -// function can be killed and validate_and_update_draw_state() used instead -static void update_shader_storage_images_and_buffers(layer_data *dev_data, GLOBAL_CB_NODE *pCB) { - // For the bound descriptor sets, pull off any storage images and buffers - // This may be more than are actually updated depending on which are active, but for now this is a stop-gap for compute - // pipelines - for (auto set : pCB->lastBound[VK_PIPELINE_BIND_POINT_COMPUTE].uniqueBoundSets) { - set->GetAllStorageUpdates(&pCB->updateBuffers, &pCB->updateImages); - } -} // For given pipeline, return number of MSAA samples, or one if MSAA disabled static VkSampleCountFlagBits getNumSamples(PIPELINE_NODE const *pipe) { @@ -6884,8 +6873,6 @@ VKAPI_ATTR void VKAPI_CALL CmdDispatch(VkCommandBuffer commandBuffer, uint32_t x GLOBAL_CB_NODE *pCB = getCBNode(dev_data, commandBuffer); if (pCB) { skipCall |= validate_and_update_draw_state(dev_data, pCB, false, VK_PIPELINE_BIND_POINT_COMPUTE); - // TODO : Call below is temporary until call above can be re-enabled - update_shader_storage_images_and_buffers(dev_data, pCB); skipCall |= markStoreImagesAndBuffersAsWritten(dev_data, pCB); skipCall |= addCmd(dev_data, pCB, CMD_DISPATCH, "vkCmdDispatch()"); skipCall |= insideRenderPass(dev_data, pCB, "vkCmdDispatch"); @@ -6907,8 +6894,6 @@ CmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize GLOBAL_CB_NODE *pCB = getCBNode(dev_data, commandBuffer); if (pCB) { skipCall |= validate_and_update_draw_state(dev_data, pCB, false, VK_PIPELINE_BIND_POINT_COMPUTE); - // TODO : Call below is temporary until call above can be re-enabled - update_shader_storage_images_and_buffers(dev_data, pCB); skipCall |= markStoreImagesAndBuffersAsWritten(dev_data, pCB); skipCall |= addCmd(dev_data, pCB, CMD_DISPATCHINDIRECT, "vkCmdDispatchIndirect()"); skipCall |= insideRenderPass(dev_data, pCB, "vkCmdDispatchIndirect"); diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp index 5fc1de3f..b0e16e82 100644 --- a/layers/descriptor_sets.cpp +++ b/layers/descriptor_sets.cpp @@ -451,14 +451,6 @@ uint32_t cvdescriptorset::DescriptorSet::GetStorageUpdates(const std::unordered_ } return num_updates; } -// This is a special case for compute shaders that should eventually be removed once we have proper valid binding info for compute -// case -uint32_t cvdescriptorset::DescriptorSet::GetAllStorageUpdates(std::unordered_set *buffer_set, - std::unordered_set *image_set) const { - std::unordered_set binding_set; - p_layout_->FillBindingSet(&binding_set); - return GetStorageUpdates(binding_set, buffer_set, image_set); -} // Set is being deleted or updates so invalidate all bound cmd buffers void cvdescriptorset::DescriptorSet::InvalidateBoundCmdBuffers() { for (auto cb_node : bound_cmd_buffers_) { @@ -1131,4 +1123,4 @@ bool cvdescriptorset::DescriptorSet::VerifyCopyUpdateContents(const VkCopyDescri } // All checks passed so update contents are good return true; -} \ No newline at end of file +} diff --git a/layers/descriptor_sets.h b/layers/descriptor_sets.h index 6f2073b7..6a0d7e78 100644 --- a/layers/descriptor_sets.h +++ b/layers/descriptor_sets.h @@ -310,9 +310,6 @@ class DescriptorSet : public BASE_NODE { // of objects inserted uint32_t GetStorageUpdates(const std::unordered_set &, std::unordered_set *, std::unordered_set *) const; - // For all descriptors in a set, add any buffers and images that may be updated to their respective unordered_sets & return - // number of objects inserted - uint32_t GetAllStorageUpdates(std::unordered_set *, std::unordered_set *) const; // Descriptor Update functions. These functions validate state and perform update separately // Validate contents of a WriteUpdate -- cgit v1.2.3