From 61c4ba5f7039fa420827f897058307c604547dc1 Mon Sep 17 00:00:00 2001 From: Alexander Orzechowski Date: Sat, 1 Jul 2023 15:31:18 -0400 Subject: [PATCH] wlr_scene: Precompute raster textures before rendering --- types/scene/wlr_scene.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/types/scene/wlr_scene.c b/types/scene/wlr_scene.c index 3c86c3f98..485591d98 100644 --- a/types/scene/wlr_scene.c +++ b/types/scene/wlr_scene.c @@ -2087,6 +2087,19 @@ bool wlr_scene_output_build_state(struct wlr_scene_output *scene_output, return false; } + // upload all the textures that will be used within this pass before we start + // rendering. We need to do this because some of those textures might be + // created as part of a multirender blit. + for (int i = list_len - 1; i >= 0; i--) { + struct render_list_entry *entry = &list_data[i]; + if (entry->node->type != WLR_SCENE_NODE_BUFFER) { + continue; + } + + struct wlr_scene_buffer *buffer = wlr_scene_buffer_from_node(entry->node); + wlr_raster_create_texture(buffer->raster, output->renderer); + } + render_data.render_pass = render_pass; pixman_region32_init(&render_data.damage);