Meta-bug for turning on "raster in the gpu process", aka transporting PaintOpBuffers to the gpu process and doing raster there. Design doc: https://docs.google.com/document/d/1vsJsk1zGSagxxBggd8j5G9u0rMzD1NTaQWgEbUabEvY/edit#
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/436a77572ce1088aff858c11afe43c9198655c46 commit 436a77572ce1088aff858c11afe43c9198655c46 Author: Adrienne Walker <enne@chromium.org> Date: Mon Aug 28 23:33:09 2017 Add out of process gpu raster behind a flag This patch adds a new --enable-oop-rasterization command line flag. When enabled, it turns on a chromium_raster_transport gl extension and makes all renderers that would have gone through the gpu raster path instead do gpu raster in the gpu process by serializing/deserializing recordings and rastering them there. This is not ready to be turned on for both security and functionality purposes by any means. Without this flag, the command buffer ignores these new raster commands, so this should be safe to land behind a flag. As an initial approach, the raster is driven identically to gpu raster in the renderer. There's one raster thread. The renderer decides what to raster, adds decoding jobs, and then for one particular tile, all the recorded paint commands for that tile are serialized and then executed in the gpu process gles2 command decoder. TBR=thakis@chromium.org Bug: 757605 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 Change-Id: I4d01d266bf5a7236d79a4e003c5fa8921e7826f8 Reviewed-on: https://chromium-review.googlesource.com/514505 Commit-Queue: enne <enne@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Achuith Bhandarkar <achuith@chromium.org> Reviewed-by: Vladimir Levin <vmpstr@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Cr-Commit-Position: refs/heads/master@{#497934} [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/paint/display_item_list.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/paint/paint_op_reader.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/raster/gpu_raster_buffer_provider.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/raster/gpu_raster_buffer_provider.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/raster/raster_buffer_provider_perftest.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/raster/raster_buffer_provider_unittest.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/raster/raster_source.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/resources/resource_provider.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/resources/resource_provider.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/test/layer_tree_pixel_resource_test.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/trees/layer_tree_host_impl.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/cc/trees/layer_tree_settings.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/chrome/browser/chromeos/login/chrome_restart_request.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/content/browser/gpu/gpu_process_host.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/content/browser/renderer_host/render_process_host_impl.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/content/renderer/gpu/render_widget_compositor.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/content/renderer/render_thread_impl.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/GLES2/gl2chromium_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/build_gles2_cmd_buffer.py [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/BUILD.gn [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/DEPS [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_c_lib_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_cmd_helper_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_implementation.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_implementation_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_implementation_impl_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_implementation_unittest_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_interface.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_interface_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_interface_stub_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_trace_implementation_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/cmd_buffer_functions.txt [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/common/gles2_cmd_format_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/common/gles2_cmd_ids_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/common/gles2_cmd_utils.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/common/gles2_cmd_utils.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/BUILD.gn [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/DEPS [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/feature_info.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/feature_info.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder_autogen.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers_autogen.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/command_buffer/service/gles2_cmd_decoder_unittest_extensions.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/config/gpu_switches.cc [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/config/gpu_switches.h [modify] https://crrev.com/436a77572ce1088aff858c11afe43c9198655c46/gpu/ipc/common/gpu_command_buffer_traits_multi.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d82c4fabc5cc6cbe6b475186ed9fa0216980e533 commit d82c4fabc5cc6cbe6b475186ed9fa0216980e533 Author: Adrienne Walker <enne@chromium.org> Date: Fri Jun 29 22:55:43 2018 Turn on OOP Raster on android bots This still has one known perf issue (frame time / input latency jank), but this is due to long shader compilation causing delayed display compositing. However, no short term solution will fix bots that clobber the shader cache between every run, and so smoothness tests will regress cold start no matter what we do in the short term even if this is not what most users will see. Therefore, it seems like this is ready to turn on for the bots and flush out any unknown issues that we haven't found yet. Bug: 757605 Change-Id: I29249946e1b91d890b9ee677b4941dd8b8507abd Reviewed-on: https://chromium-review.googlesource.com/1117275 Reviewed-by: Ilya Sherman <isherman@chromium.org> Commit-Queue: enne <enne@chromium.org> Cr-Commit-Position: refs/heads/master@{#571694} [modify] https://crrev.com/d82c4fabc5cc6cbe6b475186ed9fa0216980e533/testing/variations/fieldtrial_testing_config.json
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ee6bf43facb83b3a32d815e5ca66a078931e06fe commit ee6bf43facb83b3a32d815e5ca66a078931e06fe Author: Khushal <khushalsagar@chromium.org> Date: Tue Jul 10 01:46:11 2018 cc: Only analyze necessary ops in PaintOpBufferSerializer. Currently during serialization we playback all ops through the analysis canvas. Restrict that to only what is necessary, i.e., the ops which affect the transform/clip state on the canvas and DrawTextBlobOps. R=enne@chromium.org Bug: 757605 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ia351f951cfae3e7b8be1aa056057269d7ca578c0 Reviewed-on: https://chromium-review.googlesource.com/1121782 Reviewed-by: enne <enne@chromium.org> Commit-Queue: Khushal <khushalsagar@chromium.org> Cr-Commit-Position: refs/heads/master@{#573590} [modify] https://crrev.com/ee6bf43facb83b3a32d815e5ca66a078931e06fe/cc/paint/paint_op_buffer_serializer.cc
This has been enabled at 50% canary starting with version 69.0.3488.2. \o/
Now at 50% for dev channel.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a892f2822a47a53f71adf5e9fe95e9148855fa0e commit a892f2822a47a53f71adf5e9fe95e9148855fa0e Author: Adrienne Walker <enne@chromium.org> Date: Mon Aug 13 20:02:07 2018 Turn on OOP Raster on chromeos bots Bug: 757605 Change-Id: I371ecafedd86627065ca698bfb33d6db54b6c1c6 Reviewed-on: https://chromium-review.googlesource.com/1169958 Commit-Queue: enne <enne@chromium.org> Reviewed-by: Ilya Sherman <isherman@chromium.org> Reviewed-by: Khushal <khushalsagar@chromium.org> Cr-Commit-Position: refs/heads/master@{#582676} [modify] https://crrev.com/a892f2822a47a53f71adf5e9fe95e9148855fa0e/testing/variations/fieldtrial_testing_config.json
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/11a2b625e274e51b9ed8f59e2f803372d830ccd9 commit 11a2b625e274e51b9ed8f59e2f803372d830ccd9 Author: Adrienne Walker <enne@chromium.org> Date: Thu Aug 16 21:57:20 2018 Forward oop-r flags to renderer for crashes The renderer doesn't use these flags, so this is just a temporary mechanism for crash visibility. Right now there are some number of crashes that are happening on platforms where OOP-R is not turned on (e.g. Windows), and it would be helpful to verify in the short term that OOP-R is being turned on deliberately via a command line flag vs accidentally. These should be removed once OOP-R is shipping by default everywhere. Bug: 757605 Change-Id: Ib5a1a1d49939851b71563762409ac0fc0ba05ede Reviewed-on: https://chromium-review.googlesource.com/1178570 Reviewed-by: Ken Buchanan <kenrb@chromium.org> Commit-Queue: enne <enne@chromium.org> Cr-Commit-Position: refs/heads/master@{#583838} [modify] https://crrev.com/11a2b625e274e51b9ed8f59e2f803372d830ccd9/content/browser/renderer_host/render_process_host_impl.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ee35f329c8e615505326a3b4df9ae4b7764037ae commit ee35f329c8e615505326a3b4df9ae4b7764037ae Author: Adrienne Walker <enne@chromium.org> Date: Wed Aug 22 17:20:38 2018 Turn on OOP Raster on mac bots Bug: 757605 Change-Id: I0fa269386a04ca91e58dfdfb47c7a047de8b0754 Reviewed-on: https://chromium-review.googlesource.com/1184331 Reviewed-by: Ilya Sherman <isherman@chromium.org> Commit-Queue: enne <enne@chromium.org> Cr-Commit-Position: refs/heads/master@{#585121} [modify] https://crrev.com/ee35f329c8e615505326a3b4df9ae4b7764037ae/testing/variations/fieldtrial_testing_config.json
Comment 1 by enne@chromium.org
, Aug 21 2017