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

Issue 772574 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocking:
issue 769423
issue 776613



Sign in to add a comment

Compositor clients don't know what compositing mode to expect

Project Member Reported by danakj@chromium.org, Oct 6 2017

Issue description

The renderer compositor can run in Gpu or software mode. As can the display compositor. Normally these should match, but we have vague or no real synchronization between these two. If a GpuChannel can't be made, then they will agree and both fall back to software. If one process manages to make a context but the other doesn't, they'll disagree. The browser tries 4 times to make a GpuChannel, the renderer tries once.

Then if a context is made:
- It might be for swiftshader, in which case the compositor will not use gpu.
- The compositor might not use it anyway if --disable-gpu-compositing was passed from the browser at renderer startup.

If a context was not made:
- The compositor will fall back to software. But other clients could potentially make a context successfully afterward and be unable to tell that they're now doing the wrong thing. Or the right thing, but the renderer's doing the wrong thing.

We need some global coordination so that all processes and clients agree.

https://chromium-review.googlesource.com/c/chromium/src/+/703979 took a first stab at this in the renderer process before diving further into the problem between the display compositor and the renderer process. In that, we made RenderThreadImpl report Gpu/Software compositing mode, and required you to hold a context to know, so we could lose the context if it changed.

But there's some problems here:
- If any context failed to be made, clients would then assume software compositing. So we needed to actually use software compositing, and drop any other contexts.
- That's esp bad if they failed to make a context with some options but could succeed with other options!
- No synchronization with the browser ui/display.
- Very aggressive fallback to software, on any failure at all recreating the compositor context. This relates to sync with the display, but we could easily end up in software compositing for no real good reason.


If all cc clients that submit resources instead used CompositorFrameSink and submitted there instead, we could move the problem of clients to be a more similar problem to that of the cc compositors, but I don't think this actually makes much easier to solve.


What we want is that when RenderThreadImpl returns a context, it knows if the client should be producing compositor frames in gpu or software resources. This requires a round trip to the display compositor at least once, doing it on every time a client makes a context would be sad, so I don't think we want to tie this to any interface that each client would have (like CompositorFrameSink or something).

We can make a global service CompositingModeWatcher that RenderThreadImpl listens to. The implementation would be connected to the viz::Display to know what mode it's using. When clients ask RenderThreadImpl for a context they would  also find out the mode. They can also observe the RenderThreadImpl to hear about mode changes. Then we can change the mode without losing the GL contexts in the process needlessly for things that don't care.

Few problems to solve here:
- There's a race with clients to ask for a context and RenderThreadImpl knowing what mode to report. We don't want to just guess GPU mode, cuz clients can do all sorts of stuff based on that knowledge and would lose state when it changed (or do big workarounds to preserve state o no). If we put the CompositingModeWatcher on the IO thread, then RenderThreadImpl can use a WaitableEvent to block until it hears a mode come the first time. Future mode changes would be posted from the IO to the main thread and signaled to listeners.

- cc can be signaled through the LayerTreeFrameSink, but would need a pointer to it and post to the compositor thread to let it know. We could lose the compositor context, but would that impact other contexts? It's in a share group with the compositor worker context (not a problem) and not with others, but I'm not sure?

- We want clients to be strongly encouraged to watch this mode in the code. We can make sure they are watching by asking for a watcher/observer client when making a context.

Others?
 
Some code pointers for future me.

FrameSinkProvider is another top level mojom interface, but it has an impl per renderer process, which we don't want so we'll make a sibling interface. https://cs.chromium.org/chromium/src/content/common/frame_sink_provider.mojom

GetConnector()->BindInterface() is used to find the top level connection to the display compositor. We'll have to invent another name for this one. https://cs.chromium.org/chromium/src/content/renderer/render_thread_impl.cc?rcl=a35b634e9a117eb3683208fbb8d0b242332fa8b2&l=956

RenderThreadImpl::GetIOTaskRunner() goes to the IO thread. We'll have to post there from Init to set up the mojo interface with BindInterface() there, and have a callback that runs there when it hears from the watcher interface.
Blocking: 769423

Comment 3 by piman@chromium.org, Oct 7 2017

> We could lose the compositor context, but would that impact other contexts? It's in a share group with the compositor worker context (not a problem) and not with others, but I'm not sure?

