DescriptionPreviously, the DisplayLink would never start until a software draw was done at least once. With force-compositing-mode, the software draw was never done, causing tabs to lockup indefinitely waiting for the swap acknowledgement. This fix ensures that the DisplayLink is running immediately.
The Cocoa setUpGState callback was required to avoid "invalid drawable" errors when setView was called on the NSOpenGLContext.
Another deadlock cause could be the GpuChannel route getting removed while the renderer is blocked on a FlushSync. For this, a method has been added to GpuCommandBufferStub to unblock/cleanup that is called from GpuChannel before the IPC route is removed.
Trace events have been added in places that will help debug related issues in the future.
BUG=84343
TEST=launch with --force-compositing-mode; open about:flags; in the same tab, open ycombinator.com and it should not hang.
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=88877
Patch Set 1 #Patch Set 2 : disabled CVDisplayLink code, seems to work #
Total comments: 4
Patch Set 3 : cleanup, etc #Patch Set 4 : cleanup #Patch Set 5 : split raf-stall fix #
Total comments: 6
Patch Set 6 : feedback #Patch Set 7 : . #Patch Set 8 : DisplayLink back in, hopefully found root cause of bug #
Total comments: 7
Patch Set 9 : fixed up NSView code #
Total comments: 7
Patch Set 10 : comments #
Total comments: 1
Messages
Total messages: 22 (0 generated)
|