aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Forbes <chrisforbes@google.com>2016-05-31 16:34:40 +1200
committerTobin Ehlis <tobine@google.com>2016-05-31 08:49:43 -0600
commit413eae5c4dc394f99f4b89e91346ce77fe74bc11 (patch)
treeed20255ff6172de53653789c4992c9aba71e0e57
parent3abf44e4873001e85d24c14c0d0ba4aa98714016 (diff)
downloadusermoji-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.cpp15
-rw-r--r--layers/descriptor_sets.cpp10
-rw-r--r--layers/descriptor_sets.h3
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