From dd9a7ec64581fa72c80c4d6b2139fcc9bc20949d Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Thu, 22 Oct 2015 15:31:56 -0600 Subject: bug-14827: Make DescriptorInfo a union of bufferInfo, imageInfo, and bufferView --- layers/draw_state.cpp | 14 +++++++++----- layers/param_checker.cpp | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'layers') diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index c1395b36..7f51083f 100755 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -830,7 +830,9 @@ static VkBool32 shadowUpdateNode(layer_data* my_data, const VkDevice device, GEN pWDS = new VkWriteDescriptorSet; *pNewNode = (GENERIC_HEADER*)pWDS; memcpy(pWDS, pUpdate, sizeof(VkWriteDescriptorSet)); - pWDS->pDescriptors = new VkDescriptorInfo[pWDS->count]; + /* TODO: restore new once constructors have been removed from vulkan.h */ +// pWDS->pDescriptors = new VkDescriptorInfo[pWDS->count]; + pWDS->pDescriptors = (VkDescriptorInfo *) malloc(sizeof(VkDescriptorInfo) * pWDS->count); array_size = sizeof(VkDescriptorInfo) * pWDS->count; memcpy((void*)pWDS->pDescriptors, ((VkWriteDescriptorSet*)pUpdate)->pDescriptors, array_size); break; @@ -858,12 +860,12 @@ static VkBool32 validateDescriptorSetImageView(const layer_data* my_data, VkDevi for (uint32_t i = 0; i < writeDsCount; i++) { for (uint32_t j = 0; j < pWDS[i].count; j++) { const VkDescriptorInfo *dInfo = &pWDS[i].pDescriptors[j]; - auto imageViewItem = dev_data->imageViewMap.find(dInfo->imageView.handle); + auto imageViewItem = dev_data->imageViewMap.find(dInfo->imageInfo.imageView.handle); if (imageViewItem != dev_data->imageViewMap.end()) { VkImageAspectFlags flags = ((*imageViewItem).second)->subresourceRange.aspectMask; if ((flags & VK_IMAGE_ASPECT_DEPTH_BIT) && (flags & VK_IMAGE_ASPECT_STENCIL_BIT)) { - skipCall |= log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_IMAGE_VIEW, dInfo->imageView.handle, 0, + skipCall |= log_msg(my_data->report_data, VK_DBG_REPORT_ERROR_BIT, VK_OBJECT_TYPE_IMAGE_VIEW, dInfo->imageInfo.imageView.handle, 0, DRAWSTATE_INVALID_IMAGE_ASPECT, "DS", "vkUpdateDescriptorSets: DesriptorSet[%d] in WriteDesriptorSet[%d] " "has ImageView with both STENCIL and DEPTH aspects set", j, i); } @@ -1015,8 +1017,10 @@ static void freeShadowUpdateTree(SET_NODE* pSet) { case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET: pWDS = (VkWriteDescriptorSet*)pFreeUpdate; - if (pWDS->pDescriptors) - delete[] pWDS->pDescriptors; + if (pWDS->pDescriptors) { +// delete[] pWDS->pDescriptors; + free((void *) pWDS->pDescriptors); + } break; case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: break; diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 989a6bda..618e0fc4 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -4806,8 +4806,8 @@ bool PreUpdateDescriptorSets( } if(pDescriptorWrites->pDescriptors != nullptr) { - if(pDescriptorWrites->pDescriptors->imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || - pDescriptorWrites->pDescriptors->imageLayout > VK_IMAGE_LAYOUT_END_RANGE) + if(pDescriptorWrites->pDescriptors->imageInfo.imageLayout < VK_IMAGE_LAYOUT_BEGIN_RANGE || + pDescriptorWrites->pDescriptors->imageInfo.imageLayout > VK_IMAGE_LAYOUT_END_RANGE) { log_msg(mdd(device), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType)0, 0, 0, 1, "PARAMCHECK", "vkUpdateDescriptorSets parameter, VkImageLayout pDescriptorWrites->pDescriptors->imageLayout, is an unrecognized enumerator"); -- cgit v1.2.3