vulkan: Add support for render timer using timestamp queries

This commit is contained in:
Kenny Levinsen 2026-04-06 15:30:40 +00:00
parent 8a9e3a84b5
commit 35c35530a3
4 changed files with 105 additions and 0 deletions

View file

@ -67,6 +67,9 @@ struct wlr_vk_device {
struct wlr_drm_format_set dmabuf_render_formats;
struct wlr_drm_format_set dmabuf_texture_formats;
struct wlr_drm_format_set shm_texture_formats;
float timestamp_period;
uint32_t timestamp_valid_bits;
};
// Tries to find the VkPhysicalDevice for the given drm fd.
@ -412,6 +415,12 @@ VkCommandBuffer vulkan_record_stage_cb(struct wlr_vk_renderer *renderer);
// finished execution.
bool vulkan_submit_stage_wait(struct wlr_vk_renderer *renderer, int wait_sync_file_fd);
struct wlr_vk_render_timer {
struct wlr_render_timer base;
struct wlr_vk_renderer *renderer;
VkQueryPool query_pool;
};
struct wlr_vk_render_pass_texture {
struct wlr_vk_texture *texture;
@ -436,6 +445,8 @@ struct wlr_vk_render_pass {
struct wlr_drm_syncobj_timeline *signal_timeline;
uint64_t signal_point;
struct wlr_vk_render_timer *timer;
struct wl_array textures; // struct wlr_vk_render_pass_texture
};