diff options
| author | Chris Forbes <chrisforbes@google.com> | 2016-05-31 16:34:40 +1200 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-05-31 08:49:43 -0600 |
| commit | 413eae5c4dc394f99f4b89e91346ce77fe74bc11 (patch) | |
| tree | ed20255ff6172de53653789c4992c9aba71e0e57 | |
| parent | 3abf44e4873001e85d24c14c0d0ba4aa98714016 (diff) | |
| download | usermoji-413eae5c4dc394f99f4b89e91346ce77fe74bc11.tar.xz | |
layers: Remove old hacks for imprecise descriptor tracking for compute
We do it properly now.
Signed-off-by: Chris Forbes <chrisforbes@google.com>
| -rw-r--r-- | layers/core_validation.cpp | 15 | ||||
| -rw-r--r-- | layers/descriptor_sets.cpp | 10 | ||||
| -rw-r--r-- | layers/descriptor_sets.h | 3 |
3 files changed, 1 insertions, 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<VkBuffer> *buffer_set, - std::unordered_set<VkImageView> *image_set) const { - std::unordered_set<uint32_t> 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<uint32_t> &, std::unordered_set<VkBuffer> *, std::unordered_set<VkImageView> *) 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<VkBuffer> *, std::unordered_set<VkImageView> *) const; // Descriptor Update functions. These functions validate state and perform update separately // Validate contents of a WriteUpdate |
