#pragma once
#include <array>
#include <cstdarg>
#include <mutex>
#include <string>
#include <string_view>
#include <vector>
#include <vulkan/utility/vk_struct_helper.hpp>
#include "vk_layer_config.h"
#include "containers/custom_containers.h"
#include "generated/vk_layer_dispatch_table.h"
#include "generated/vk_object_types.h"
#if defined __ANDROID__
#include <android/log.h>
#define LOGCONSOLE …
[[maybe_unused]] static const char *kForceDefaultCallbackKey = "debug.vvl.forcelayerlog";
#endif
extern const char *kVUIDUndefined;
DebugCallbackStatusBits;
DebugCallbackStatusFlags;
struct LogObjectList { … };
VkLayerDbgFunctionState;
template <typename HANDLE_T>
static inline uint64_t HandleToUint64(HANDLE_T h) { … }
static inline uint64_t HandleToUint64(uint64_t h) { … }
struct LoggingLabel { … };
struct LoggingLabelState { … };
class TypedHandleWrapper { … };
struct Location;
struct MessageFormatSettings { … };
class DebugReport { … };
template DebugReport *GetLayerDataPtr<DebugReport>(void *data_key, std::unordered_map<void *, DebugReport *> &data_map);
VKAPI_ATTR VkResult LayerCreateMessengerCallback(DebugReport *debug_report, bool default_callback,
const VkDebugUtilsMessengerCreateInfoEXT *create_info,
VkDebugUtilsMessengerEXT *messenger);
VKAPI_ATTR VkResult LayerCreateReportCallback(DebugReport *debug_report, bool default_callback,
const VkDebugReportCallbackCreateInfoEXT *create_info,
VkDebugReportCallbackEXT *callback);
template <typename T>
static inline void LayerDestroyCallback(DebugReport *debug_report, T callback) { … }
VKAPI_ATTR void ActivateInstanceDebugCallbacks(DebugReport *debug_report);
VKAPI_ATTR void DeactivateInstanceDebugCallbacks(DebugReport *debug_report);
VKAPI_ATTR void LayerDebugUtilsDestroyInstance(DebugReport *debug_report);
VKAPI_ATTR VkBool32 VKAPI_CALL MessengerBreakCallback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
VkDebugUtilsMessageTypeFlagsEXT message_type,
const VkDebugUtilsMessengerCallbackDataEXT *callback_data, void *user_data);
VKAPI_ATTR VkBool32 VKAPI_CALL MessengerLogCallback(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
VkDebugUtilsMessageTypeFlagsEXT message_type,
const VkDebugUtilsMessengerCallbackDataEXT *callback_data, void *user_data);
VKAPI_ATTR VkBool32 VKAPI_CALL MessengerWin32DebugOutputMsg(VkDebugUtilsMessageSeverityFlagBitsEXT message_severity,
VkDebugUtilsMessageTypeFlagsEXT message_type,
const VkDebugUtilsMessengerCallbackDataEXT *callback_data,
void *user_data);