Actually the worker context is in another share group now, so that we can schedule it independently. In the renderer, I believe we are in a place where all contexts are in a separate share group (we only exchange resources via mailboxes): RTI::CreateOffscreenContext (used for SharedMainThread for canvas, SharedCompositorWorker, and Media) always passes a null share group, the compositor context uses null if IsAsyncWorkerContextEnabled() (which is true by default), WebGL uses RendererBlinkPlatformImpl::CreateOffscreenGraphicsContext3DProvider, but currently always passes null for the share context (and will not ever pass the compositor one, it would pass another WebGL context there), and pepper uses PPB_Graphics3D_Impl::InitRaw which only passes a share context that is another pepper context (or null).

Comment 4 by zmo@chromium.org, Oct 7 2017

Data: I am refactoring blacklist decisions and move them from browser process to GPU process (to get rid of flakiness).

You can access GpuFeatureInfo from GpuChannelHost and ContextProvider in renderer process. It's sent from GPU process to renderer process.

I haven't hooked up compositing decision to GPU side yet, but it's my next task so it should just be a day or two.

You no longer need to care about SwiftShader software rendering or not. The GpuFeatureInfo returned from GPU process already take care of that.

So globally you will need to check --disable-gpu-compositing and GpuFeatureInfo, one is from browser process (commandline switches users pass in), the latter is from GPU process (blacklist decisions).

You need to honor the negative decision. However, if it says enabled, it can still fail to create a context due to various local reasons.

Comment 5 by zmo@chromium.org, Oct 7 2017

Sorry, not Data, Dana.
Cc: kylec...@chromium.org

Comment 7 by danakj@chromium.org, Oct 10 2017

> You can access GpuFeatureInfo from GpuChannelHost and ContextProvider in renderer process. It's sent from GPU process to renderer process.
> 
> I haven't hooked up compositing decision to GPU side yet, but it's my next task so it should just be a day or two.

The compositor needs to fall back to software compositing if the context fails to recreate after a few tries. This decision is currently distributed between the browser and renderer, would you have this decision happen in the gpu process?

The kNumRetriesBeforeSoftwareFallback var controls the behaviour in the browser process today. https://cs.chromium.org/chromium/src/content/browser/compositor/gpu_process_transport_factory.cc?rcl=b8f4729f10179523ae8b1979803bed234ab8d284&l=111

Whereas the renderer falls back after one failure. I don't think the browser's decision is communicated to the gpu process right now.

Will the gpu process keep track instead of context losses/failures and tell everything to software composite?

Thanks for helping make this more centralized!

Comment 8 by danakj@chromium.org, Oct 11 2017

https://chromium-review.googlesource.com/c/chromium/src/+/714365 has a mojo interface connected from the viz process (browser atm) to renderer to tell it about the compositing mode as described above, happening on the renderer IO thread and the browser UI thread.

I need to hook it up to make it do something on both ends of the system though still.

I'm not clear about the interaction of the service-side of this with swiftshader knowledge of GpuFeatureInfo in general yet, unless it's just lazy and assume software until some Display tries to make an OutputSurface.

Comment 9 by danakj@chromium.org, Oct 11 2017

>  and assume software until

er.. "assume gpu until"
Project Member

Comment 10 by bugdroid1@chromium.org, Oct 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1c7840a1b003ec921ffd756381c8f1c9b6be3c56

commit 1c7840a1b003ec921ffd756381c8f1c9b6be3c56
Author: danakj <danakj@chromium.org>
Date: Wed Oct 18 02:28:17 2017

Don't destroy GpuChannelHost on error in CommandBufferProxyImpl.

This allows CreateTransferBuffer to succeed still when the context
is lost. That means context loss doesn't look like other fatal errors
with shared memory when setting up a context, allowing us to tell if
we should retry making a context. If CreateTransferBuffer fails, then
we should not retry unambiguously.

R=piman@chromium.org

Bug:  772574 
Cq-Include-Trybots: 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: Ia4c9f75ed40aa0483fed94552d6689b84efc379b
Reviewed-on: https://chromium-review.googlesource.com/720269
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509660}
[modify] https://crrev.com/1c7840a1b003ec921ffd756381c8f1c9b6be3c56/content/browser/gpu/gpu_ipc_browsertests.cc
[modify] https://crrev.com/1c7840a1b003ec921ffd756381c8f1c9b6be3c56/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/1c7840a1b003ec921ffd756381c8f1c9b6be3c56/gpu/ipc/client/command_buffer_proxy_impl.h
[modify] https://crrev.com/1c7840a1b003ec921ffd756381c8f1c9b6be3c56/gpu/ipc/client/gpu_channel_host.cc

Comment 11 by fsamuel@google.com, Oct 18 2017

