New issue
Advanced search Search tips

Issue 648430 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug


Participants' hotlists:
MacViews-Task-Queue


Sign in to add a comment

Harmony - large repaint of cookies dialog when tab focus from Close button to "x" close button

Project Member Reported by shrike@chromium.org, Sep 19 2016

Issue description

Version: 55.0.2861.0
OS: 10.11

What steps will reproduce the problem?
(1) Navigate to https://carlosjeurissen.com/black-menu-for-google (site not important, per se, except this one does not animate its page, which means you don't get a mess of irrelevant yellow flashes from Quartz Debug)
(2) Click the lock icon in the Omnibox
(3) Click the cookies link in the OIB
(4) With full keyboard tab-to-focus enabled, tab several times to focus the Close button at the bottom of the dialog
(5) Activate Flash screen updates in Quartz Debug
(6) Press the tab key

What is the expected output?
Quartz Debug should flash yellow over the Close button, and separately over the "x" close button in the upper right.

What do you see instead?
Quartz Debug flashes yellow over almost the entire dialog (the section that does not flash yellow is the narrow strip from top to bottom of the dialog just to the left of the tableview).

When redrawing two controls, Views seems to redraw the union rect of the frames of those controls (which is not as efficient as it could be). But the redraw region in this case is much larger than the union of the two frames.

 
This is cause views isn't using the CoreAnimation renderer -- check out the attached pictures. Red/green borders mean "still using GL renderer".

The issue is that the ui::Compositor isn't initializing its LayerTreeSettings's RendererSettings to request GpuMemoryBuffers (and probably doesn't have the rest of the params right, either).

Here:
https://cs.chromium.org/chromium/src/ui/compositor/compositor.cc?rcl=0&l=126

This part needs to be true (in the renderer settings bit):
https://cs.chromium.org/chromium/src/cc/output/renderer_settings.h?rcl=1474471143&l=39

But, I bet there are lots of other missing parameters, too.
Screen Shot 2016-09-21 at 12.54.21 PM.png
777 KB View Download

Comment 2 by shrike@chromium.org, Sep 21 2016

But seems like that would mean the dialog should do a full repaint on every redraw? In this case there's a sliver along the left that doesn't get redrawn, and if I tab between other buttons in the dialog only those buttons get redrawn, not the entire dialog.

Labels: Proj-HarmonyDialogs
Labels: -Pri-2 Pri-3
Given comment 1, is this MacViews-specific?  Or is this an underlying cross-platform issue with excessive repainting in views?

Lowering to P3 for now as this would not block shipping.
Cc: tapted@chromium.org
Labels: Proj-MacViews
Note just setting 

  settings.renderer_settings.use_gpu_memory_buffer_resources = true;

On Mac in src/ui/compositor/compositor.cc results in a lot of

[179:775:0202/141658.582550:ERROR:gles2_cmd_decoder.cc(16192)] [.CompositorWorker-0x7ffe94893a00]GL ERROR :GL_INVALID_OPERATION : glCopySubTextureCHROMIUM: target should be aligned with dest target

so there's more to investigate here.


#c4: On non-Mac compositor_util.cc's IsGpuMemoryBufferCompositorResourcesEnabled() defaults to `false`, so I think this is Mac-specific.
Labels: -M-55

Comment 7 by tapted@chromium.org, Aug 31 2017

Cc: ellyjo...@chromium.org
Labels: -OS-Linux -OS-Windows
Owner: tapted@chromium.org
Status: Started (was: Assigned)
https://chromium-review.googlesource.com/c/chromium/src/+/642210
 Issue 762319  has been merged into this issue.
Project Member

Comment 9 by bugdroid1@chromium.org, Sep 7 2017

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

commit 47862bc479eeb61ef945d3c23d1ba34c11873bfc
Author: Trent Apted <tapted@chromium.org>
Date: Thu Sep 07 02:22:40 2017

Use GPU memory buffer resources and zero copy for MacViews.

This allows UI to use CoreAnimation for compositing, resulting
in efficiency gains. Using CoreAnimation to composite requires
using GpuMemoryBuffers, which require zero copy.

This combination is enabled by default on Mac for the renderer
already. This CL enables zero copy and GpuMemoryBuffers on Mac
for UI.

Bug:  648430 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I27852e56e93ab869d212e7c1486eb2ba320d2407
Reviewed-on: https://chromium-review.googlesource.com/642210
Commit-Queue: Trent Apted <tapted@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: ccameron chromium <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500189}
[modify] https://crrev.com/47862bc479eeb61ef945d3c23d1ba34c11873bfc/ui/compositor/compositor.cc
[modify] https://crrev.com/47862bc479eeb61ef945d3c23d1ba34c11873bfc/ui/compositor/compositor_switches.cc
[modify] https://crrev.com/47862bc479eeb61ef945d3c23d1ba34c11873bfc/ui/compositor/compositor_switches.h

Status: Fixed (was: Started)

Sign in to add a comment