Merge branch 'buffer-pass-clear' into 'master'

render: optionally clear buffer before rendering

See merge request wlroots/wlroots!4518
This commit is contained in:
Julia Tatz 2024-04-22 06:05:12 +00:00
commit 229f89b416
19 changed files with 254 additions and 118 deletions

View file

@ -91,16 +91,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,

View file

@ -95,11 +95,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;

View file

@ -114,11 +114,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);

View file

@ -101,10 +101,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],

View file

@ -59,11 +59,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) {

View file

@ -63,10 +63,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],

View file

@ -89,11 +89,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);

View file

@ -76,10 +76,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;