New issue
Advanced search Search tips

Issue 757605 link

Starred by 14 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Feature


Sign in to add a comment

Ship raster in gpu process

Project Member Reported by enne@chromium.org, Aug 21 2017

Issue description

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#
 

Comment 1 by enne@chromium.org, Aug 21 2017

Labels: Pri-1 Type-Feature

Comment 2 by enne@chromium.org, Aug 21 2017

Blockedon: 757607

Comment 3 by enne@chromium.org, Aug 21 2017

Blockedon: 757610

Comment 4 by enne@chromium.org, Aug 23 2017

Blockedon: 758350
Project Member

Comment 5 by bugdroid1@chromium.org, Aug 28 2017

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

Comment 6 by enne@chromium.org, Aug 29 2017

Blockedon: 760357

Comment 7 by xing...@intel.com, Sep 21 2017

Cc: xing...@intel.com

Comment 8 by enne@chromium.org, Oct 23 2017

Blockedon: 777622

Comment 9 by enne@chromium.org, Oct 23 2017

Blockedon: 737629
Components: Internals>Compositing

Comment 11 by enne@chromium.org, Nov 14 2017

Blockedon: 785008

Comment 12 by enne@chromium.org, Nov 15 2017

Blockedon: 785434

Comment 13 by enne@chromium.org, Nov 17 2017

Blockedon: 786582

Comment 14 by enne@chromium.org, Nov 17 2017

Blockedon: 781800
Blockedon: 793508
Blocking: 803573

Comment 17 by enne@chromium.org, Jan 19 2018

Blockedon: 803924

Comment 18 by enne@chromium.org, Jan 19 2018

Blockedon: 803925

Comment 19 by enne@chromium.org, Jan 24 2018

Blockedon: 805688

Comment 20 by enne@chromium.org, Jan 25 2018

Blockedon: 805746

Comment 21 by enne@chromium.org, Jan 25 2018

Blockedon: 806014

Comment 22 by enne@chromium.org, Feb 8 2018

Blockedon: 810470
Blocking: 586885

Comment 24 by enne@chromium.org, Apr 5 2018

Blockedon: 816571

Comment 25 by enne@chromium.org, Apr 5 2018

Blockedon: 821584

Comment 26 by enne@chromium.org, Apr 5 2018

Blockedon: 829614

Comment 27 by enne@chromium.org, Apr 5 2018

Blockedon: 829622

Comment 28 by enne@chromium.org, Apr 6 2018

Blockedon: 815022

Comment 29 by enne@chromium.org, May 8 2018

Blockedon: 840559

Comment 30 by enne@chromium.org, May 18 2018

Blockedon: 844207

Comment 31 by enne@chromium.org, May 21 2018

Blockedon: 845292

Comment 32 by enne@chromium.org, May 30 2018

Blockedon: 847684
Project Member

Comment 33 by bugdroid1@chromium.org, Jun 29 2018

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

Project Member

Comment 34 by bugdroid1@chromium.org, Jul 10

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.
Project Member

Comment 37 by bugdroid1@chromium.org, Aug 13

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

Project Member

Comment 38 by bugdroid1@chromium.org, Aug 16

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

Project Member

Comment 39 by bugdroid1@chromium.org, Aug 22

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

Blocking: 898268

Sign in to add a comment