buffer_validation.cpp revision c06c9b88f5f5bcc7033ba41d5547b048fa6015a4
1584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski/* Copyright (c) 2015-2017 The Khronos Group Inc. 2584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * Copyright (c) 2015-2017 Valve Corporation 3584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * Copyright (c) 2015-2017 LunarG, Inc. 4584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * Copyright (C) 2015-2017 Google Inc. 5584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * 6584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * Licensed under the Apache License, Version 2.0 (the "License"); 7584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * you may not use this file except in compliance with the License. 8584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * You may obtain a copy of the License at 9584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * 10584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * http://www.apache.org/licenses/LICENSE-2.0 11584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * 12584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * Unless required by applicable law or agreed to in writing, software 13584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * distributed under the License is distributed on an "AS IS" BASIS, 14584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * See the License for the specific language governing permissions and 16584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * limitations under the License. 17584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * 18584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski * Author: Mark Lobodzinski <mark@lunarg.com> 19584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski */ 20584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski 21584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski// Allow use of STL min and max functions in Windows 22584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski#define NOMINMAX 23584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski 24584b2b6a66e3069a66727639e5a0b7ef9ebf13b6Mark Lobodzinski#include "buffer_validation.h" 25c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski 26c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark LobodzinskiVK_LAYER_EXPORT void PostCallRecordCreateImage(std::unordered_map<VkImage, std::unique_ptr<IMAGE_STATE>> &imageMap, 27c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski std::unordered_map<VkImage, std::vector<ImageSubresourcePair>> &imageSubresourceMap, 28c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski std::unordered_map<ImageSubresourcePair, IMAGE_LAYOUT_NODE> &imageLayoutMap, 29c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski const VkImageCreateInfo *pCreateInfo, VkImage *pImage) { 30c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski IMAGE_LAYOUT_NODE image_state; 31c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski image_state.layout = pCreateInfo->initialLayout; 32c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski image_state.format = pCreateInfo->format; 33c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski imageMap.insert(std::make_pair(*pImage, std::unique_ptr<IMAGE_STATE>(new IMAGE_STATE(*pImage, pCreateInfo)))); 34c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski ImageSubresourcePair subpair{*pImage, false, VkImageSubresource()}; 35c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski imageSubresourceMap[*pImage].push_back(subpair); 36c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski imageLayoutMap[subpair] = image_state; 37c06c9b88f5f5bcc7033ba41d5547b048fa6015a4Mark Lobodzinski} 38