xref: /aosp_15_r20/external/vulkan-validation-layers/layers/vk_layer_config.h (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
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  *
5*b7893ccfSSadaf Ebrahimi  * Licensed under the Apache License, Version 2.0 (the "License");
6*b7893ccfSSadaf Ebrahimi  * you may not use this file except in compliance with the License.
7*b7893ccfSSadaf Ebrahimi  * You may obtain a copy of the License at
8*b7893ccfSSadaf Ebrahimi  *
9*b7893ccfSSadaf Ebrahimi  *     http://www.apache.org/licenses/LICENSE-2.0
10*b7893ccfSSadaf Ebrahimi  *
11*b7893ccfSSadaf Ebrahimi  * Unless required by applicable law or agreed to in writing, software
12*b7893ccfSSadaf Ebrahimi  * distributed under the License is distributed on an "AS IS" BASIS,
13*b7893ccfSSadaf Ebrahimi  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b7893ccfSSadaf Ebrahimi  * See the License for the specific language governing permissions and
15*b7893ccfSSadaf Ebrahimi  * limitations under the License.
16*b7893ccfSSadaf Ebrahimi  *
17*b7893ccfSSadaf Ebrahimi  * Author: Jon Ashburn <[email protected]>
18*b7893ccfSSadaf Ebrahimi  * Author: Mark Lobodzinski <[email protected]>
19*b7893ccfSSadaf Ebrahimi  **************************************************************************/
20*b7893ccfSSadaf Ebrahimi #pragma once
21*b7893ccfSSadaf Ebrahimi #include "vulkan/vulkan.h"
22*b7893ccfSSadaf Ebrahimi #include "vulkan/vk_layer.h"
23*b7893ccfSSadaf Ebrahimi #include <string>
24*b7893ccfSSadaf Ebrahimi #include <unordered_map>
25*b7893ccfSSadaf Ebrahimi #include <stdbool.h>
26*b7893ccfSSadaf Ebrahimi #include <stdio.h>
27*b7893ccfSSadaf Ebrahimi 
28*b7893ccfSSadaf Ebrahimi #ifdef __cplusplus
29*b7893ccfSSadaf Ebrahimi extern "C" {
30*b7893ccfSSadaf Ebrahimi #endif
31*b7893ccfSSadaf Ebrahimi 
32*b7893ccfSSadaf Ebrahimi // Definitions for Debug Actions
33*b7893ccfSSadaf Ebrahimi typedef enum VkLayerDbgActionBits {
34*b7893ccfSSadaf Ebrahimi     VK_DBG_LAYER_ACTION_IGNORE = 0x00000000,
35*b7893ccfSSadaf Ebrahimi     VK_DBG_LAYER_ACTION_CALLBACK = 0x00000001,
36*b7893ccfSSadaf Ebrahimi     VK_DBG_LAYER_ACTION_LOG_MSG = 0x00000002,
37*b7893ccfSSadaf Ebrahimi     VK_DBG_LAYER_ACTION_BREAK = 0x00000004,
38*b7893ccfSSadaf Ebrahimi     VK_DBG_LAYER_ACTION_DEBUG_OUTPUT = 0x00000008,
39*b7893ccfSSadaf Ebrahimi     VK_DBG_LAYER_ACTION_DEFAULT = 0x40000000,
40*b7893ccfSSadaf Ebrahimi } VkLayerDbgActionBits;
41*b7893ccfSSadaf Ebrahimi typedef VkFlags VkLayerDbgActionFlags;
42*b7893ccfSSadaf Ebrahimi 
43*b7893ccfSSadaf Ebrahimi const std::unordered_map<std::string, VkFlags> debug_actions_option_definitions = {
44*b7893ccfSSadaf Ebrahimi     {std::string("VK_DBG_LAYER_ACTION_IGNORE"), VK_DBG_LAYER_ACTION_IGNORE},
45*b7893ccfSSadaf Ebrahimi     {std::string("VK_DBG_LAYER_ACTION_CALLBACK"), VK_DBG_LAYER_ACTION_CALLBACK},
46*b7893ccfSSadaf Ebrahimi     {std::string("VK_DBG_LAYER_ACTION_LOG_MSG"), VK_DBG_LAYER_ACTION_LOG_MSG},
47*b7893ccfSSadaf Ebrahimi     {std::string("VK_DBG_LAYER_ACTION_BREAK"), VK_DBG_LAYER_ACTION_BREAK},
48*b7893ccfSSadaf Ebrahimi #if defined(WIN32)
49*b7893ccfSSadaf Ebrahimi     {std::string("VK_DBG_LAYER_ACTION_DEBUG_OUTPUT"), VK_DBG_LAYER_ACTION_DEBUG_OUTPUT},
50*b7893ccfSSadaf Ebrahimi #endif
51*b7893ccfSSadaf Ebrahimi     {std::string("VK_DBG_LAYER_ACTION_DEFAULT"), VK_DBG_LAYER_ACTION_DEFAULT}};
52*b7893ccfSSadaf Ebrahimi 
53*b7893ccfSSadaf Ebrahimi const std::unordered_map<std::string, VkFlags> report_flags_option_definitions = {
54*b7893ccfSSadaf Ebrahimi     {std::string("warn"), VK_DEBUG_REPORT_WARNING_BIT_EXT},
55*b7893ccfSSadaf Ebrahimi     {std::string("info"), VK_DEBUG_REPORT_INFORMATION_BIT_EXT},
56*b7893ccfSSadaf Ebrahimi     {std::string("perf"), VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT},
57*b7893ccfSSadaf Ebrahimi     {std::string("error"), VK_DEBUG_REPORT_ERROR_BIT_EXT},
58*b7893ccfSSadaf Ebrahimi     {std::string("debug"), VK_DEBUG_REPORT_DEBUG_BIT_EXT}};
59*b7893ccfSSadaf Ebrahimi 
60*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT const char *getLayerOption(const char *_option);
61*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT const char *GetLayerEnvVar(const char *_option);
62*b7893ccfSSadaf Ebrahimi 
63*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT FILE *getLayerLogOutput(const char *_option, const char *layerName);
64*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT VkFlags GetLayerOptionFlags(std::string _option, std::unordered_map<std::string, VkFlags> const &enum_data,
65*b7893ccfSSadaf Ebrahimi                                             uint32_t option_default);
66*b7893ccfSSadaf Ebrahimi 
67*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT void setLayerOption(const char *_option, const char *_val);
68*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT void PrintMessageFlags(VkFlags vk_flags, char *msg_flags);
69*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT void PrintMessageSeverity(VkFlags vk_flags, char *msg_flags);
70*b7893ccfSSadaf Ebrahimi VK_LAYER_EXPORT void PrintMessageType(VkFlags vk_flags, char *msg_flags);
71*b7893ccfSSadaf Ebrahimi 
72*b7893ccfSSadaf Ebrahimi #ifdef __cplusplus
73*b7893ccfSSadaf Ebrahimi }
74*b7893ccfSSadaf Ebrahimi #endif
75