blob: e0b9d3260937f046a33165c60d9ca366ee32a608 [file] [log] [blame]
Mark Lobodzinski6eda00a2016-02-02 15:55:36 -07001/* Copyright (c) 2015-2016 The Khronos Group Inc.
2 * Copyright (c) 2015-2016 Valve Corporation
3 * Copyright (c) 2015-2016 LunarG, Inc.
Jon Ashburnbe582642014-12-22 12:04:40 -07004 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -06005 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
Jon Ashburnbe582642014-12-22 12:04:40 -07008 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -06009 * http://www.apache.org/licenses/LICENSE-2.0
Jon Ashburnbe582642014-12-22 12:04:40 -070010 *
Jon Ashburn3ebf1252016-04-19 11:30:31 -060011 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
Jon Ashburnbe582642014-12-22 12:04:40 -070016 *
Jon Ashburne922f712015-11-03 13:41:23 -070017 * Author: Jon Ashburn <jon@lunarg.com>
Mark Lobodzinski97c4d512016-05-19 15:27:18 -060018 * Author: Mark Lobodzinski <mark@lunarg.com>
Jon Ashburnbe582642014-12-22 12:04:40 -070019 **************************************************************************/
20#pragma once
Tobin Ehlis0a43bde2016-05-03 08:31:08 -060021#include "vulkan/vulkan.h"
Mark Lobodzinski97c4d512016-05-19 15:27:18 -060022#include "vulkan/vk_layer.h"
Michael Jurka0f2a63f2016-12-19 16:31:43 +010023#include <string>
Mark Lobodzinski97c4d512016-05-19 15:27:18 -060024#include <unordered_map>
Jon Ashburna8aa8372015-03-03 15:07:15 -070025#include <stdbool.h>
Tobin Ehlis0a43bde2016-05-03 08:31:08 -060026#include <stdio.h>
Jon Ashburnbe582642014-12-22 12:04:40 -070027
28#ifdef __cplusplus
29extern "C" {
30#endif
31
Mark Lobodzinskib87f9022016-05-24 16:04:56 -060032// Definitions for Debug Actions
33typedef enum VkLayerDbgActionBits {
34 VK_DBG_LAYER_ACTION_IGNORE = 0x00000000,
35 VK_DBG_LAYER_ACTION_CALLBACK = 0x00000001,
36 VK_DBG_LAYER_ACTION_LOG_MSG = 0x00000002,
37 VK_DBG_LAYER_ACTION_BREAK = 0x00000004,
38 VK_DBG_LAYER_ACTION_DEBUG_OUTPUT = 0x00000008,
39 VK_DBG_LAYER_ACTION_DEFAULT = 0x40000000,
40} VkLayerDbgActionBits;
41typedef VkFlags VkLayerDbgActionFlags;
42
Mark Lobodzinski97c4d512016-05-19 15:27:18 -060043const std::unordered_map<std::string, VkFlags> debug_actions_option_definitions = {
44 {std::string("VK_DBG_LAYER_ACTION_IGNORE"), VK_DBG_LAYER_ACTION_IGNORE},
45 {std::string("VK_DBG_LAYER_ACTION_CALLBACK"), VK_DBG_LAYER_ACTION_CALLBACK},
46 {std::string("VK_DBG_LAYER_ACTION_LOG_MSG"), VK_DBG_LAYER_ACTION_LOG_MSG},
47 {std::string("VK_DBG_LAYER_ACTION_BREAK"), VK_DBG_LAYER_ACTION_BREAK},
Jamie Madill5738e272016-07-06 13:37:33 -040048#if defined(WIN32)
Mark Lobodzinski97c4d512016-05-19 15:27:18 -060049 {std::string("VK_DBG_LAYER_ACTION_DEBUG_OUTPUT"), VK_DBG_LAYER_ACTION_DEBUG_OUTPUT},
50#endif
51 {std::string("VK_DBG_LAYER_ACTION_DEFAULT"), VK_DBG_LAYER_ACTION_DEFAULT}};
52
53const std::unordered_map<std::string, VkFlags> report_flags_option_definitions = {
54 {std::string("warn"), VK_DEBUG_REPORT_WARNING_BIT_EXT},
55 {std::string("info"), VK_DEBUG_REPORT_INFORMATION_BIT_EXT},
56 {std::string("perf"), VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT},
57 {std::string("error"), VK_DEBUG_REPORT_ERROR_BIT_EXT},
58 {std::string("debug"), VK_DEBUG_REPORT_DEBUG_BIT_EXT}};
59
Mark Lobodzinski07954a52018-02-01 12:14:30 -070060VK_LAYER_EXPORT const char *getLayerOption(const char *_option);
61VK_LAYER_EXPORT FILE *getLayerLogOutput(const char *_option, const char *layerName);
62VK_LAYER_EXPORT VkFlags GetLayerOptionFlags(std::string _option, std::unordered_map<std::string, VkFlags> const &enum_data,
63 uint32_t option_default);
Jon Ashburnbe582642014-12-22 12:04:40 -070064
Mark Lobodzinski07954a52018-02-01 12:14:30 -070065VK_LAYER_EXPORT void setLayerOption(const char *_option, const char *_val);
Mark Young6ba8abe2017-11-09 10:37:04 -070066VK_LAYER_EXPORT void PrintMessageFlags(VkFlags vk_flags, char *msg_flags);
67VK_LAYER_EXPORT void PrintMessageSeverity(VkFlags vk_flags, char *msg_flags);
68VK_LAYER_EXPORT void PrintMessageType(VkFlags vk_flags, char *msg_flags);
Mark Lobodzinski97c4d512016-05-19 15:27:18 -060069
Jon Ashburnbe582642014-12-22 12:04:40 -070070#ifdef __cplusplus
71}
72#endif