From 70a76549490e9c2f57f5ab28e1042d406e698e26 Mon Sep 17 00:00:00 2001 From: Tony Barbour Date: Mon, 2 Nov 2015 11:46:29 -0700 Subject: layers: Use descriptor type to decide which pointer to free --- layers/draw_state.cpp | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'layers/draw_state.cpp') diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index fec569f9..cb2c46dd 100755 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -1169,14 +1169,31 @@ static void freeShadowUpdateTree(SET_NODE* pSet) { case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET: pWDS = (VkWriteDescriptorSet*)pFreeUpdate; - if (pWDS->pImageInfo) { - delete[] pWDS->pImageInfo; - } - if (pWDS->pBufferInfo) { - delete[] pWDS->pBufferInfo; - } - if (pWDS->pTexelBufferView) { - delete[] pWDS->pTexelBufferView; + switch (pWDS->descriptorType) { + case VK_DESCRIPTOR_TYPE_SAMPLER: + case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: + case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE: + case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE: + { + delete[] pWDS->pImageInfo; + } + break; + case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: + case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: + { + delete[] pWDS->pTexelBufferView; + } + break; + case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER: + case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER: + case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: + case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: + { + delete[] pWDS->pBufferInfo; + } + break; + default: + break; } break; case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: -- cgit v1.2.3