render/gles2: Implement buffer_pass_options.clear_buffer

This commit is contained in:
Julia Tatz 2023-12-12 19:01:58 -05:00
parent 4cef4e0e56
commit 5d4313eb82
3 changed files with 14 additions and 11 deletions

View file

@ -259,23 +259,20 @@ static struct wlr_render_pass *gles2_begin_buffer_pass(struct wlr_renderer *wlr_
clock_gettime(CLOCK_MONOTONIC, &timer->cpu_start);
}
const struct wlr_render_color *clear_color = NULL;
if (options->clear_buffer) {
clear_color = &options->clear_color;
}
struct wlr_gles2_buffer *buffer = gles2_buffer_get_or_create(renderer, wlr_buffer);
if (!buffer) {
return NULL;
}
struct wlr_gles2_render_pass *pass = begin_gles2_buffer_pass(buffer, &prev_ctx, timer);
struct wlr_gles2_render_pass *pass = begin_gles2_buffer_pass(buffer, &prev_ctx, timer, clear_color);
if (!pass) {
return NULL;
}
// TODO: switch to using `glClearColor` + `glClear`
if (options->clear_buffer) {
wlr_render_pass_add_rect(&pass->base, &(struct wlr_render_rect_options){
.box = { .width = buffer->buffer->width, .height = buffer->buffer->height },
.color = options->clear_color,
.blend_mode = WLR_RENDER_BLEND_MODE_NONE,
});
}
return &pass->base;
}