15db71995Sopenharmony_ci/*
25db71995Sopenharmony_ci *
35db71995Sopenharmony_ci * Copyright (c) 2016-2021 The Khronos Group Inc.
45db71995Sopenharmony_ci * Copyright (c) 2016-2021 Valve Corporation
55db71995Sopenharmony_ci * Copyright (c) 2016-2021 LunarG, Inc.
65db71995Sopenharmony_ci *
75db71995Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
85db71995Sopenharmony_ci * you may not use this file except in compliance with the License.
95db71995Sopenharmony_ci * You may obtain a copy of the License at
105db71995Sopenharmony_ci *
115db71995Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
125db71995Sopenharmony_ci *
135db71995Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
145db71995Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
155db71995Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
165db71995Sopenharmony_ci * See the License for the specific language governing permissions and
175db71995Sopenharmony_ci * limitations under the License.
185db71995Sopenharmony_ci *
195db71995Sopenharmony_ci * Author: Mark Lobodzinski <mark@lunarg.com>
205db71995Sopenharmony_ci * Author: Charles Giessen <charles@lunarg.com>
215db71995Sopenharmony_ci *
225db71995Sopenharmony_ci */
235db71995Sopenharmony_ci#pragma once
245db71995Sopenharmony_ci
255db71995Sopenharmony_ci#include <stdbool.h>
265db71995Sopenharmony_ci#include <vulkan/vulkan.h>
275db71995Sopenharmony_ci
285db71995Sopenharmony_ci// Linked list node for tree of debug callbacks
295db71995Sopenharmony_citypedef struct VkDebugReportContent {
305db71995Sopenharmony_ci    VkDebugReportCallbackEXT msgCallback;
315db71995Sopenharmony_ci    PFN_vkDebugReportCallbackEXT pfnMsgCallback;
325db71995Sopenharmony_ci    VkFlags msgFlags;
335db71995Sopenharmony_ci} VkDebugReportContent;
345db71995Sopenharmony_ci
355db71995Sopenharmony_citypedef struct VkDebugUtilsMessengerContent {
365db71995Sopenharmony_ci    VkDebugUtilsMessengerEXT messenger;
375db71995Sopenharmony_ci    VkDebugUtilsMessageSeverityFlagsEXT messageSeverity;
385db71995Sopenharmony_ci    VkDebugUtilsMessageTypeFlagsEXT messageType;
395db71995Sopenharmony_ci    PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback;
405db71995Sopenharmony_ci} VkDebugUtilsMessengerContent;
415db71995Sopenharmony_ci
425db71995Sopenharmony_citypedef struct VkLayerDbgFunctionNode_ {
435db71995Sopenharmony_ci    bool is_messenger;
445db71995Sopenharmony_ci    union {
455db71995Sopenharmony_ci        VkDebugReportContent report;
465db71995Sopenharmony_ci        VkDebugUtilsMessengerContent messenger;
475db71995Sopenharmony_ci    };
485db71995Sopenharmony_ci    void *pUserData;
495db71995Sopenharmony_ci    struct VkLayerDbgFunctionNode_ *pNext;
505db71995Sopenharmony_ci} VkLayerDbgFunctionNode;
51