Bug 56537 - Repaint culling under opaque surfaces broken
Summary: Repaint culling under opaque surfaces broken
Status: RESOLVED FIXED
Alias: None
Product: Wayland
Classification: Unclassified
Component: weston (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Wayland bug list
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-10-29 18:27 UTC by Kristian Høgsberg
Modified: 2012-10-31 17:36 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Kristian Høgsberg 2012-10-29 18:27:20 UTC
Commit 547149a9c266496f84ac785d9632e4280405d631 broke the optimization of clipping away damage below an opaque surface.  I think the fix is to track opaqueness per weston_plane and use that to discard damage, but then track global opaqueness, that is, accross all planes and use that to clip repainting.

How to reproduce: put simple-egl under the opaque area of weston-terminal, enable repaint debugging.  Observe how simple-egl is repainted.
Comment 1 Kristian Høgsberg 2012-10-31 17:36:50 UTC
commit 4bcf3a5fced20b2265094c71f1a8672df97e1009
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Date:   Wed Oct 31 17:55:45 2012 +0200

    compositor: Fix culling of repaints behind opaque surfaces
    
    Culling of the repaint of a surface behind an opaque surface on the
    same plane was broken by commit 547149a9 [1]. The idea of that commit
    is that the damage obscured by an overlay would remain on the primary
    plane damage and be repainted when the overlay moved. However, in the
    case the two surfaces are on the same plane, the opaque one is not
    obscured, so it ends up being repainted.
    
    This commit adds an opaque field to struct weston_plane, that is built
    incrementally when accumulating damage. The opaque region of surfaces
    on the same plane are removed from the plane's damage, restoring the
    previous culling behavior. But since damage behind opaque region of
    other planes is maintained, the bug solved in the mentioned commit is
    not regressed.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=56537


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.