/* Copyright (c) 2015-2016, 2020-2024 The Khronos Group Inc. * Copyright (c) 2015-2016, 2020-2024 Valve Corporation * Copyright (c) 2015-2016, 2020-2024 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "vk_layer_utils.h" #include <string.h> #include <sys/stat.h> #include "containers/range_vector.h" #include "vulkan/vulkan.h" // Debug callbacks get created in three ways: // o Application-defined debug callbacks // o Through settings in a vk_layer_settings.txt file // o By default, if neither an app-defined debug callback nor a vk_layer_settings.txt file is present // // At layer initialization time, default logging callbacks are created to output layer error messages. // If a vk_layer_settings.txt file is present its settings will override any default settings. // // If a vk_layer_settings.txt file is present and an application defines a debug callback, both callbacks // will be active. If no vk_layer_settings.txt file is present, creating an application-defined debug // callback will cause the default callbacks to be unregisterd and removed. void LayerDebugMessengerActions(DebugReport *debug_report, const char *layer_identifier) { … } VkLayerInstanceCreateInfo *GetChainInfo(const VkInstanceCreateInfo *pCreateInfo, VkLayerFunction func) { … } VkLayerDeviceCreateInfo *GetChainInfo(const VkDeviceCreateInfo *pCreateInfo, VkLayerFunction func) { … } std::string GetTempFilePath() { … } // Returns the effective extent of an image subresource, adjusted for mip level and array depth. VkExtent3D GetEffectiveExtent(const VkImageCreateInfo &ci, const VkImageAspectFlags aspect_mask, const uint32_t mip_level) { … } // Returns true if [x, x + x_size) and [y, y + y_size) overlap bool RangesIntersect(int64_t x, uint64_t x_size, int64_t y, uint64_t y_size) { … }