Cc: fsam...@chromium.org
Project Member

Comment 12 by bugdroid1@chromium.org, Oct 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed

commit 45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed
Author: danakj <danakj@chromium.org>
Date: Wed Oct 18 19:31:31 2017

Report fatal vs transient errors when initializing contexts

Currently context creation and initialization reports back just true/false
for if the process succeeded. This expands that information to a tri-state
of success, fatal error, transient error. In the latter case, the client
should retry making the context as it may succeed next time. This happens
when, for instance, another client crashes the gpu process at the same
time the context is being constructed. In the case of a fatal error, the
context can not be made given the current inputs so either the gpu is not
usable, or the client has a bug and is requesting an invalid context of
some sort, but it will not make progress by retrying. So in this case the
client should not retry and just fail back to a non-gpu mode.

This information will allow us to remove the retry count when making the
compositor context for the display compositor, removing the state machine
in that code (as retry becomes a local decision from the result).

TBR=raymes

Bug:  772574 
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: Ic3574de9fccae42ac34ff8a5755d4cfa5f0dd2b0
Reviewed-on: https://chromium-review.googlesource.com/717548
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#509836}
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/android_webview/browser/aw_render_thread_context_provider.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/android_webview/browser/aw_render_thread_context_provider.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/raster/scoped_gpu_raster_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/resources/scoped_resource_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/test/test_context_provider.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/test/test_context_provider.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/test/test_in_process_context_provider.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/test/test_in_process_context_provider.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/tiles/picture_layer_tiling_set_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/trees/layer_tree_frame_sink.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/trees/layer_tree_host_unittest_context.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/cc/trees/layer_tree_host_unittest_copyrequest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/chrome/browser/android/vr_shell/mailbox_to_surface_bridge.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/common/gl_helper_benchmark.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/common/gl_helper_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/common/gpu/context_provider.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/common/gpu/in_process_context_provider.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/common/gpu/in_process_context_provider.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/common/yuv_readback_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/service/display/gl_renderer_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/components/viz/service/display_embedder/gpu_display_provider.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/browser/gpu/gpu_ipc_browsertests.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/browser/renderer_host/compositor_impl_android.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/renderer/pepper/pepper_video_encoder_host.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/renderer/pepper/ppb_graphics_3d_impl.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/content/renderer/webgraphicscontext3d_provider_impl.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/cmd_buffer_helper.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/cmd_buffer_helper.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/gles2_implementation.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/gles2_implementation.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/gles2_implementation_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/transfer_buffer.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/client/transfer_buffer_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/common/BUILD.gn
[add] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/common/context_result.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/context_group.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/context_group.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/context_group_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/feature_info.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/feature_info.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder_mock.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/texture_manager.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/service/texture_manager.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/tests/fuzzer_main.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/tests/gl_manager.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/command_buffer/tests/gl_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/gles2_conform_support/egl/context.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/gles2_conform_support/egl/context.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/client/command_buffer_proxy_impl.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/client/gpu_in_process_context_tests.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/common/gpu_messages.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/common/gpu_param_traits_macros.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/gl_in_process_context.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/gl_in_process_context.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/in_process_command_buffer.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/in_process_command_buffer.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/service/gpu_channel.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/service/gpu_channel.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/service/gpu_channel_manager_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/service/gpu_channel_unittest.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/service/gpu_command_buffer_stub.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/gpu/ipc/service/gpu_command_buffer_stub.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/ppapi/shared_impl/ppb_graphics_3d_shared.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/services/ui/public/cpp/gpu/context_provider_command_buffer.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/services/ui/public/cpp/gpu/context_provider_command_buffer.h
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/ui/aura/mus/mus_context_factory.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/ui/compositor/test/in_process_context_factory.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/ui/compositor/test/in_process_context_provider.cc
[modify] https://crrev.com/45cfd23cbd42aa6f110be7b45ed85fdc7e8d3bed/ui/compositor/test/in_process_context_provider.h

Project Member

Comment 13 by bugdroid1@chromium.org, Oct 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/514516aea3a1d41f6df0ef5b5bc5f15f7113d081

commit 514516aea3a1d41f6df0ef5b5bc5f15f7113d081
Author: danakj <danakj@chromium.org>
Date: Thu Oct 19 20:20:31 2017

Add a LOG(ERROR) message on each Fatal or Transient gpu context error

When a fatal error happens on ChromeOS, we will crash the browser, so
these logs will be present in the crash report which will be important
in case any are wrong or we need to debug a device failure. For other
platforms they will help explain why the compositor drops into software
compositing (or why android aborts and crashes as well).

