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

Issue 604551 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
not on Chrome anymore
Closed: Sep 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Feature



Sign in to add a comment

Move ChildWindowSurfaceWin window to new thread

Project Member Reported by jbau...@chromium.org, Apr 18 2016

Issue description

Then we won't need the GPU main thread to have a UI message loop. This could help save power (assuming MessagePumpDefault has its power consumption improved).


 
I think this should also help to avoid deadlocks with PeekMessage on the top of GPU main thread - 2-8% of the total number of GPU hangs depending on build number.
I think deadlocks occur when PeekMessage is called to dispatch mouse messages to the browser process. If the browser process is waiting directly or indirectly on a synchronous IPC to the GPU process - that is a deadlock.
Owner: jbau...@chromium.org
Status: Fixed (was: Available)
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8a13be547ac764cde127bf3262e4e45d71d63f87

commit 8a13be547ac764cde127bf3262e4e45d71d63f87
Author: jbauman <jbauman@chromium.org>
Date: Mon Sep 12 20:39:58 2016

Create GPU child window on new thread.

On Windows 10 when processing touch events, the GPU process main thread
can block waiting for the browser UI thread to process the events. This
can cause a deadlock if the browser process has sent a synchronous IPC
to the GPU process.

We can work around this by creating all GPU process windows on separate
threads. Then the GPU process main thread won't attach input queues with
the browser process main thread, which reduce the risk of deadlock.
There's still a small risk of deadlock when the window is resized, which
causes the GPU main thread to need to wait for the window owner thread.

BUG=596190
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

Committed: https://crrev.com/6b820b8ad092a59c8315c5ed942d21f723890ca1
Review-Url: https://codereview.chromium.org/2208153002
Cr-Original-Commit-Position: refs/heads/master@{#410902}
Cr-Commit-Position: refs/heads/master@{#418030}

[modify] https://crrev.com/8a13be547ac764cde127bf3262e4e45d71d63f87/gpu/ipc/service/child_window_surface_win.cc
[modify] https://crrev.com/8a13be547ac764cde127bf3262e4e45d71d63f87/gpu/ipc/service/child_window_surface_win.h

Sign in to add a comment