aboutsummaryrefslogtreecommitdiff
path: root/layers/descriptor_sets.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/descriptor_sets.cpp')
-rw-r--r--layers/descriptor_sets.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/layers/descriptor_sets.cpp b/layers/descriptor_sets.cpp
index 6577fbb5..5c8981e5 100644
--- a/layers/descriptor_sets.cpp
+++ b/layers/descriptor_sets.cpp
@@ -1510,7 +1510,16 @@ bool cvdescriptorset::DescriptorSet::VerifyWriteUpdateContents(const VkWriteDesc
return false;
}
auto buffer = bv_state->create_info.buffer;
- if (!ValidateBufferUsage(GetBufferState(device_data_, buffer), update->descriptorType, error_code, error_msg)) {
+ auto buffer_state = GetBufferState(device_data_, buffer);
+ // Verify that buffer underlying the view hasn't been destroyed prematurely
+ if (!buffer_state) {
+ *error_code = VALIDATION_ERROR_15c00286;
+ std::stringstream error_str;
+ error_str << "Attempted write update to texel buffer descriptor failed because underlying buffer (" << buffer
+ << ") has been destroyed: " << error_msg->c_str();
+ *error_msg = error_str.str();
+ return false;
+ } else if (!ValidateBufferUsage(buffer_state, update->descriptorType, error_code, error_msg)) {
std::stringstream error_str;
error_str << "Attempted write update to texel buffer descriptor failed due to: " << error_msg->c_str();
*error_msg = error_str.str();