diff options
author | Manuel Stoeckl <code@mstoeckl.com> | 2023-07-19 09:26:28 -0400 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2023-08-23 18:28:58 +0000 |
commit | a94168b5fe640a10a001b5afe3ef4dc9bbfd3416 (patch) | |
tree | 9392f5e67948f328e29ca0c29586d651122410e1 | |
parent | e5fc8cd4c734717c471567de98a77e2482a7015f (diff) |
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.
-rw-r--r-- | include/wlr/render/interface.h | 1 | ||||
-rw-r--r-- | render/pass.c | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index bdb5bbb8..63fd3cf5 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -76,6 +76,7 @@ struct wlr_render_pass_impl { bool (*submit)(struct wlr_render_pass *pass); void (*add_texture)(struct wlr_render_pass *pass, const struct wlr_render_texture_options *options); + /* Implementers are also guaranteed that options->box is nonempty */ void (*add_rect)(struct wlr_render_pass *pass, const struct wlr_render_rect_options *options); }; diff --git a/render/pass.c b/render/pass.c index 444f964e..6545bbfd 100644 --- a/render/pass.c +++ b/render/pass.c @@ -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, const struct wlr_render_rect_options *options) { + if (wlr_box_empty(&options->box)) { + return; + } render_pass->impl->add_rect(render_pass, options); } |