Commits on Source (22)
-
Derek Foreman authored
We want an output's z_order_list to only contain paint nodes for that output, but until now we've been pretty careless about this. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
7ab7f28e -
Derek Foreman authored
Paint nodes should only exist when they're visible. In the future where we want to track damage with paint nodes we need this to be enforced, or damage won't properly be tracked when a paint node is hidden from us but continues to exist. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
e5dfc3bc -
Derek Foreman authored
In the future when we track damage with paint nodes we have a problem when a paint node is moved off of its output - it immediately stops being present, so we don't generate damage for the move that placed it off screen. We don't want paint nodes to exist when their view isn't on their output anyway, so let's cull these nodes at the point where we assign outputs to views. In the damage-from-paint-nodes future, this will let us properly post damage when the paint node is destroyed. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
85e3a472 -
Derek Foreman authored
We've just made this impossible, so we can now clean up all the TODO locations. I've only turned some of them into assert()s, because they're all mostly in the same place. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
a9986ef9 -
Derek Foreman authored
Right now every backend clears output damage from the primary plane when it repaints. Instead of having this same operation spread across all the backends, just do it in the core instead. In the future, we want to remove damage tracking from the primary plane entirely, and this is a small step in that direction. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
f07af89f -
Derek Foreman authored
In the future we'd like to have multiple overlapping outputs. weston_output_damage() currently adds damage to the output's coordinates on the primary plane. This plane is shared between all outputs, so it would result in damaging more than the intended output. Eventually, plane damage will go away and be replaced by paint node damage, and damaging the entire output would involve adding damage to a list of paint nodes. Instead, use a flag to indicate the output must be fully redrawn, and add the damage during the repaint loop. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
f7ddaa14 -
Derek Foreman authored
This is when they need to be up to date. And it makes it so that view_ensure_paint_node() only does what the function name indicates. Also, later when we tie damage tracking to paint nodes it will make more sense to update them just in time for the output being repainted. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
61cbd8f3 -
Derek Foreman authored
Later, we'll want to use the visible region for damage tracking in paint_nodes. For now, we can use it in the renderers where they've been calculating it independently to draw paint nodes. We still can't remove view->clip entirely, because weston_view_damage_below() may be called before the first render of a view, when its visible region hasn't been calculated yet. The clip is empty at that point, which allows weston_view_damage_below() to "work". Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
7b2ae2ba -
Derek Foreman authored
This is kind of confusing, as the visibility calculation is just a side effect of the damage accumulation. At the expense of walking the paint node list another time, make this a separate function. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
6ba7e57c -
Derek Foreman authored
Pretty cosmetic right now, but make the ALL_DIRTY only contain set bits, and fix the accidentally sparse bitfield. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
3791e370 -
Derek Foreman authored
Now that we have visibility for views, we can clip that to an output and store it in paint nodes. This requires us to split the paint_node_update() function into two, one for things that need to be done before assign_planes() and one for after. This will eventually be useful for tracking damage with paint nodes, as we'll need to damage a paint node's entire visible area for some operations. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
8d00cf7a -
Derek Foreman authored
We used to do this through a byzantine path involving the view's plane transitioning from NULL to primary - but that doesn't work very well when we want to track the plane in the paint node, because the paint node will never have a NULL plane state. This can be removed later when we track damage on paint nodes. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
ab6c6429 -
Derek Foreman authored
Tracking the view's plane in the paint node in this way is a step towards inflicting plane damage from paint node update during the output repaint, instead of manually doing weston_view_damage_below(). We remove view->plane entirely and do all access through pnodes. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
fe2b5db0 -
Derek Foreman authored
Remove plane->damage and instead accumulate damage on paint nodes. This is a step towards allowing multiple overlapping outputs. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
820346a3 -
Derek Foreman authored
This replaces the horribly broken surface damage code we have now. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
2d1198e4 -
Derek Foreman authored
This is no longer used anywhere. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
71cfca6a -
Derek Foreman authored
We're going to move primary planes from compositor to output, so we need struct weston_plane to precede struct weston_output. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
9c116e1f -
Derek Foreman authored
We don't need to do this, we can just leave them in the plane list until they're used. Also, doing so helps for when we want to move the primary_plane from the compositor to the outputs in the future. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
5f0eaeb0 -
Derek Foreman authored
The color-metadata-errors test inits outputs with a NULL compositor, and makes a compositor that's entirely 0s except for the bits it's interested in. This makes a mess in a future where the primary_plane is split up per output, as initializing the primary plane tries to add it to the compositor's plane_list. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
4def21c1 -
Derek Foreman authored
The primary_plane is currently shared amongst all outputs, and is the last barrier to having overlapping outputs. Split it up and make it per output instead. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
ee7971e2 -
Derek Foreman authored
Now that planes are attached to paint nodes, we no have no reason to prevent placing a view on a plane when it's on multiple monitors. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
c4725f50 -
Derek Foreman authored
We can now have overlapping outputs, so we can remove the checks that protected us against this previously. We may want to consider adding checks for discontinuities in the future though, so leave a brief comment where the checks used to be. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
4c63a128
This diff is collapsed.