From 4cef4e0e562e2b77046bb3ad18e8d9f611918e77 Mon Sep 17 00:00:00 2001 From: Julia Tatz Date: Tue, 12 Dec 2023 17:59:22 -0500 Subject: [PATCH] render: dogfood the clear buffer option --- examples/fullscreen-shell.c | 10 ++++------ examples/output-layers.c | 8 +++----- examples/output-layout.c | 9 ++++----- examples/pointer.c | 7 +++---- examples/rotation.c | 9 ++++----- examples/simple.c | 7 +++---- examples/tablet.c | 9 ++++----- examples/touch.c | 8 ++++---- types/output/cursor.c | 8 +++----- types/output/render.c | 9 +++------ 10 files changed, 35 insertions(+), 49 deletions(-) diff --git a/examples/fullscreen-shell.c b/examples/fullscreen-shell.c index 9fa24c665..db750f65c 100644 --- a/examples/fullscreen-shell.c +++ b/examples/fullscreen-shell.c @@ -92,16 +92,14 @@ static void output_handle_frame(struct wl_listener *listener, void *data) { struct wlr_output_state state; wlr_output_state_init(&state); struct wlr_render_pass *pass = wlr_output_begin_render_pass(output->wlr_output, &state, NULL, - NULL); + &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { 0.3, 0.3, 0.3, 1.0 }, + }); if (pass == NULL) { return; } - wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ - .color = { 0.3, 0.3, 0.3, 1.0 }, - .box = { .width = width, .height = height }, - }); - if (output->surface != NULL) { struct render_data rdata = { .output = output->wlr_output, diff --git a/examples/output-layers.c b/examples/output-layers.c index c8edc00fe..ff6e17d88 100644 --- a/examples/output-layers.c +++ b/examples/output-layers.c @@ -96,11 +96,9 @@ static void output_handle_frame(struct wl_listener *listener, void *data) { wlr_output_effective_resolution(output->wlr_output, &width, &height); 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 }, - .color = { 0.3, 0.3, 0.3, 1 }, + NULL, &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { 0.3, 0.3, 0.3, 1 }, }); size_t i = 0; diff --git a/examples/output-layout.c b/examples/output-layout.c index 07ae26bc4..07df7b3f4 100644 --- a/examples/output-layout.c +++ b/examples/output-layout.c @@ -115,11 +115,10 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output_state output_state; wlr_output_state_init(&output_state); - 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 = { 0.25, 0.25, 0.25, 1 }, + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, + &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { 0.25, 0.25, 0.25, 1 }, }); animate_cat(sample, output->output); diff --git a/examples/pointer.c b/examples/pointer.c index 808c7b953..c7b3cb7fc 100644 --- a/examples/pointer.c +++ b/examples/pointer.c @@ -102,10 +102,9 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output_state output_state; wlr_output_state_init(&output_state); - 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 = { + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { state->clear_color[0], state->clear_color[1], state->clear_color[2], diff --git a/examples/rotation.c b/examples/rotation.c index e610de335..f16d94707 100644 --- a/examples/rotation.c +++ b/examples/rotation.c @@ -60,11 +60,10 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output_state output_state; wlr_output_state_init(&output_state); - 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 = { 0.25, 0.25, 0.25, 1 }, + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, + &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { 0.25, 0.25, 0.25, 1 }, }); for (int y = -128 + (int)sample_output->y_offs; y < height; y += 128) { diff --git a/examples/simple.c b/examples/simple.c index 8fe494609..635a56b3b 100644 --- a/examples/simple.c +++ b/examples/simple.c @@ -64,10 +64,9 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output_state state; wlr_output_state_init(&state); - 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 = { + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &state, NULL, &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { .r = sample->color[0], .g = sample->color[1], .b = sample->color[2], diff --git a/examples/tablet.c b/examples/tablet.c index c977d7fd5..c0561f679 100644 --- a/examples/tablet.c +++ b/examples/tablet.c @@ -88,11 +88,10 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output_state output_state; wlr_output_state_init(&output_state); - 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 = { 0.25, 0.25, 0.25, 1 }, + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, + &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { 0.25, 0.25, 0.25, 1 }, }); float distance = 0.8f * (1 - sample->distance); diff --git a/examples/touch.c b/examples/touch.c index 439a57209..1ceea8768 100644 --- a/examples/touch.c +++ b/examples/touch.c @@ -77,10 +77,10 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { struct wlr_output_state output_state; wlr_output_state_init(&output_state); - 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 }, + struct wlr_render_pass *pass = wlr_output_begin_render_pass(wlr_output, &output_state, NULL, + &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + .clear_color = { 0.25, 0.25, 0.25, 1 }, }); struct touch_point *p; diff --git a/types/output/cursor.c b/types/output/cursor.c index 6c2ba4c43..f005c03d1 100644 --- a/types/output/cursor.c +++ b/types/output/cursor.c @@ -231,7 +231,9 @@ static struct wlr_buffer *render_cursor_buffer(struct wlr_output_cursor *cursor) wlr_box_transform(&dst_box, &dst_box, wlr_output_transform_invert(output->transform), buffer->width, buffer->height); - struct wlr_render_pass *pass = wlr_renderer_begin_buffer_pass(renderer, buffer, NULL); + struct wlr_render_pass *pass = wlr_renderer_begin_buffer_pass(renderer, buffer, &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + }); if (pass == NULL) { wlr_buffer_unlock(buffer); return NULL; @@ -240,10 +242,6 @@ static struct wlr_buffer *render_cursor_buffer(struct wlr_output_cursor *cursor) enum wl_output_transform transform = wlr_output_transform_invert(cursor->transform); transform = wlr_output_transform_compose(transform, output->transform); - wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ - .box = { .width = buffer->width, .height = buffer->height }, - .blend_mode = WLR_RENDER_BLEND_MODE_NONE, - }); wlr_render_pass_add_texture(pass, &(struct wlr_render_texture_options){ .texture = texture, .src_box = cursor->src_box, diff --git a/types/output/render.c b/types/output/render.c index c5e86e1c8..220363134 100644 --- a/types/output/render.c +++ b/types/output/render.c @@ -61,17 +61,14 @@ static struct wlr_buffer *output_acquire_empty_buffer(struct wlr_output *output, } struct wlr_render_pass *pass = - wlr_renderer_begin_buffer_pass(output->renderer, buffer, NULL); + wlr_renderer_begin_buffer_pass(output->renderer, buffer, &(struct wlr_buffer_pass_options){ + .clear_buffer = true, + }); if (pass == NULL) { wlr_buffer_unlock(buffer); return NULL; } - wlr_render_pass_add_rect(pass, &(struct wlr_render_rect_options){ - .color = { 0, 0, 0, 0 }, - .blend_mode = WLR_RENDER_BLEND_MODE_NONE, - }); - if (!wlr_render_pass_submit(pass)) { wlr_buffer_unlock(buffer); return NULL;