Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-08-19 | wlr_scene: Convert render_list to wl_array | Kenny Levinsen | |
This simplifies some of the growth logic, but uses array_realloc to shrink the array if needed. | |||
2022-08-18 | Use wl_signal_emit_mutable | Alexander Orzechowski | |
2022-08-16 | wlr_scene: fix color value when filtering black boxes | yiqiang | |
Signed-off-by: yiqiang <[email protected]> | |||
2022-08-15 | wlr_scene: Use wlr_box_equal | Alexander Orzechowski | |
2022-08-15 | wlr_scene: Use wlr_fbox_equals | Alexander Orzechowski | |
2022-08-14 | wlr_scene: Account for occlusion by other scene nodes when calculating ↵ | Alexander Orzechowski | |
visibility | |||
2022-08-14 | wlr_scene: Calculate output intersections based on node visibility | Alexander Orzechowski | |
This has a few benefits one of them crucial for proper operation: - The primary output will be based on the largest area that is actually visible to the user. Presentation and frame done events are based on this state. This is important to do since we cull frame done events. If we happen to be in a situation where a surface sits mostly on output A and some on output B but is completely obstructed by for instance a fullscreen surface on output A we will erroneously send frame_done events based on output A. If we base things as they are in reality (visibility) the primary output will instead be output B and things will work properly. - The primary output will be NULL if the surface is completely hidden. Due to quirks with wayland, on a surface commit, frame done events are required to be sent. Therefore, a new frame will be submitted for rendering on the primary output. We can improve adaptive sync on completely hidden but enabled surfaces if we null out the primary output in this state. - The client will be more likely to choose better metadata to use for rendering to an output's optimal rendering characteristics. | |||
2022-08-14 | wlr_scene: Introduce buffer opaque region metadata | Alexander Orzechowski | |
2022-08-14 | wlr_scene: Rewrite direct scan out logic to rely on visibility | Alexander Orzechowski | |
Also make the regular rendering logic use the introduced render list. | |||
2022-08-14 | wlr_scene: Don't render non visible parts of textures/rects | Alexander Orzechowski | |
We can also get rid of the intersection checks in the rendering functions because we are guaranteed to already be in the node do to the prior intersection checking of the node visibility. | |||
2022-08-14 | wlr_scene: Only send frame done events for visible buffers | Alexander Orzechowski | |
2022-08-14 | wlr_scene_set_buffer_with_damage: Only damage the visible parts of the node | Alexander Orzechowski | |
2022-08-14 | wlr_scene: Rework damage handling | Alexander Orzechowski | |
Simplify damage handling by using our cached visibility state. Damaging can happen in one step because since we can use the old visibility state which represent what portions of the screen the scene node was. This way we can damage everything in one step after the fact. | |||
2022-08-14 | wlr_scene: Add per scene node visibility | Alexander Orzechowski | |
2022-08-14 | wlr_scene: Damage scene on node destroy by disabling node | Alexander Orzechowski | |
This removes one trivial call of scene_node_damage_whole. It's easier to disable the node later than it is to do the damage dance later. | |||
2022-08-14 | wlr_scene: Introduce scene_nodes_in_box | Alexander Orzechowski | |
Will query the scene for all nodes that appear in the given wlr_box. The nodes will be sent to the iterator from closest to farthest from the eye. Refactor wlr_scene_node_at to use this new function. | |||
2022-08-08 | wlr_scene: Add option to disable direct scanout | Alexander Orzechowski | |
Closes: #3405 Supersedes: !3562 Co-authored-by: Xiao YaoBing <[email protected]> | |||
2022-07-03 | wlr_scene: Maintain damage highlight regions per output | Alexander Orzechowski | |
The logic doesn't support handling multiple outputs so let's not break the assumption and handle damages per output much like how damage_ring is done. | |||
2022-07-03 | wlr_scene: Use direct assignment for damage indicator timestamps | Alexander Orzechowski | |
2022-06-29 | scene: add missing output damage listener | Kirill Primak | |
This is necessary to handle damage coming from the backend and software cursors. | |||
2022-06-29 | scene: switch to wlr_damage_ring | Kirill Primak | |
2022-06-02 | wlr_scene_buffer: Update primary_output on output destroy | Alexander Orzechowski | |
2022-06-02 | wlr_scene_buffer: Call output enter/leave after primary_output calculation | Alexander Orzechowski | |
2022-06-01 | scene: add wlr_scene_output.events.destroy | Kirill Primak | |
2022-05-31 | wlr_scene: Move children list from wlr_scene_node to wlr_scene_tree | Alexander Orzechowski | |
2022-05-31 | wlr_scene: Inline wlr_scene_node_state | Alexander Orzechowski | |
This seems like nothing interesting was done with this. Let's simplify and allow us some flexibility in the future. | |||
2022-05-31 | wlr_scene: Only allow parenting on a wlr_scene_tree | Alexander Orzechowski | |
2022-05-31 | wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_tree | Alexander Orzechowski | |
Co-authored-by: Isaac Freund <[email protected]> | |||
2022-05-30 | wlr_scene: Fix scaling with default source_box | Consolatis | |
Default to texture instead of destination_box geometry. | |||
2022-05-23 | wlr_scene: Hook up HIGHLIGHT logic | Alexander Orzechowski | |
This will display red translucent rectangles on the screen regions that have been damaged. These rectangles will fade out over the span of 250 msecs. If the area is damaged again while the region is fading out, the timer is reset. Let's also disable direct scan out when this option is enabled, or else we won't be able to render the highlight damage regions. | |||
2022-05-23 | wlr_scene: Hook up RERENDER logic | Alexander Orzechowski | |
2022-05-23 | wlr_scene: Parse out WLR_SCENE_DEBUG_DAMAGE | Alexander Orzechowski | |
2022-05-23 | scene/output: check for NULL in destructor | Kirill Primak | |
2022-05-19 | wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Introduce addons to scene nodes | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Change out surface specific iterator functions | Alexander Orzechowski | |
Instead iterate over wlr_scene_buffer | |||
2022-05-19 | wlr_scene: Pull scene_node_get_root into a private header | Alexander Orzechowski | |
We will need this for surface emulation on buffers. | |||
2022-05-19 | wlr_scene: Make scene_buffer_from_node public | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Add a function to also specify damage when applying a buffer to ↵ | Alexander Orzechowski | |
wlr_scene_buffer | |||
2022-05-19 | wlr_scene: Add a way to choose when input interactions happen on a buffer | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Add frame_done signal for wlr_scene_buffer | Alexander Orzechowski | |
Let's also change the name of the function. Motivation [1]. [1] https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3496#note_1357824 | |||
2022-05-19 | wlr_scene: Add primary_output property to wlr_scene_buffer | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Add presentation signal for wlr_scene_buffer | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Make wlr_scene_render_output private | Alexander Orzechowski | |
This function sidesteps damage tracking and output awareness on buffers/surfaces. This function isn't a great fit for the API. Let's also inline the function and simplify it. | |||
2022-05-19 | wlr_scene: Fix missing calls to scene_node_update_outputs | Alexander Orzechowski | |
There were a couple places this was missing - on mode change of an output. If the resolution changes for example nodes may fall out of the view. - on commits on an output for scale or transform changes - when the transform of a buffer is changed. If the dest size is not set, the buffer may have been rotated potentially changing its size if the buffer width != height | |||
2022-05-19 | wlr_scene: Add output_enter/output_leave signals | Alexander Orzechowski | |
When we destroy a scene buffer, let's make sure that we call output_leave signals before we finish the node which will call destroy listeners. | |||
2022-05-19 | wlr_scene_output: Send output leave events before destroying the output | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Add setter for buffer of a wlr_scene_buffer | Alexander Orzechowski | |
2022-05-19 | wlr_scene: Allow buffer in wlr_scene_buffer to be NULL | Alexander Orzechowski | |
This is useful to emulate an unmapped surface. | |||
2022-04-28 | Zero-initialize structs in init functions | Simon Ser | |
Ensures there is no field left to its previous undefined value after calling an init function. |