From 1ea01b198d9703e4e2788eac2187cfc7294f720c Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Wed, 21 Dec 2016 09:21:06 -0700 Subject: layers:Split ValidateAndUpdateDrawState() Split ValidateAndUpdateDrawState() to isolate validation and state updates into ValidateDrawState() & UpdateDrawState() functions. Refactored CmdDraw() to use Pre/Post patter with all state updates now occurring in the Post function. Made some initial updates to other Draw/Dispatch functions to call each new function in-line, but will refactor these functions to use Pre/Post in follow-on commits. --- layers/descriptor_sets.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'layers/descriptor_sets.cpp') diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp index 6cc0ec9d..5caa8bc7 100644 --- a/layers/descriptor_sets.cpp +++ b/layers/descriptor_sets.cpp @@ -699,7 +699,8 @@ void cvdescriptorset::DescriptorSet::PerformCopyUpdate(const VkCopyDescriptorSet // Bind cb_node to this set and this set to cb_node. // Prereq: This should be called for a set that has been confirmed to be active for the given cb_node, meaning it's going // to be used in a draw by the given cb_node -void cvdescriptorset::DescriptorSet::BindCommandBuffer(GLOBAL_CB_NODE *cb_node, const std::unordered_set &bindings) { +void cvdescriptorset::DescriptorSet::BindCommandBuffer(GLOBAL_CB_NODE *cb_node, + const std::unordered_set *active_bindings) { // bind cb to this descriptor set cb_bindings.insert(cb_node); // Add bindings for descriptor set, the set's pool, and individual objects in the set @@ -709,7 +710,7 @@ void cvdescriptorset::DescriptorSet::BindCommandBuffer(GLOBAL_CB_NODE *cb_node, {reinterpret_cast(pool_state_->pool), VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT}); // For the active slots, use set# to look up descriptorSet from boundDescriptorSets, and bind all of that descriptor set's // resources - for (auto binding : bindings) { + for (auto binding : *active_bindings) { auto start_idx = p_layout_->GetGlobalStartIndexFromBinding(binding); auto end_idx = p_layout_->GetGlobalEndIndexFromBinding(binding); for (uint32_t i = start_idx; i <= end_idx; ++i) { -- cgit v1.2.3