R=piman@chromium.org

Bug:  772574 
Cq-Include-Trybots: 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: I10fa8230a210df96b29d9d3767c0cd1e8d57a775
Reviewed-on: https://chromium-review.googlesource.com/727190
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510181}
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/command_buffer/client/cmd_buffer_helper.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/command_buffer/client/gles2_implementation.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/command_buffer/service/context_group.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/ipc/in_process_command_buffer.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/ipc/service/gpu_channel.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/gpu/ipc/service/gpu_command_buffer_stub.cc
[modify] https://crrev.com/514516aea3a1d41f6df0ef5b5bc5f15f7113d081/services/ui/public/cpp/gpu/context_provider_command_buffer.cc

Project Member

Comment 14 by bugdroid1@chromium.org, Oct 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8

commit ac7a9346ce571d67ec8f09cffea0333f0ba68fd8
Author: danakj <danakj@chromium.org>
Date: Fri Oct 20 21:08:19 2017

Remove context creation retry counts

If the context fails to be created for a transient reason, then try
again always. If it fails for a fatal reason, then give up always.
On ChromeOS and Android, we will crash as before. On other platforms
we will use software compositing instead.

On Android, remove the flag to ignore gpu process crashes, but when
a context is initialized report that to the GpuProcessHost. This way
crashes/transient errors will still stop running the Gpu process
eventually, but if a context is created, the Gpu process is assumed
to be functioning correctly (for now).

R=piman@chromium.org

Bug:  772574 
Change-Id: I7d8a15b5508e1892bd060d6c8aa5916e8c4857ab
Reviewed-on: https://chromium-review.googlesource.com/726961
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Bo <boliu@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510560}
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/android/content_startup_flags.cc
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/gpu/gpu_process_host.cc
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/gpu/gpu_process_host.h
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/renderer_host/compositor_impl_android.cc
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/browser/renderer_host/compositor_impl_android.h
[modify] https://crrev.com/ac7a9346ce571d67ec8f09cffea0333f0ba68fd8/content/public/common/content_switches.cc

Project Member

Comment 15 by bugdroid1@chromium.org, Oct 27 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07

commit 33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07
Author: danakj <danakj@chromium.org>
Date: Fri Oct 27 23:32:13 2017

Introduce CompostingModeWatcher interface for global coordination.

Makes a CompositingModeReporter mojo API that is implemented in the viz
process (which is the browser in this CL). The API allows registering a
CompositingModeWatcher which hears about compositing mode fallback from
gpu to software.

Tracks the compositing mode in GpuProcessTransportFactory and ensures
that decisions to use software compositing are sticky and global. Gives
the current compositing state to new renderers on the command line.
Tracks the compositing mode in RenderThreadImpl, based on the command
line and from being a CompositingModeWatcher, and ensures that the
compositing mode there is also sticky and global.

Exposes the real compositing mode to blink via the Platform API instead
of just exposing the state at startup (ie the command line flag).

No longer tries to fall back to software compositing in the renderer
process as a local decision. Tries gpu compositing indefinitely until
hearing otherwise from being a CompositingModeWatcher.

Bug:  772574 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I1801010d1659135e815ca24960651e0f87d70c1c
Reviewed-on: https://chromium-review.googlesource.com/714365
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512347}
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/cc/trees/layer_tree_host.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/components/viz/service/BUILD.gn
[add] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/components/viz/service/display_embedder/compositing_mode_reporter_impl.cc
[add] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/components/viz/service/display_embedder/compositing_mode_reporter_impl.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/BUILD.gn
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/browser_main_loop.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/browser_main_loop.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/image_transport_factory.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/test/no_transport_image_transport_factory.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/test/no_transport_image_transport_factory.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/compositor/viz_process_transport_factory.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/gpu/render_widget_compositor.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/gpu/render_widget_compositor_delegate.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/gpu/render_widget_compositor_unittest.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/render_thread_impl.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/render_widget.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/content/renderer/render_widget.h
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/services/ui/public/cpp/gpu/gpu.cc
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/services/viz/public/interfaces/BUILD.gn
[add] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/services/viz/public/interfaces/compositing/compositing_mode_watcher.mojom
[modify] https://crrev.com/33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07/third_party/WebKit/public/platform/WebGraphicsContext3DProvider.h

Project Member

Comment 16 by bugdroid1@chromium.org, Oct 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb

