aboutsummaryrefslogtreecommitdiff
path: root/layers/descriptor_sets.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-09-21 15:09:45 -0600
committerTobin Ehlis <tobine@google.com>2016-09-22 07:55:28 -0600
commit7268794e002e6ae3bf3a11c887a4c15faa4a1e09 (patch)
tree23101fa50a4fdcb503048388983361af8e4366fb /layers/descriptor_sets.cpp
parentec6045e72ebf8804d8550cae98aa2e05e0a5fba1 (diff)
downloadusermoji-7268794e002e6ae3bf3a11c887a4c15faa4a1e09.tar.xz
layers: Clean up no memory bound checks
When memory is freed make sure to clear bindings in associated objects. Also clean up reporting of no memory bound errors. Old assumption was that no memory had every been bound, but it's also possible to hit such errors if the bound memory was freed prior to operation of interest. In descriptor error cases where no memory is bound, add a final error string as clarification since descriptor errors are built up of multiple strings with details from each function call in the tree.
Diffstat (limited to 'layers/descriptor_sets.cpp')
-rw-r--r--layers/descriptor_sets.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp
index e017f0e0..d7ca0255 100644
--- a/layers/descriptor_sets.cpp
+++ b/layers/descriptor_sets.cpp
@@ -690,8 +690,10 @@ bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout
format = image_node->createInfo.format;
usage = image_node->createInfo.usage;
// Validate that memory is bound to image
- if (ValidateMemoryIsBoundToImage(dev_data, image_node, "vkUpdateDescriptorSets()"))
+ if (ValidateMemoryIsBoundToImage(dev_data, image_node, "vkUpdateDescriptorSets()")) {
+ *error = "No memory bound to image.";
return false;
+ }
} else {
// Also need to check the swapchains.
auto swapchain = getSwapchainFromImage(dev_data, image);
@@ -1184,8 +1186,10 @@ bool cvdescriptorset::DescriptorSet::ValidateBufferUpdate(VkDescriptorBufferInfo
*error = error_str.str();
return false;
}
- if (ValidateMemoryIsBoundToBuffer(device_data_, buffer_node, "vkUpdateDescriptorSets()"))
+ if (ValidateMemoryIsBoundToBuffer(device_data_, buffer_node, "vkUpdateDescriptorSets()")) {
+ *error = "No memory bound to buffer.";
return false;
+ }
// Verify usage bits
if (!ValidateBufferUsage(buffer_node, type, error)) {
// error will have been updated by ValidateBufferUsage()