diff options
| author | Juan Linietsky <reduzio@gmail.com> | 2019-09-20 17:58:06 -0300 |
|---|---|---|
| committer | Juan Linietsky <reduzio@gmail.com> | 2020-02-11 12:01:26 +0100 |
| commit | 123ee5995c989d7c2f0bb320fe94ef1702a48c13 (patch) | |
| tree | 97855b3218f56dcaaeb5e737bf1a919f28ac36db /drivers/vulkan/rendering_device_vulkan.h | |
| parent | dc32083681a770e9d7e332c5beed30b52c793752 (diff) | |
| download | redot-engine-123ee5995c989d7c2f0bb320fe94ef1702a48c13.tar.gz | |
Visual GPU profiler and related profiling support in Vulkan.
Diffstat (limited to 'drivers/vulkan/rendering_device_vulkan.h')
| -rw-r--r-- | drivers/vulkan/rendering_device_vulkan.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/vulkan/rendering_device_vulkan.h b/drivers/vulkan/rendering_device_vulkan.h index c4e5b789bd..be776bd6e2 100644 --- a/drivers/vulkan/rendering_device_vulkan.h +++ b/drivers/vulkan/rendering_device_vulkan.h @@ -828,8 +828,26 @@ class RenderingDeviceVulkan : public RenderingDevice { VkCommandPool command_pool; VkCommandBuffer setup_command_buffer; //used at the begining of every frame for set-up VkCommandBuffer draw_command_buffer; //used at the begining of every frame for set-up + + struct Timestamp { + String description; + uint64_t value; + }; + + VkQueryPool timestamp_pool; + + String *timestamp_names; + uint64_t *timestamp_cpu_values; + uint32_t timestamp_count; + String *timestamp_result_names; + uint64_t *timestamp_cpu_result_values; + uint64_t *timestamp_result_values; + uint32_t timestamp_result_count; + uint64_t index; }; + uint32_t max_timestamp_query_elements; + Frame *frames; //frames available, they are cycled (usually 3) int frame; //current frame int frame_count; //total amount of frames @@ -958,6 +976,21 @@ public: virtual void free(RID p_id); + /****************/ + /**** Timing ****/ + /****************/ + + virtual void capture_timestamp(const String &p_name, bool p_sync_to_draw); + virtual uint32_t get_captured_timestamps_count() const; + virtual uint64_t get_captured_timestamps_frame() const; + virtual uint64_t get_captured_timestamp_gpu_time(uint32_t p_index) const; + virtual uint64_t get_captured_timestamp_cpu_time(uint32_t p_index) const; + virtual String get_captured_timestamp_name(uint32_t p_index) const; + + /****************/ + /**** Limits ****/ + /****************/ + virtual int limit_get(Limit p_limit); virtual void prepare_screen_for_drawing(); @@ -967,6 +1000,8 @@ public: virtual void finalize_frame(); virtual void advance_frame(); + virtual uint32_t get_frame_delay() const; + RenderingDeviceVulkan(); }; |
