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