diff options
| author | Tobin Ehlis <tobine@google.com> | 2016-09-21 15:09:45 -0600 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-09-22 07:55:28 -0600 |
| commit | 7268794e002e6ae3bf3a11c887a4c15faa4a1e09 (patch) | |
| tree | 23101fa50a4fdcb503048388983361af8e4366fb /layers/descriptor_sets.cpp | |
| parent | ec6045e72ebf8804d8550cae98aa2e05e0a5fba1 (diff) | |
| download | usermoji-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.cpp | 8 |
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() |
