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

Issue 640748 link

Starred by 3 users

Issue metadata

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



Sign in to add a comment

views_examples_exe has major drawing issues

Project Member Reported by pkasting@chromium.org, Aug 24 2016

Issue description

Trying to run views_examples_exe on my Windows debug checkout fails a DCHECK with this stack:

cc::LayerTreeHostImpl::CreateAndSetRenderer() Line 2194
cc::LayerTreeHostImpl::InitializeRenderer(cc::OutputSurface * output_surface) Line 2395
cc::SingleThreadProxy::SetOutputSurface(cc::OutputSurface * output_surface) Line 161
cc::LayerTreeHost::SetOutputSurface(std::unique_ptr<cc::OutputSurface,std::default_delete<cc::OutputSurface> > surface) Line 497
ui::Compositor::SetOutputSurface(std::unique_ptr<cc::OutputSurface,std::default_delete<cc::OutputSurface> > output_surface) Line 286
ui::InProcessContextFactory::CreateOutputSurface(base::WeakPtr<ui::Compositor> compositor) Line 194
ui::Compositor::RequestNewOutputSurface() Line 509
cc::LayerTreeHost::RequestNewOutputSurface() Line 510
cc::SingleThreadProxy::RequestNewOutputSurface() Line 140
...stuff below this point is just base::Callback...

The created output surface does not have the delegated_rendering capability.  I don't know what this means or how to fix it.
 
(If I continue past this point, the app window is just blank white.)
Cc: fsam...@chromium.org
Owner: danakj@chromium.org
Status: Assigned (was: Untriaged)
It needs to pass a non-null surface_manager_ to the InProcessContextFactory probably.
But it sounds like this branch isn't going the right way: https://cs.chromium.org/chromium/src/ui/compositor/test/in_process_context_factory.cc?rcl=0&l=170

Comment 6 Deleted

Comment 8 Deleted

Summary: views_examples_exe has major drawing issues (was: views_examples_exe fails DCHECK on start due to no delegated rendering)
@7: I tried updating (to get that change) and rebuilding, and now the .exe runs without a DCHECK but the window is empty; on resizing the window, it draws, but everything is vertically flipped. 

Could what you pointed out in comment 5 be at all related?  Does this sound like a compositor issue?
If its drawing, then the branch in #5 is going the right way now. I would have expected a crash after that change from #7 if it was going the wrong way. So I don't think that's related anymore.

Upside down means https://cs.chromium.org/chromium/src/cc/output/output_surface.h?rcl=1472831237&l=80 that bool is wrong for your platform. DirectOutputSurface https://cs.chromium.org/chromium/src/ui/compositor/test/in_process_context_factory.cc?rcl=1472831237&l=52 should set it in its constructor. I'm not sure where else DirectOutputSurface would be used. I guess you could try linux as well and see if it should be flipped there.

https://cs.chromium.org/chromium/src/ui/compositor/test/in_process_context_factory.h?rcl=1472831237&l=40 I only see that being used for views_examples and aura_demo (which is broken for other unrelated reasons i learnt recently).

Not drawing until resize.. I'm not sure what is wrong there. Would require some debugging to see. Maybe nothing is telling the compositor to draw or that there is damage or something. Resize would do both of those.

I'm not going to spend time debugging that at this point probably though.. this executable isn't much used, it's been broken for probably more than a year without anyone noticing. I'm happy to help you if you got questions though. Would you like to own this bug or should we close it?
Cc: danakj@chromium.org
Owner: pkasting@chromium.org
Owner: sky@chromium.org
I wanted to just kill the .exe.  Scott says this is useful and he wants to keep it, so I'm going to turn this over to him to fix or find a better owner for.

Comment 13 by enne@chromium.org, Nov 8 2016

sky: ping

Comment 14 by sky@chromium.org, Nov 8 2016

Cc: sadrul@chromium.org
I'm not going to have time to look into this any time soon. views_examples works fine on other platforms and is definitely used, so we shouldn't nuke it. I suspect the fix isn't that tricky, but I could be wrong.
Labels: -Pri-1 Pri-3
Project Member

Comment 16 by bugdroid1@chromium.org, Jan 31 2017

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

commit 511c2ded54ef4c20b0013cf7057217c1971f3bb4
Author: sky <sky@chromium.org>
Date: Tue Jan 31 07:34:13 2017

Gets views_examples drawing again

Two things were missing:
. the output surface needs to be marked flipped.
. The display wasn't initially sized.

BUG= 640748 
TEST=none
R=fsamuel@chromium.org

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

[modify] https://crrev.com/511c2ded54ef4c20b0013cf7057217c1971f3bb4/ui/compositor/test/in_process_context_factory.cc

Comment 17 by sky@chromium.org, Jan 31 2017

Cc: jbau...@chromium.org
The patch I just landed gets views_examples showing something on win7, but not on win10...
What does it show on win10? Does it draw once then not again, like its a damage problem?

Comment 19 by sky@chromium.org, Jan 31 2017

Cc: brettw@chromium.org
An empty white window comes up, and on resize the newly exposed areas are black.
Does it work with --disable-direct-composition ? I'm not sure what implementations this test is using, but maybe it's missing an implementation of DidCreateAcceleratedSurfaceChildWindow, so the rendering window isn't being reparented to the browser window.
In particular, InProcessCommandBuffer::DidCreateAcceleratedSurfaceChildWindow should probably be implemented as ::SetParent(child_window, parent_window);
Project Member

Comment 22 by bugdroid1@chromium.org, Feb 7 2017

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

commit 16305b01e5fa25c11eff50d34238bc6576781fa4
Author: brettw <brettw@chromium.org>
Date: Tue Feb 07 20:10:18 2017

Fix in-process compositing on Windows 10.

DidCreateAcceleratedSurfaceChildWindow was not being implemented so the rendering
window wasn't being reparented to the browser window.

BUG= 640748 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

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

[modify] https://crrev.com/16305b01e5fa25c11eff50d34238bc6576781fa4/gpu/ipc/in_process_command_buffer.cc

Comment 23 by sky@chromium.org, Feb 7 2017

Status: Fixed (was: Assigned)

Sign in to add a comment