Blender V4.3
vk_debug.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8#pragma once
9
10#include "BKE_global.hh"
11#include "BLI_compiler_attrs.h"
12#include "BLI_set.hh"
13#include "BLI_string.h"
14
15#include "vk_common.hh"
16
17#include <typeindex>
18
19namespace blender::gpu {
20class VKContext;
21class VKDevice;
22
23namespace debug {
25 public:
26 void init(VkInstance vk_instance);
27 void deinit(VkInstance vk_instance);
28 void init_messenger(VkInstance vk_instance);
29 void destroy_messenger(VkInstance vk_instance);
30 void print_labels(const VkDebugUtilsMessengerCallbackDataEXT *callback_data);
31
32 private:
33 VkDebugUtilsMessengerEXT vk_debug_utils_messenger = nullptr;
34};
35
36void object_label(VkObjectType vk_object_type, uint64_t object_handle, const char *name);
37template<typename T> void object_label(T vk_object_type, const char *name)
38{
39 if (!(G.debug & G_DEBUG_GPU)) {
40 return;
41 }
42 const size_t label_size = 64;
43 char label[label_size];
44 memset(label, 0, label_size);
45 static int stats = 0;
46 SNPRINTF(label, "%s_%d", name, stats++);
47 object_label(to_vk_object_type(vk_object_type), (uint64_t)vk_object_type, (const char *)label);
48};
49
57void raise_message(int32_t id_number,
58 VkDebugUtilsMessageSeverityFlagBitsEXT vk_severity_flag_bits,
59 const char *fmt,
60 ...) ATTR_PRINTF_FORMAT(3, 4);
61} // namespace debug
62} // namespace blender::gpu
@ G_DEBUG_GPU
#define ATTR_PRINTF_FORMAT(format_param, dots_param)
#define SNPRINTF(dst, format,...)
Definition BLI_string.h:597
void init()
void print_labels(const VkDebugUtilsMessengerCallbackDataEXT *callback_data)
Definition vk_debug.cc:128
void destroy_messenger(VkInstance vk_instance)
Definition vk_debug.cc:225
void deinit(VkInstance vk_instance)
Definition vk_debug.cc:106
void init_messenger(VkInstance vk_instance)
Definition vk_debug.cc:196
const char * label
#define G(x, y, z)
void raise_message(int32_t id_number, VkDebugUtilsMessageSeverityFlagBitsEXT vk_severity_flag_bits, const char *fmt,...) ATTR_PRINTF_FORMAT(3
void object_label(GLenum type, GLuint object, const char *name)
Definition gl_debug.cc:344
VkObjectType to_vk_object_type(T)
Definition vk_common.hh:70
signed int int32_t
Definition stdint.h:77
unsigned __int64 uint64_t
Definition stdint.h:90