From: Mike Schuchardt Date: Thu, 26 Oct 2017 20:05:52 +0000 (-0600) Subject: layers: Remove warning for imported memory X-Git-Tag: upstream/1.1.92~687 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d8955f1862d3622ffb9125845612750374a3564e;p=platform%2Fupstream%2FVulkan-Tools.git layers: Remove warning for imported memory Flag imported memory as valid to suppress warnings about uninitialized buffers and images that use external memory Change-Id: Id286dfde41a02652767202a31758f44202d9875a --- diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 3702870..124e0f2 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -358,6 +358,18 @@ static void add_mem_obj_info(layer_data *dev_data, void *object, const VkDeviceM assert(object != NULL); dev_data->memObjMap[mem] = unique_ptr(new DEVICE_MEM_INFO(object, mem, pAllocateInfo)); + + if (pAllocateInfo->pNext) { + auto struct_header = reinterpret_cast(pAllocateInfo->pNext); + while (struct_header) { + if (VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR == struct_header->sType || + VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR == struct_header->sType) { + dev_data->memObjMap[mem]->global_valid = true; + break; + } + struct_header = reinterpret_cast(struct_header->pNext); + } + } } // For given bound_object_handle, bound to given mem allocation, verify that the range for the bound object is valid diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index dc9d754..120be0a 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -316,7 +316,7 @@ struct MEMORY_RANGE { // Data struct for tracking memory object struct DEVICE_MEM_INFO : public BASE_NODE { void *object; // Dispatchable object used to create this memory (device of swapchain) - bool global_valid; // If allocation is mapped, set to "true" to be picked up by subsequently bound ranges + bool global_valid; // If allocation is mapped or external, set to "true" to be picked up by subsequently bound ranges VkDeviceMemory mem; VkMemoryAllocateInfo alloc_info; std::unordered_set obj_bindings; // objects bound to this memory