Overte C++ Documentation
VulkanDebug.h
1 /*
2  * Vulkan examples debug wrapper
3  *
4  * Copyright (C) 2016-2023 by Sascha Willems - www.saschawillems.de
5  *
6  * This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
7  */
8 
9 #pragma once
10 #include "vulkan/vulkan.h"
11 
12 #include <math.h>
13 #include <stdlib.h>
14 #include <string>
15 #include <cstring>
16 #include <fstream>
17 #include <assert.h>
18 #include <stdio.h>
19 #include <vector>
20 #include <sstream>
21 #ifdef _WIN32
22 #include <windows.h>
23 #include <fcntl.h>
24 #include <io.h>
25 #endif
26 #ifdef __ANDROID__
27 #include "VulkanAndroid.h"
28 #endif
29 // TODO: add this to GLM cmake target?
30 // #define GLM_FORCE_DEPTH_ZERO_TO_ONE
31 #include <glm/glm.hpp>
32 
33 namespace vks
34 {
35  namespace debug
36  {
37  // Default debug callback
38  VKAPI_ATTR VkBool32 VKAPI_CALL debugUtilsMessageCallback(
39  VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
40  VkDebugUtilsMessageTypeFlagsEXT messageType,
41  const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
42  void* pUserData);
43 
44  // Load debug function pointers and set debug callback
45  void setupDebugging(VkInstance instance);
46  // Clear debug callback
47  void freeDebugCallback(VkInstance instance);
48  // Used to populate a VkDebugUtilsMessengerCreateInfoEXT with our example messenger function and desired flags
49  void setupDebugingMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& debugUtilsMessengerCI);
50  }
51 
52  // Wrapper for the VK_EXT_debug_utils extension
53  // These can be used to name Vulkan objects for debugging tools like RenderDoc
54  namespace debugutils
55  {
56  void setup(VkInstance instance);
57  void cmdBeginLabel(VkCommandBuffer cmdbuffer, std::string caption, glm::vec4 color);
58  void cmdEndLabel(VkCommandBuffer cmdbuffer);
59  }
60 }