summaryrefslogtreecommitdiffstats
path: root/drivers/vulkan/rendering_device_driver_vulkan.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/vulkan/rendering_device_driver_vulkan.h')
-rw-r--r--drivers/vulkan/rendering_device_driver_vulkan.h33
1 files changed, 31 insertions, 2 deletions
diff --git a/drivers/vulkan/rendering_device_driver_vulkan.h b/drivers/vulkan/rendering_device_driver_vulkan.h
index 6847ae00be..2615d9824d 100644
--- a/drivers/vulkan/rendering_device_driver_vulkan.h
+++ b/drivers/vulkan/rendering_device_driver_vulkan.h
@@ -111,7 +111,18 @@ class RenderingDeviceDriverVulkan : public RenderingDeviceDriver {
PFN_vkAcquireNextImageKHR AcquireNextImageKHR = nullptr;
PFN_vkQueuePresentKHR QueuePresentKHR = nullptr;
PFN_vkCreateRenderPass2KHR CreateRenderPass2KHR = nullptr;
+
+ // Debug marker extensions.
+ PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT = nullptr;
+ PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT = nullptr;
+ PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT = nullptr;
+ PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT = nullptr;
+
+ // Debug device fault.
+ PFN_vkGetDeviceFaultInfoEXT GetDeviceFaultInfoEXT = nullptr;
};
+ // Debug marker extensions.
+ VkDebugReportObjectTypeEXT _convert_to_debug_report_objectType(VkObjectType p_object_type);
VkDevice vk_device = VK_NULL_HANDLE;
RenderingContextDriverVulkan *context_driver = nullptr;
@@ -132,6 +143,10 @@ class RenderingDeviceDriverVulkan : public RenderingDeviceDriver {
ShaderCapabilities shader_capabilities;
StorageBufferCapabilities storage_buffer_capabilities;
bool pipeline_cache_control_support = false;
+ bool device_fault_support = false;
+#if defined(VK_TRACK_DEVICE_MEMORY)
+ bool device_memory_report_support = false;
+#endif
DeviceFunctions device_functions;
void _register_requested_device_extension(const CharString &p_extension_name, bool p_required);
@@ -160,10 +175,13 @@ private:
VmaPool _find_or_create_small_allocs_pool(uint32_t p_mem_type_index);
+private:
+ BufferID breadcrumb_buffer;
+
+public:
/*****************/
/**** BUFFERS ****/
/*****************/
-private:
struct BufferInfo {
VkBuffer vk_buffer = VK_NULL_HANDLE;
struct {
@@ -174,7 +192,6 @@ private:
VkBufferView vk_view = VK_NULL_HANDLE; // For texel buffers.
};
-public:
virtual BufferID buffer_create(uint64_t p_size, BitField<BufferUsageBits> p_usage, MemoryAllocationType p_allocation_type) override final;
virtual bool buffer_set_texel_format(BufferID p_buffer, DataFormat p_format) override final;
virtual void buffer_free(BufferID p_buffer) override final;
@@ -187,6 +204,7 @@ public:
/*****************/
struct TextureInfo {
+ VkImage vk_image = VK_NULL_HANDLE;
VkImageView vk_view = VK_NULL_HANDLE;
DataFormat rd_format = DATA_FORMAT_MAX;
VkImageCreateInfo vk_create_info = {};
@@ -405,6 +423,7 @@ public:
virtual ShaderID shader_create_from_bytecode(const Vector<uint8_t> &p_shader_binary, ShaderDescription &r_shader_desc, String &r_name) override final;
virtual void shader_free(ShaderID p_shader) override final;
+ virtual void shader_destroy_modules(ShaderID p_shader) override final;
/*********************/
/**** UNIFORM SET ****/
/*********************/
@@ -606,6 +625,13 @@ public:
virtual void command_begin_label(CommandBufferID p_cmd_buffer, const char *p_label_name, const Color &p_color) override final;
virtual void command_end_label(CommandBufferID p_cmd_buffer) override final;
+ /****************/
+ /**** DEBUG *****/
+ /****************/
+ virtual void command_insert_breadcrumb(CommandBufferID p_cmd_buffer, uint32_t p_data) override final;
+ void print_lost_device_info();
+ void on_device_lost() const;
+
/********************/
/**** SUBMISSION ****/
/********************/
@@ -620,6 +646,7 @@ public:
virtual void set_object_name(ObjectType p_type, ID p_driver_id, const String &p_name) override final;
virtual uint64_t get_resource_native_handle(DriverResource p_type, ID p_driver_id) override final;
virtual uint64_t get_total_memory_used() override final;
+
virtual uint64_t limit_get(Limit p_limit) override final;
virtual uint64_t api_trait_get(ApiTrait p_trait) override final;
virtual bool has_feature(Features p_feature) override final;
@@ -651,4 +678,6 @@ public:
virtual ~RenderingDeviceDriverVulkan();
};
+using VKC = RenderingContextDriverVulkan;
+
#endif // RENDERING_DEVICE_DRIVER_VULKAN_H