commit e7d9e173258d7a04965d1bdd62e64e0ff70c69cb
Author: Abdul Syed <abdulsyed@google.com>
Date: Mon Oct 30 23:10:30 2017

Revert "Introduce CompostingModeWatcher interface for global coordination."

This reverts commit 33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07.

Reason for revert: This is causing an issue with crashes, crbug/779437, and causing the #1 renderer crash in Canary. 

[Assert] ui::Gpu::EstablishGpuChannelSync

Confirmed with kenrb@ and it's okay to revert this. 

Original change's description:
> Introduce CompostingModeWatcher interface for global coordination.
> 
> Makes a CompositingModeReporter mojo API that is implemented in the viz
> process (which is the browser in this CL). The API allows registering a
> CompositingModeWatcher which hears about compositing mode fallback from
> gpu to software.
> 
> Tracks the compositing mode in GpuProcessTransportFactory and ensures
> that decisions to use software compositing are sticky and global. Gives
> the current compositing state to new renderers on the command line.
> Tracks the compositing mode in RenderThreadImpl, based on the command
> line and from being a CompositingModeWatcher, and ensures that the
> compositing mode there is also sticky and global.
> 
> Exposes the real compositing mode to blink via the Platform API instead
> of just exposing the state at startup (ie the command line flag).
> 
> No longer tries to fall back to software compositing in the renderer
> process as a local decision. Tries gpu compositing indefinitely until
> hearing otherwise from being a CompositingModeWatcher.
> 
> Bug:  772574 
> Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
> Change-Id: I1801010d1659135e815ca24960651e0f87d70c1c
> Reviewed-on: https://chromium-review.googlesource.com/714365
> Commit-Queue: danakj <danakj@chromium.org>
> Reviewed-by: Philip Rogers <pdr@chromium.org>
> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
> Reviewed-by: Ken Buchanan <kenrb@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#512347}

TBR=sadrul@chromium.org,danakj@chromium.org,kenrb@chromium.org,boliu@chromium.org,pdr@chromium.org,piman@chromium.org
NOTRY=true

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  772574 
Change-Id: Ie43594c265a196e0e354d90c1a7eca0e1ed50870
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Reviewed-on: https://chromium-review.googlesource.com/744881
Reviewed-by: Bo <boliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512664}
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/cc/trees/layer_tree_host.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/components/viz/service/BUILD.gn
[delete] https://crrev.com/313b20adbdc665590fee16d386ed1c0a8303aa63/components/viz/service/display_embedder/compositing_mode_reporter_impl.cc
[delete] https://crrev.com/313b20adbdc665590fee16d386ed1c0a8303aa63/components/viz/service/display_embedder/compositing_mode_reporter_impl.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/BUILD.gn
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/browser_main_loop.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/browser_main_loop.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/image_transport_factory.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/test/no_transport_image_transport_factory.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/test/no_transport_image_transport_factory.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/compositor/viz_process_transport_factory.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/gpu/render_widget_compositor.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/gpu/render_widget_compositor_delegate.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/gpu/render_widget_compositor_unittest.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/render_thread_impl.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/render_widget.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/content/renderer/render_widget.h
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/services/ui/public/cpp/gpu/gpu.cc
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/services/viz/public/interfaces/BUILD.gn
[delete] https://crrev.com/313b20adbdc665590fee16d386ed1c0a8303aa63/services/viz/public/interfaces/compositing/compositing_mode_watcher.mojom
[modify] https://crrev.com/e7d9e173258d7a04965d1bdd62e64e0ff70c69cb/third_party/WebKit/public/platform/WebGraphicsContext3DProvider.h

Project Member

Comment 17 by bugdroid1@chromium.org, Oct 30 2017

Labels: merge-merged-3253
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/326ed263576e77fff03549921829c174201bf0d2

commit 326ed263576e77fff03549921829c174201bf0d2
Author: Abdul Syed <abdulsyed@google.com>
Date: Mon Oct 30 23:56:32 2017

Revert "Introduce CompostingModeWatcher interface for global coordination."

This reverts commit 33bb6c6ac24c6054a6f36f31a0fc3234fbc93c07.

Reason for revert: This is causing an issue with crashes, crbug/779437, and causing the #1 renderer crash in Canary. 

[Assert] ui::Gpu::EstablishGpuChannelSync

Confirmed with kenrb@ and it's okay to revert this. 

