render: ensure wlr_render_rect_options->box is nonempty

This optimization also fixes an validation error with the Vulkan
renderer by ensuring vkCmdClearAttachments does not receive empty
regions.
This commit is contained in:
Manuel Stoeckl 2023-07-19 09:26:28 -04:00 committed by Simon Ser
parent e5fc8cd4c7
commit a94168b5fe
2 changed files with 4 additions and 0 deletions

View file

@ -76,6 +76,7 @@ struct wlr_render_pass_impl {
bool (*submit)(struct wlr_render_pass *pass); bool (*submit)(struct wlr_render_pass *pass);
void (*add_texture)(struct wlr_render_pass *pass, void (*add_texture)(struct wlr_render_pass *pass,
const struct wlr_render_texture_options *options); const struct wlr_render_texture_options *options);
/* Implementers are also guaranteed that options->box is nonempty */
void (*add_rect)(struct wlr_render_pass *pass, void (*add_rect)(struct wlr_render_pass *pass,
const struct wlr_render_rect_options *options); const struct wlr_render_rect_options *options);
}; };

View file

@ -40,6 +40,9 @@ void wlr_render_pass_add_texture(struct wlr_render_pass *render_pass,
void wlr_render_pass_add_rect(struct wlr_render_pass *render_pass, void wlr_render_pass_add_rect(struct wlr_render_pass *render_pass,
const struct wlr_render_rect_options *options) { const struct wlr_render_rect_options *options) {
if (wlr_box_empty(&options->box)) {
return;
}
render_pass->impl->add_rect(render_pass, options); render_pass->impl->add_rect(render_pass, options);
} }