1*b7893ccfSSadaf Ebrahimi /* Copyright (c) 2015-2019 The Khronos Group Inc. 2*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 Valve Corporation 3*b7893ccfSSadaf Ebrahimi * Copyright (c) 2015-2019 LunarG, Inc. 4*b7893ccfSSadaf Ebrahimi * Copyright (C) 2015-2019 Google Inc. 5*b7893ccfSSadaf Ebrahimi * 6*b7893ccfSSadaf Ebrahimi * Licensed under the Apache License, Version 2.0 (the "License"); 7*b7893ccfSSadaf Ebrahimi * you may not use this file except in compliance with the License. 8*b7893ccfSSadaf Ebrahimi * You may obtain a copy of the License at 9*b7893ccfSSadaf Ebrahimi * 10*b7893ccfSSadaf Ebrahimi * http://www.apache.org/licenses/LICENSE-2.0 11*b7893ccfSSadaf Ebrahimi * 12*b7893ccfSSadaf Ebrahimi * Unless required by applicable law or agreed to in writing, software 13*b7893ccfSSadaf Ebrahimi * distributed under the License is distributed on an "AS IS" BASIS, 14*b7893ccfSSadaf Ebrahimi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15*b7893ccfSSadaf Ebrahimi * See the License for the specific language governing permissions and 16*b7893ccfSSadaf Ebrahimi * limitations under the License. 17*b7893ccfSSadaf Ebrahimi * 18*b7893ccfSSadaf Ebrahimi * Mark Lobodzinski <[email protected]> 19*b7893ccfSSadaf Ebrahimi * Dave Houlton <[email protected]> 20*b7893ccfSSadaf Ebrahimi */ 21*b7893ccfSSadaf Ebrahimi #ifndef CORE_VALIDATION_BUFFER_VALIDATION_H_ 22*b7893ccfSSadaf Ebrahimi #define CORE_VALIDATION_BUFFER_VALIDATION_H_ 23*b7893ccfSSadaf Ebrahimi 24*b7893ccfSSadaf Ebrahimi #include "vulkan/vk_layer.h" 25*b7893ccfSSadaf Ebrahimi #include <limits.h> 26*b7893ccfSSadaf Ebrahimi #include <memory> 27*b7893ccfSSadaf Ebrahimi #include <unordered_map> 28*b7893ccfSSadaf Ebrahimi #include <vector> 29*b7893ccfSSadaf Ebrahimi #include <utility> 30*b7893ccfSSadaf Ebrahimi #include <algorithm> 31*b7893ccfSSadaf Ebrahimi #include <bitset> 32*b7893ccfSSadaf Ebrahimi 33*b7893ccfSSadaf Ebrahimi uint32_t FullMipChainLevels(uint32_t height, uint32_t width = 1, uint32_t depth = 1); 34*b7893ccfSSadaf Ebrahimi uint32_t FullMipChainLevels(VkExtent3D); 35*b7893ccfSSadaf Ebrahimi uint32_t FullMipChainLevels(VkExtent2D); 36*b7893ccfSSadaf Ebrahimi 37*b7893ccfSSadaf Ebrahimi uint32_t ResolveRemainingLevels(const VkImageSubresourceRange *range, uint32_t mip_levels); 38*b7893ccfSSadaf Ebrahimi 39*b7893ccfSSadaf Ebrahimi uint32_t ResolveRemainingLayers(const VkImageSubresourceRange *range, uint32_t layers); 40*b7893ccfSSadaf Ebrahimi VkImageSubresourceRange NormalizeSubresourceRange(const IMAGE_STATE &image_state, const VkImageSubresourceRange &range); 41*b7893ccfSSadaf Ebrahimi 42*b7893ccfSSadaf Ebrahimi #endif // CORE_VALIDATION_BUFFER_VALIDATION_H_ 43