Original change's description:
> Introduce CompostingModeWatcher interface for global coordination.
> 
> Makes a CompositingModeReporter mojo API that is implemented in the viz
> process (which is the browser in this CL). The API allows registering a
> CompositingModeWatcher which hears about compositing mode fallback from
> gpu to software.
> 
> Tracks the compositing mode in GpuProcessTransportFactory and ensures
> that decisions to use software compositing are sticky and global. Gives
> the current compositing state to new renderers on the command line.
> Tracks the compositing mode in RenderThreadImpl, based on the command
> line and from being a CompositingModeWatcher, and ensures that the
> compositing mode there is also sticky and global.
> 
> Exposes the real compositing mode to blink via the Platform API instead
> of just exposing the state at startup (ie the command line flag).
> 
> No longer tries to fall back to software compositing in the renderer
> process as a local decision. Tries gpu compositing indefinitely until
> hearing otherwise from being a CompositingModeWatcher.
> 
> Bug:  772574 
> Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
> Change-Id: I1801010d1659135e815ca24960651e0f87d70c1c
> Reviewed-on: https://chromium-review.googlesource.com/714365
> Commit-Queue: danakj <danakj@chromium.org>
> Reviewed-by: Philip Rogers <pdr@chromium.org>
> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
> Reviewed-by: Ken Buchanan <kenrb@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#512347}

