summaryrefslogtreecommitdiffstats
path: root/drivers/vulkan/rendering_context_driver_vulkan.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/vulkan/rendering_context_driver_vulkan.h')
-rw-r--r--drivers/vulkan/rendering_context_driver_vulkan.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/drivers/vulkan/rendering_context_driver_vulkan.h b/drivers/vulkan/rendering_context_driver_vulkan.h
index f1d4021e32..4fbca012c6 100644
--- a/drivers/vulkan/rendering_context_driver_vulkan.h
+++ b/drivers/vulkan/rendering_context_driver_vulkan.h
@@ -35,6 +35,11 @@
#include "servers/rendering/rendering_context_driver.h"
+#if defined(DEBUG_ENABLED) || defined(DEV_ENABLED)
+#define VK_TRACK_DRIVER_MEMORY
+#define VK_TRACK_DEVICE_MEMORY
+#endif
+
#ifdef USE_VOLK
#include <volk.h>
#else
@@ -77,6 +82,12 @@ public:
PFN_vkDebugReportMessageEXT DebugReportMessageEXT = nullptr;
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT = nullptr;
+ // Debug marker extensions.
+ PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT = nullptr;
+ PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT = nullptr;
+ PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT = nullptr;
+ PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT = nullptr;
+
bool debug_report_functions_available() const {
return CreateDebugReportCallbackEXT != nullptr &&
DebugReportMessageEXT != nullptr &&
@@ -110,6 +121,8 @@ private:
// Static callbacks.
static VKAPI_ATTR VkBool32 VKAPI_CALL _debug_messenger_callback(VkDebugUtilsMessageSeverityFlagBitsEXT p_message_severity, VkDebugUtilsMessageTypeFlagsEXT p_message_type, const VkDebugUtilsMessengerCallbackDataEXT *p_callback_data, void *p_user_data);
static VKAPI_ATTR VkBool32 VKAPI_CALL _debug_report_callback(VkDebugReportFlagsEXT p_flags, VkDebugReportObjectTypeEXT p_object_type, uint64_t p_object, size_t p_location, int32_t p_message_code, const char *p_layer_prefix, const char *p_message, void *p_user_data);
+ // Debug marker extensions.
+ VkDebugReportObjectTypeEXT _convert_to_debug_report_objectType(VkObjectType p_object_type);
protected:
Error _find_validation_layers(TightLocalVector<const char *> &r_layer_names) const;
@@ -153,6 +166,45 @@ public:
bool queue_family_supports_present(VkPhysicalDevice p_physical_device, uint32_t p_queue_family_index, SurfaceID p_surface) const;
const Functions &functions_get() const;
+ static VkAllocationCallbacks *get_allocation_callbacks(VkObjectType p_type);
+
+#if defined(VK_TRACK_DRIVER_MEMORY) || defined(VK_TRACK_DEVICE_MEMORY)
+ enum VkTrackedObjectType{
+ VK_TRACKED_OBJECT_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_COMMAND_POOL + 1,
+ VK_TRACKED_OBJECT_TYPE_SURFACE,
+ VK_TRACKED_OBJECT_TYPE_SWAPCHAIN,
+ VK_TRACKED_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT,
+ VK_TRACKED_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
+ VK_TRACKED_OBJECT_TYPE_ACCELERATION_STRUCTURE,
+ VK_TRACKED_OBJECT_TYPE_VMA,
+ VK_TRACKED_OBJECT_TYPE_COUNT
+ };
+
+ enum VkTrackedSystemAllocationScope{
+ VK_TRACKED_SYSTEM_ALLOCATION_SCOPE_COUNT = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE + 1
+ };
+#endif
+
+ const char *get_tracked_object_name(uint32_t p_type_index) const override;
+#if defined(VK_TRACK_DRIVER_MEMORY) || defined(VK_TRACK_DEVICE_MEMORY)
+ uint64_t get_tracked_object_type_count() const override;
+#endif
+
+#if defined(VK_TRACK_DRIVER_MEMORY)
+ uint64_t get_driver_total_memory() const override;
+ uint64_t get_driver_allocation_count() const override;
+ uint64_t get_driver_memory_by_object_type(uint32_t p_type) const override;
+ uint64_t get_driver_allocs_by_object_type(uint32_t p_type) const override;
+#endif
+
+#if defined(VK_TRACK_DEVICE_MEMORY)
+ uint64_t get_device_total_memory() const override;
+ uint64_t get_device_allocation_count() const override;
+ uint64_t get_device_memory_by_object_type(uint32_t p_type) const override;
+ uint64_t get_device_allocs_by_object_type(uint32_t p_type) const override;
+ static VKAPI_ATTR void VKAPI_CALL memory_report_callback(const VkDeviceMemoryReportCallbackDataEXT *p_callback_data, void *p_user_data);
+#endif
+
RenderingContextDriverVulkan();
virtual ~RenderingContextDriverVulkan() override;
};