New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 701653 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Dec 12
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug

Blocked on:
issue 681067



Sign in to add a comment

Reduce amount of overdraw in UI

Project Member Reported by sadrul@chromium.org, Mar 15 2017

Issue description

In chrome --mash, we currently endure a fair amount of overdraw. This affects the performance quite a bit. So we need to investigate and reduce the amount of overdraw.

Specific overdraw cases identified so far:

. [ash] The window frames in ash draws in the content region, which then gets redrawn with the actual content. https://crrev.com/456910 fixes this.

. [browser] The browser draws some content behind the renderer's content. This too is unnecessary, and causes overdraw. This needs to be fixed.

We haven't looked at how much overdraw we have for exo apps in --mash yet.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Mar 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/458e50ea1e561feeb779ff7a26310e59b43fc0d6

commit 458e50ea1e561feeb779ff7a26310e59b43fc0d6
Author: sadrul <sadrul@chromium.org>
Date: Wed Mar 15 17:44:31 2017

compositor: Change how attributes are set during ui::Layer::Clone().

A solid-color layer with SK_ColorTRANSPARENT color can be marked as
opaque, as is done in ash-mus to reduce overdraw (crrev.com/456910). When
Clone()ing the Layer, the opaque-ness of the layer is cloned first, and
then the color is set. However, ui::Layer can turn off the opaque-ness
when setting the color, if color is transparent. So, set up color etc.
of a ui::Layer first when cloning, before setting remaining properties.

Without this fix, anytime a window is maximized/restored (which uses
cloned layers), ash loses the overdraw optimization.

BUG= 701653 

Review-Url: https://codereview.chromium.org/2749993002
Cr-Commit-Position: refs/heads/master@{#457126}

[modify] https://crrev.com/458e50ea1e561feeb779ff7a26310e59b43fc0d6/ui/compositor/layer.cc
[modify] https://crrev.com/458e50ea1e561feeb779ff7a26310e59b43fc0d6/ui/compositor/layer_unittest.cc

Labels: -Pri-2 Pri-3
AFAIK: not required for mushrome so reducing priority

Comment 3 by sadrul@chromium.org, Aug 25 2017

Cc: sadrul@chromium.org
Owner: ----
Status: Available (was: Started)
Summary: Reduce amount of overdraw in UI (was: Reduce amount of overdraw)
I think the UI in general can be a little bit smarter to help with overdraw. But I am not actively working on this at the moment.
Components: -Internals>MUS Internals>Services>WindowService
Components: -Internals>Services>WindowService Internals>Services>Ash
Labels: -Proj-Mustash-Mash
Components: Internals>Services>WindowService Internals>Aura
Labels: -Proj-Mustash-Aura Proj-Mustash
Migrating from Proj-Mustash-Aura to components Internals>Aura
Blockedon: 681067
Labels: -Proj-Mustash Proj-Mash-SingleProcess
I'm assuming we'll need to investigate this for single-process mash. There is a general umbrella bug for performance as well: 
Labels: Pri-2
Owner: sky@chromium.org
Status: Assigned (was: Available)
Status: Started (was: Assigned)
Sadrul, are there specific things that need to be done here for single-process-mash? If so, could you point me in the right direction?
Status: Fixed (was: Started)
Here's a description of overdraw: https://www.chromium.org/developers/how-tos/gpu-overdraw-debugging-tool . AFAICT overdraw between mash and classic is the same. I'm closing this out.
single.png
494 KB View Download
single.mash.png
495 KB View Download
double.png
1.3 MB View Download
double.mash.png
1.3 MB View Download
double.overlap.png
1.4 MB View Download
double.overlap.mash.png
1.4 MB View Download
I've attached some permutations that Sadrul asked for. They were created using the command line tool 'screenshot' which results in some tearing.

Sign in to add a comment