TBR=sadrul@chromium.org,danakj@chromium.org,kenrb@chromium.org,boliu@chromium.org,pdr@chromium.org,piman@chromium.org
NOTRY=true

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  772574 
Change-Id: Ie43594c265a196e0e354d90c1a7eca0e1ed50870
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Reviewed-on: https://chromium-review.googlesource.com/744881
Reviewed-by: Bo <boliu@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#512664}(cherry picked from commit e7d9e173258d7a04965d1bdd62e64e0ff70c69cb)
Reviewed-on: https://chromium-review.googlesource.com/744961
Commit-Queue: Abdul Syed <abdulsyed@google.com>
Reviewed-by: Michael Moss <mmoss@chromium.org>
Reviewed-by: Abdul Syed <abdulsyed@google.com>
Cr-Commit-Position: refs/branch-heads/3253@{#4}
Cr-Branched-From: 3163a676b23fd74bf3d1c5c13a1141d26d8dd6aa-refs/heads/master@{#512377}
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/cc/trees/layer_tree_host.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/components/viz/service/BUILD.gn
[delete] https://crrev.com/2740750c04017788ef6f630022a3ee58aa0645c2/components/viz/service/display_embedder/compositing_mode_reporter_impl.cc
[delete] https://crrev.com/2740750c04017788ef6f630022a3ee58aa0645c2/components/viz/service/display_embedder/compositing_mode_reporter_impl.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/BUILD.gn
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/browser_main_loop.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/browser_main_loop.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/image_transport_factory.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/test/no_transport_image_transport_factory.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/test/no_transport_image_transport_factory.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/compositor/viz_process_transport_factory.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/gpu/render_widget_compositor.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/gpu/render_widget_compositor_delegate.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/gpu/render_widget_compositor_unittest.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/render_thread_impl.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/render_widget.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/content/renderer/render_widget.h
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/services/ui/public/cpp/gpu/gpu.cc
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/services/viz/public/interfaces/BUILD.gn
[delete] https://crrev.com/2740750c04017788ef6f630022a3ee58aa0645c2/services/viz/public/interfaces/compositing/compositing_mode_watcher.mojom
[modify] https://crrev.com/326ed263576e77fff03549921829c174201bf0d2/third_party/WebKit/public/platform/WebGraphicsContext3DProvider.h

Project Member

Comment 18 by bugdroid1@chromium.org, Oct 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f

commit ab9ef4d2c5eb7a84463bfe503854d6450d0be72f
Author: danakj <danakj@chromium.org>
Date: Tue Oct 31 23:38:33 2017

Introduce CompostingModeWatcher interface for global coordination.

Makes a CompositingModeReporter mojo API that is implemented in the viz
process (which is the browser in this CL). The API allows registering a
CompositingModeWatcher which hears about compositing mode fallback from
gpu to software.

Tracks the compositing mode in GpuProcessTransportFactory and ensures
that decisions to use software compositing are sticky and global. Gives
the current compositing state to new renderers on the command line.
Tracks the compositing mode in RenderThreadImpl, based on the command
line and from being a CompositingModeWatcher, and ensures that the
compositing mode there is also sticky and global.

Exposes the real compositing mode to blink via the Platform API instead
of just exposing the state at startup (ie the command line flag).

No longer tries to fall back to software compositing in the renderer
process as a local decision. Tries gpu compositing indefinitely until
hearing otherwise from being a CompositingModeWatcher.

Reland of https://chromium-review.googlesource.com/c/chromium/src/+/714365

In that version, the renderer would crash with LOG(FATAL) if it could
not connect to the browser process RenderProcessHostImpl to make a gpu
channel. This causes a lot of test and canary crash reports, as the
browser side seems to disappear before the renderer does. So instead
report back to the caller if the channel failed because of a connection
error. And in that case since the browser side is gone, don't bother to
retry making a compositor context at all, and just await the renderer's
apocalypse.

R=boliu@chromium.org, kenrb@chromium.org, pdr@chromium.org, piman@chromium.org, sadrul@chromium.org
TBR=boliu@chromium.org, kenrb@chromium.org, pdr@chromium.org

Bug:  772574 
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: I2305c8bf83afeadb057e8ee4f4401bf0518a77e5
Reviewed-on: https://chromium-review.googlesource.com/747382
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513003}
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/cc/trees/layer_tree_host.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/components/viz/service/BUILD.gn
[add] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/components/viz/service/display_embedder/compositing_mode_reporter_impl.cc
[add] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/components/viz/service/display_embedder/compositing_mode_reporter_impl.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/BUILD.gn
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/browser_main_loop.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/browser_main_loop.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/image_transport_factory.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/test/no_transport_image_transport_factory.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/test/no_transport_image_transport_factory.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/compositor/viz_process_transport_factory.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/gpu/browser_gpu_channel_host_factory.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/gpu/browser_gpu_channel_host_factory.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/gpu/gpu_ipc_browsertests.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/gpu/render_widget_compositor.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/gpu/render_widget_compositor_delegate.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/gpu/render_widget_compositor_unittest.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/render_thread_impl.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/render_widget.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/content/renderer/render_widget.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/gpu/ipc/client/gpu_channel_host.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/services/ui/public/cpp/gpu/gpu.cc
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/services/ui/public/cpp/gpu/gpu.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/services/viz/public/interfaces/BUILD.gn
[add] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/services/viz/public/interfaces/compositing/compositing_mode_watcher.mojom
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/third_party/WebKit/public/platform/WebGraphicsContext3DProvider.h
[modify] https://crrev.com/ab9ef4d2c5eb7a84463bfe503854d6450d0be72f/ui/aura/mus/mus_context_factory.cc

Project Member

Comment 19 by bugdroid1@chromium.org, Nov 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/954b09b86770e83a139bcd719fcf3be1b32f5fb0

commit 954b09b86770e83a139bcd719fcf3be1b32f5fb0
Author: danakj <danakj@chromium.org>
Date: Thu Nov 02 17:56:47 2017

Offscreen canvas: Query if gpu compositing is enabled on the main thread

Currently offscreen canvas only looks at the command line so it checks
this on the worker thread. We'd like it to ask RenderThreadImpl for the
correct compositing mode, and re-ask any time its context is lost (if
the answer was that gpu compositing is enabled).

So we add SharedGpuContext::IsGpuCompositingEnabled() which thread hops
to the main thread (and optimistically makes a context there if it is
enabled) to ask RenderThreadImpl.

Tests are updated to have the test factory report if software
compositing is being used, as the hop to the main thread would do.

Removes use of std::function as well, replacing it with WTF::Function
as per the chromium c++ style guide.

R=junov@chromium.org, piman@chromium.org
TBR=pdr

Bug:  772574 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;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: I5b27f6b6830e37140d22457f9bd69a62a452515a
Reviewed-on: https://chromium-review.googlesource.com/742521
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513547}
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/content/renderer/renderer_blink_platform_impl.h
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContextHost.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContextHost.h
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/core/offscreencanvas/OffscreenCanvas.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/core/offscreencanvas/OffscreenCanvas.h
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/core/paint/HTMLCanvasPainterTest.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DTest.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/modules/canvas/offscreencanvas/OffscreenCanvasTest.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/modules/canvas/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcher.h
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImpl.h
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/OffscreenCanvasFrameDispatcherImplTest.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContext.h
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/Source/platform/graphics/gpu/SharedGpuContextTest.cpp
[modify] https://crrev.com/954b09b86770e83a139bcd719fcf3be1b32f5fb0/third_party/WebKit/public/platform/Platform.h

Project Member

Comment 20 by bugdroid1@chromium.org, Nov 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/69c6f9eb975ad705ad796948953b4c674a60f6f4

