mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-08 13:29:45 -05:00
scene: try to import buffers as textures before rendering
The wlroots APIs currently don't allow importing/uploading a buffer
during rendering operations. Scene-graph buffer nodes need to turn
their wlr_buffer into a wlr_texture at some point. It's not always
possible to do so at wlr_scene_buffer creation time because the
scene-graph may have zero outputs at this point, thus no way to
grab a wlr_renderer.
Instead, add scene-graph buffers to a pending list and try to import
them in wlr_scene_output_commit.
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3354
(cherry picked from commit 3db1bcbe64)
This commit is contained in:
parent
68c5fa340d
commit
ec3780e6ea
2 changed files with 18 additions and 0 deletions
|
|
@ -68,6 +68,9 @@ struct wlr_scene {
|
|||
// May be NULL
|
||||
struct wlr_presentation *presentation;
|
||||
struct wl_listener presentation_destroy;
|
||||
|
||||
// List of buffers which need to be imported as textures
|
||||
struct wl_list pending_buffers; // wlr_scene_buffer.pending_link
|
||||
};
|
||||
|
||||
/** A sub-tree in the scene-graph. */
|
||||
|
|
@ -114,6 +117,7 @@ struct wlr_scene_buffer {
|
|||
struct wlr_fbox src_box;
|
||||
int dst_width, dst_height;
|
||||
enum wl_output_transform transform;
|
||||
struct wl_list pending_link; // wlr_scene.pending_buffers
|
||||
};
|
||||
|
||||
/** A viewport for an output in the scene-graph */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue