aboutsummaryrefslogtreecommitdiff
path: root/layers/unique_objects.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-03-15 13:13:49 -0600
committerMark Lobodzinski <mark@lunarg.com>2017-03-15 13:54:31 -0600
commit8ba558f477354c5271a7e87744bc0450282f8ce4 (patch)
tree903f44c08a7d0f0919477a31dbbe0162831b60ae /layers/unique_objects.cpp
parent820b55b4a3d7d74c4b771e35a1c762204b1871fb (diff)
downloadusermoji-8ba558f477354c5271a7e87744bc0450282f8ce4.tar.xz
layers: Fix CTS BufferView UpdateTemplate crash
Change-Id: I2d03265b465ffc869f52ca85e6ad23301424a8d7
Diffstat (limited to 'layers/unique_objects.cpp')
-rw-r--r--layers/unique_objects.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp
index c94144fc..ed8dd262 100644
--- a/layers/unique_objects.cpp
+++ b/layers/unique_objects.cpp
@@ -697,19 +697,18 @@ void *BuildUnwrappedUpdateTemplateBuffer(layer_data *dev_data, uint64_t descript
allocation_size = std::max(allocation_size, offset + sizeof(VkDescriptorBufferInfo));
VkDescriptorBufferInfo *wrapped_entry = new VkDescriptorBufferInfo(*buffer_entry);
- wrapped_entry->buffer =
- reinterpret_cast<VkBuffer &>(dev_data->unique_id_mapping[reinterpret_cast<uint64_t &>(buffer_entry->buffer)]);
+ wrapped_entry->buffer = reinterpret_cast<VkBuffer &>(
+ dev_data->unique_id_mapping[reinterpret_cast<uint64_t &>(buffer_entry->buffer)]);
template_entries.emplace_back(offset, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
reinterpret_cast<void *>(wrapped_entry));
} break;
case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: {
+ auto buffer_view_handle = reinterpret_cast<uint64_t *>(update_entry);
allocation_size = std::max(allocation_size, offset + sizeof(VkBufferView));
- VkBufferView *wrapped_entry = new VkBufferView;
- *wrapped_entry =
- reinterpret_cast<VkBufferView &>(dev_data->unique_id_mapping[reinterpret_cast<uint64_t &>(update_entry)]);
+ uint64_t wrapped_entry = dev_data->unique_id_mapping[reinterpret_cast<uint64_t &>(*buffer_view_handle)];
template_entries.emplace_back(offset, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
reinterpret_cast<void *>(wrapped_entry));
} break;
@@ -736,8 +735,7 @@ void *BuildUnwrappedUpdateTemplateBuffer(layer_data *dev_data, uint64_t descript
delete reinterpret_cast<VkDescriptorBufferInfo *>(source);
break;
case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:
- *(reinterpret_cast<VkBufferView *>(destination)) = *(reinterpret_cast<VkBufferView *>(source));
- delete reinterpret_cast<VkBufferView *>(source);
+ *(reinterpret_cast<VkBufferView *>(destination)) = reinterpret_cast<VkBufferView>(source);
break;
default:
assert(0);