commit 69c6f9eb975ad705ad796948953b4c674a60f6f4
Author: danakj <danakj@chromium.org>
Date: Fri Nov 03 01:44:55 2017

Use the correct compositing mode in WebGL and Canvas2D.

This queries from RenderThreadImpl (via blink::Platform) for the
compositing mode (either gpu or software) whenever it makes a context.
This prevents race conditions as the context will be lost if the mode
changes, at which point it will ask for the mode again.

Previously it looked at the context |software_rendering| which is
usually the same answer, but the display compositor may fall out of
gpu compositing mode for other reasons, at which point the renderer
compositor does too, and both expect resources to be sent as software
bitmaps at that point.

The code no longer checks |software_rendering| since that data is not
relevant to its decisions anymore, based on the invariant that gpu
compositing is never used with |software_rendering| (unless with
--use-gl=swiftshader in which case it is hidden from chrome and we
should not act based on it).

This is the last pieces split off from https://chromium-review.googlesource.com/c/chromium/src/+/703979
that are specific to canvas and webgl.

R=junov@chromium.org, kbr@chromium.org

Bug:  772574 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;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: Ie7375464bb291c057a55006d379e032dcc2aaace
Reviewed-on: https://chromium-review.googlesource.com/751406
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513654}
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContext.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContext.h
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGLRenderingContext.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGLRenderingContext.h
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
[modify] https://crrev.com/69c6f9eb975ad705ad796948953b4c674a60f6f4/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTestHelpers.h

Project Member

Comment 21 by bugdroid1@chromium.org, Nov 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/192d25d460b7021ca952b6e3f596d43ff2f69040

commit 192d25d460b7021ca952b6e3f596d43ff2f69040
Author: danakj <danakj@chromium.org>
Date: Fri Nov 03 16:30:28 2017

Cleanup gpu webprefs.

GpuProcessHost::gpu_enabled() is not needed, each of those web prefs
is read and compared with the blacklist from the gpu process, so we
can't use them without a GpuChannelHost anyway.

The canvas2d uses acceleration if gpu compositing is enabled via
CompositingModeWatcher, so no need to check the command line flag
for --disable-gpu-compositing in the browser.

R=zmo@chromium.org

Bug:  772574 
Change-Id: I60c7a5a8d438dd24d30da8769ca0fcadda76c936
Reviewed-on: https://chromium-review.googlesource.com/752363
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513798}
[modify] https://crrev.com/192d25d460b7021ca952b6e3f596d43ff2f69040/content/browser/gpu/gpu_data_manager_impl_private.cc
[modify] https://crrev.com/192d25d460b7021ca952b6e3f596d43ff2f69040/content/browser/gpu/gpu_process_host.h
[modify] https://crrev.com/192d25d460b7021ca952b6e3f596d43ff2f69040/content/browser/renderer_host/render_view_host_impl.cc

Status: Fixed (was: Assigned)
Status: Started (was: Fixed)
ImageBridgeLayer still does the wrong thing (https://chromium-review.googlesource.com/c/chromium/src/+/692999#message-313742c04afb2a4624c4eb66248ba94f96b26a74)
Project Member

Comment 24 by bugdroid1@chromium.org, Nov 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/12ed5e142c912eb0c5fe98a6b034852b2824508f

commit 12ed5e142c912eb0c5fe98a6b034852b2824508f
Author: danakj <danakj@chromium.org>
Date: Thu Nov 09 20:34:15 2017

Submit resources from ImageLayerBridge to compositor in right mode.

ImageLayerBridge should check the SharedGpuContext to determine if
gpu compositing is on or off, then submit a texture or a bitmap
accordingly.

R=junov@chromium.org, piman@chromium.org
TBR=chrishtr

Bug:  772574 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I4918efd9eebb7447aa5a4d04ffeae1be22ad678e
Reviewed-on: https://chromium-review.googlesource.com/756869
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515271}
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/cc/blink/web_external_texture_layer_impl.cc
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/cc/blink/web_external_texture_layer_impl.h
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/AcceleratedStaticBitmapImage.h
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/StaticBitmapImage.cpp
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/StaticBitmapImage.h
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/UnacceleratedStaticBitmapImage.cpp
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/UnacceleratedStaticBitmapImage.h
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.h
[modify] https://crrev.com/12ed5e142c912eb0c5fe98a6b034852b2824508f/third_party/WebKit/public/platform/WebExternalTextureLayer.h

Status: Fixed (was: Started)
Blocking: 776613
Cc: danakj@chromium.org
 Issue 769854  has been merged into this issue.

Sign in to add a comment