|
Allow switching DirectCompositionSurfaceWin between drawing modes.
There are two ways to put the main page content into a DirectComposition
surface. IDXGISwapChain has the advantage that it can be put into an
overlay, saving power, but updates to it don't happen in sync with
updates to the layer tree. This results in weird-looking lag when
scrolling and makes transitions between layer structures look bad.
IDCompositionSurface does have its contents synced with tree updates,
but can't be put in an overlay. This wastes power on pages with canvas
or software-decoded video that update often but can't be put in
independent layers.
To get the best of both worlds, add a new SetEnableDCLayersCHROMIUM GL
command that can switch the backbuffers between the two modes. It will
be enabled when an overlay is promoted for the first time and is
disabled 60 frames after the last frame where an overlay is used.
This hysteresis helps prevent unnecessary switches, which are expensive
because they require reallocating the buffer, redrawing the entire
frame, and (when switching to IDXGISwapChains) waiting for the contents
to finish rendering on the GPU before swapping.
BUG= 678800
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;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/2743663006
Cr-Commit-Position: refs/heads/master@{#458664}
Committed: https://chromium.googlesource.com/chromium/src/+/456e9b8f3bf0301b3d026953f6d23d1d626a07e6
Total comments: 6
Total comments: 1
Total comments: 7
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+564 lines, -109 lines) |
Patch |
 |
M |
cc/output/direct_renderer.h
|
View
|
1
2
3
4
5
6
7
|
2 chunks |
+9 lines, -2 lines |
0 comments
|
Download
|
 |
M |
cc/output/direct_renderer.cc
|
View
|
1
2
3
4
5
6
7
|
6 chunks |
+28 lines, -4 lines |
0 comments
|
Download
|
 |
M |
cc/output/gl_renderer.h
|
View
|
1
2
3
4
5
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/output/gl_renderer.cc
|
View
|
1
2
3
4
5
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/output/gl_renderer_unittest.cc
|
View
|
1
2
3
4
5
|
5 chunks |
+107 lines, -6 lines |
0 comments
|
Download
|
 |
M |
cc/output/output_surface.h
|
View
|
1
2
3
4
5
6
7
8
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
cc/output/software_renderer.h
|
View
|
1
2
3
4
5
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
cc/output/software_renderer.cc
|
View
|
1
2
3
4
5
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
cc/test/test_web_graphics_context_3d.h
|
View
|
|
1 chunk |
+2 lines, -2 lines |
0 comments
|
Download
|
 |
M |
gpu/GLES2/gl2chromium_autogen.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/build_gles2_cmd_buffer.py
|
View
|
|
1 chunk |
+4 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_c_lib_autogen.h
|
View
|
|
2 chunks |
+7 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_cmd_helper_autogen.h
|
View
|
|
1 chunk |
+8 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_implementation_autogen.h
|
View
|
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_implementation_impl_autogen.h
|
View
|
|
1 chunk |
+8 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
|
View
|
|
1 chunk |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_interface_autogen.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_interface_stub_autogen.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_trace_implementation_autogen.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
|
View
|
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/cmd_buffer_functions.txt
|
View
|
|
1 chunk |
+3 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/common/capabilities.h
|
View
|
1
2
3
4
5
6
7
8
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/common/gles2_cmd_format_autogen.h
|
View
|
|
1 chunk |
+33 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
|
View
|
|
1 chunk |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/common/gles2_cmd_ids_autogen.h
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/service/gles2_cmd_decoder.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
7 chunks |
+26 lines, -8 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/service/gles2_cmd_decoder_autogen.h
|
View
|
|
1 chunk |
+11 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+6 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc
|
View
|
|
1 chunk |
+14 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/command_buffer/service/gles2_cmd_decoder_unittest_4_autogen.h
|
View
|
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
 |
M |
gpu/ipc/common/gpu_command_buffer_traits_multi.h
|
View
|
1
2
3
4
5
6
7
8
9
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
gpu/ipc/service/direct_composition_surface_win.h
|
View
|
1
2
3
4
5
6
7
8
9
|
4 chunks |
+13 lines, -2 lines |
0 comments
|
Download
|
 |
M |
gpu/ipc/service/direct_composition_surface_win.cc
|
View
|
1
2
3
4
5
6
7
8
9
|
9 chunks |
+110 lines, -41 lines |
0 comments
|
Download
|
 |
M |
gpu/ipc/service/direct_composition_surface_win_unittest.cc
|
View
|
1
2
3
4
5
|
4 chunks |
+95 lines, -32 lines |
0 comments
|
Download
|
 |
M |
ui/gl/gl_surface.h
|
View
|
|
3 chunks |
+5 lines, -2 lines |
0 comments
|
Download
|
 |
M |
ui/gl/gl_surface.cc
|
View
|
|
4 chunks |
+12 lines, -3 lines |
0 comments
|
Download
|
 |
M |
ui/gl/gl_surface_stub.h
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
ui/gl/gl_surface_stub.cc
|
View
|
|
1 chunk |
+1 line, -1 line |
0 comments
|
Download
|
Dependent Patchsets:
Total messages: 66 (49 generated)
|