From 9e8947e4d51ddafb40887b8a8ebfb1873615f9b6 Mon Sep 17 00:00:00 2001 From: Rose Hudson Date: Fri, 2 Jun 2023 10:25:07 +0100 Subject: add render timer API Based on five calls: wlr_render_timer_create - creates a timer which can be reused across frames on the same renderer wlr_renderer_begin_buffer_pass - now takes a timer so that backends can record when the rendering starts and finishes wlr_render_timer_get_time - should be called as late as possible so that queries can make their way back from the GPU wlr_render_timer_destroy - self-explanatory The timer is exposed as an opaque `struct wlr_render_timer` so that backends can store whatever they want in there. --- examples/fullscreen-shell.c | 3 ++- examples/output-layers.c | 3 ++- examples/output-layout.c | 2 +- examples/pointer.c | 2 +- examples/rotation.c | 2 +- examples/simple.c | 2 +- examples/tablet.c | 2 +- examples/touch.c | 2 +- 8 files changed, 10 insertions(+), 8 deletions(-) (limited to 'examples') diff --git a/examples/fullscreen-shell.c b/examples/fullscreen-shell.c index f75256f2..cf6023b0 100644 --- a/examples/fullscreen-shell.c +++ b/examples/fullscreen-shell.c @@ -90,7 +90,8 @@ static void output_handle_frame(struct wl_listener *listener, void *data) { wlr_output_effective_resolution(output->wlr_output, &width, &height); struct wlr_output_state state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(output->wlr_output, &state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(output->wlr_output, &state, NULL, + NULL); if (pass == NULL) { return; } diff --git a/examples/output-layers.c b/examples/output-layers.c index 0c53a18e..d4a45d5b 100644 --- a/examples/output-layers.c +++ b/examples/output-layers.c @@ -94,7 +94,8 @@ static void output_handle_frame(struct wl_listener *listener, void *data) { wlr_output_effective_resolution(output->wlr_output, &width, &height); struct wlr_output_state output_state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(output->wlr_output, &output_state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(output->wlr_output, &output_state, + NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = width, .height = height }, diff --git a/examples/output-layout.c b/examples/output-layout.c index d35d933d..1094141c 100644 --- a/examples/output-layout.c +++ b/examples/output-layout.c @@ -115,7 +115,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output *wlr_output = output->output; struct wlr_output_state output_state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = wlr_output->width, .height = wlr_output->height }, diff --git a/examples/pointer.c b/examples/pointer.c index 10c130ab..2e116b88 100644 --- a/examples/pointer.c +++ b/examples/pointer.c @@ -102,7 +102,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { assert(renderer); struct wlr_output_state output_state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = wlr_output->width, .height = wlr_output->height }, .color = { diff --git a/examples/rotation.c b/examples/rotation.c index 863c1286..31768886 100644 --- a/examples/rotation.c +++ b/examples/rotation.c @@ -60,7 +60,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { wlr_output_effective_resolution(wlr_output, &width, &height); struct wlr_output_state output_state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = wlr_output->width, .height = wlr_output->height }, diff --git a/examples/simple.c b/examples/simple.c index c4cd731b..0c737106 100644 --- a/examples/simple.c +++ b/examples/simple.c @@ -63,7 +63,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { } struct wlr_output_state state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &state, NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = wlr_output->width, .height = wlr_output->height }, .color = { diff --git a/examples/tablet.c b/examples/tablet.c index 23b24b0b..85970685 100644 --- a/examples/tablet.c +++ b/examples/tablet.c @@ -88,7 +88,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { wlr_output_effective_resolution(wlr_output, &width, &height); struct wlr_output_state output_state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = wlr_output->width, .height = wlr_output->height }, diff --git a/examples/touch.c b/examples/touch.c index 0379482c..4eea2bd5 100644 --- a/examples/touch.c +++ b/examples/touch.c @@ -77,7 +77,7 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { wlr_output_effective_resolution(wlr_output, &width, &height); struct wlr_output_state output_state = {0}; - struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL); + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, NULL); wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ .box = { .width = width, .height = height }, .color = { 0.25, 0.25, 0.25, 1 }, -- cgit v1.2.3