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

Issue 604052 link

Starred by 4 users

Issue metadata

Status: Assigned
Owner:
Cc:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug

Blocked on:
issue 614791



Sign in to add a comment

Mac CoreAnimation: Move CALayerTree to the browser process

Project Member Reported by ccameron@chromium.org, Apr 15 2016

Issue description

We currently
1. Take the DrawQuad list in the browser compositor
2. Convert it to CALayerOverlay list
3. Ship that list over to the GPU process
4. Construct a CALayerTree in the GPU process

This is annoying (and bad for performance) in that we have to send all of this data through the command buffer.

We should construct the CALayer tree in the browser process instead (or whatever process has the browser compositor, in case there are plans to shuffle that).
 
Project Member

Comment 1 by bugdroid1@chromium.org, Apr 21 2016

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

commit 1d09d3e429a86ade0173092e56772eb080bf0834
Author: ccameron <ccameron@chromium.org>
Date: Thu Apr 21 07:21:38 2016

Mac: Towards moving CALayerTree to the browser proc

We currently construct the CALayerTree in the browser process,
then shuffle it over to the GPU process.

This moves the code over to being next to AcceleratedWidgetMac,
which is what will be hosting the CALayerTree when it moves to
the browser process.

Add me as an OWNER for ImageTransportSurfaceOverlayMac.

BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel

Review URL: https://codereview.chromium.org/1901253002

Cr-Commit-Position: refs/heads/master@{#388708}

[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/gpu/gpu.gyp
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/gpu/gpu_ipc_service.gypi
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/gpu/ipc/service/BUILD.gn
[add] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/gpu/ipc/service/OWNERS
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/gpu/ipc/service/image_transport_surface_overlay_mac.h
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/gpu/ipc/service/image_transport_surface_overlay_mac.mm
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/BUILD.gn
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/DEPS
[modify] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/accelerated_widget_mac.gyp
[rename] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/ca_layer_partial_damage_tree_mac.h
[rename] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/ca_layer_partial_damage_tree_mac.mm
[rename] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/ca_layer_tree_mac.h
[rename] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/ca_layer_tree_mac.mm
[rename] https://crrev.com/1d09d3e429a86ade0173092e56772eb080bf0834/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm

Project Member

Comment 2 by bugdroid1@chromium.org, Apr 27 2016

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

commit f3c6c059d5318978e9171ae7a1ca54f56091de85
Author: ccameron <ccameron@chromium.org>
Date: Wed Apr 27 00:51:03 2016

Move logic from ImageTransportSurfaceOverlayMac into ui/

This CL is a refactor and should have no functional effects.

Move the logic that handles switching between CALayerTree (from the
CoreAnimation renderer) and CALayerPartialDamageTree (from the OpenGL
renderer) into ui/accelerated_widget_mac.

Rename the structures to have clearer meanings. The CARendererLayerTree
(formerly CALayerTree) is produced by CoreAnimation renderer, and the
GLRendererLayerTree (formerly CALayerPartialDamageTree) is produced
by the OpenGL renderer. The CALayerTreeCoordinator coordinates switching
between these types of trees.

This is to
- Continue the process of moving CoreAnimation renderer entirely to the
  browser process
- Provide a place to plug in and update low power video layers.
- Allow for testing of the transition between CoreAnimation renderer
  and OpenGL renderer.

BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel

Review URL: https://codereview.chromium.org/1917723002

Cr-Commit-Position: refs/heads/master@{#389959}

[modify] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/gpu/ipc/service/image_transport_surface_overlay_mac.h
[modify] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/gpu/ipc/service/image_transport_surface_overlay_mac.mm
[modify] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/BUILD.gn
[modify] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/accelerated_widget_mac.gyp
[add] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h
[add] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/ca_layer_tree_coordinator.mm
[modify] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/ca_layer_tree_unittest_mac.mm
[rename] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/ca_renderer_layer_tree.h
[rename] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/ca_renderer_layer_tree.mm
[rename] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/gl_renderer_layer_tree.h
[rename] https://crrev.com/f3c6c059d5318978e9171ae7a1ca54f56091de85/ui/accelerated_widget_mac/gl_renderer_layer_tree.mm

Project Member

Comment 3 by bugdroid1@chromium.org, May 9 2016

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

commit 433204258d41867ad95c2af17c1248dfc64032ac
Author: ccameron <ccameron@chromium.org>
Date: Mon May 09 20:57:55 2016

Make Mac swap code like other platforms

Swap buffer completion is sent from the GPU process to the browser
process via the IPC GpuCommandBufferMsg_SwapBuffersCompleted on all
platforms except for Mac, which uses the IPC
GpuHostMsg_AcceleratedSurfaceBuffersSwapped.

Mac needs (for now) to send a handful of additional parameters from the
gpu process at every swap. These parameters are used to display in the
browser process the CALayer tree that is created in the gpu process.
Add these parameters to GpuHostMsg_AcceleratedSurfaceBuffersSwapped
under a platform ifdef. These parameters will be able to be removed when
layer tree construction is moved to be in the browser process.

Pass these parameters along to GpuBrowserCompositorOutputSurface::
SwapBuffers, where they are consumed in Mac-specific code. This wart,
the gpu::GpuProcessHostedCALayerTreeParamsMac structure being passed
along, will be removed when the CALayer tree is constructed in the
browser process.

Swaps are acknowledged by the browser process to the gpu process in the
AcceleratedSurfaceMsg_BufferPresented IPC. The purpose of this IPC was
to send vsync data to the gpu process to coordinate swaps, but this
data is no longer used by the gpu process, is entirely dead code, and
can be removed.

Remove other supporting code that is no longer needed. Not all supporting
code is removed in this patch.

BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/1962493002
Cr-Commit-Position: refs/heads/master@{#392419}

[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/components/mus/gpu/gpu_service_mus.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/components/mus/gpu/gpu_service_mus.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/browser_compositor_output_surface.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/gpu_browser_compositor_output_surface.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/gpu_browser_compositor_output_surface.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/gpu_surfaceless_browser_compositor_output_surface.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/gpu_surfaceless_browser_compositor_output_surface.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/image_transport_factory.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/offscreen_browser_compositor_output_surface.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/reflector_impl_unittest.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/software_browser_compositor_output_surface.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/software_browser_compositor_output_surface.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/test/no_transport_image_transport_factory.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/vulkan_browser_compositor_output_surface.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/compositor/vulkan_browser_compositor_output_surface.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/gpu/gpu_process_host.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/gpu/gpu_process_host.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/gpu/gpu_process_host_ui_shim.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/gpu/gpu_process_host_ui_shim.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/browser/renderer_host/compositor_impl_android.cc
[delete] https://crrev.com/38e44d55fe72a16103f0e4a7ae5061aa32ee91b0/content/common/accelerated_surface_buffers_swapped_params_mac.cc
[delete] https://crrev.com/38e44d55fe72a16103f0e4a7ae5061aa32ee91b0/content/common/accelerated_surface_buffers_swapped_params_mac.h
[delete] https://crrev.com/38e44d55fe72a16103f0e4a7ae5061aa32ee91b0/content/common/buffer_presented_params_mac.cc
[delete] https://crrev.com/38e44d55fe72a16103f0e4a7ae5061aa32ee91b0/content/common/buffer_presented_params_mac.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/common/gpu_host_messages.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/content_common.gypi
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/gpu/gpu_child_thread.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/content/gpu/gpu_child_thread.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/gpu_ipc_client.gypi
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/client/BUILD.gn
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/client/command_buffer_proxy_impl.h
[add] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/client/gpu_process_hosted_ca_layer_tree_params.cc
[add] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/client/gpu_process_hosted_ca_layer_tree_params.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/common/gpu_messages.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_channel_manager.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_channel_manager.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_channel_manager_delegate.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_channel_test_common.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_channel_test_common.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_command_buffer_stub.cc
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/gpu_command_buffer_stub.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/image_transport_surface_overlay_mac.h
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/image_transport_surface_overlay_mac.mm
[modify] https://crrev.com/433204258d41867ad95c2af17c1248dfc64032ac/gpu/ipc/service/pass_through_image_transport_surface.cc

Project Member

Comment 4 by bugdroid1@chromium.org, May 13 2016

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

commit 606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f
Author: ccameron <ccameron@chromium.org>
Date: Fri May 13 01:52:17 2016

cc: Add GpuMemoryBufferId to TextureMailbox

This will allow to identify the corresponding IOSurface in the browser.

BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/1957583002
Cr-Commit-Position: refs/heads/master@{#393424}

[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/blink/web_external_texture_layer_impl.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/layers/texture_layer_impl_unittest.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/output/gl_renderer_unittest.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/output/overlay_unittest.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/resources/resource_provider.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/resources/resource_provider.h
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/resources/texture_mailbox.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/resources/texture_mailbox.h
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/resources/transferable_resource.h
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/cc/test/test_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/components/exo/buffer.cc
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/content/common/cc_messages.h
[modify] https://crrev.com/606662dfdeb98d3d7d6dc3b9e5dd61e7660dcd7f/third_party/WebKit/public/platform/WebExternalTextureMailbox.h

Project Member

Comment 5 by bugdroid1@chromium.org, May 20 2016

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

commit f75160bf37852d01f1f467237435c4d89802b8ed
Author: ccameron <ccameron@chromium.org>
Date: Fri May 20 02:16:08 2016

Add GpuMemoryBuffer CreateFromClientId interface

This will be used by the cc::ResourceProvider in the browser process
to get access to IOSurfaces.

R=sievers,fsamuel
TBR=khushalsagar
BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/1975023002
Cr-Commit-Position: refs/heads/master@{#394958}

[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/blimp/client/feature/compositor/blimp_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/blimp/client/feature/compositor/blimp_gpu_memory_buffer_manager.h
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/cc/test/test_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/cc/test/test_gpu_memory_buffer_manager.h
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/components/mus/gles2/mojo_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/components/mus/gles2/mojo_gpu_memory_buffer_manager.h
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/components/mus/surfaces/ozone_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/components/mus/surfaces/ozone_gpu_memory_buffer_manager.h
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/content/browser/gpu/browser_gpu_memory_buffer_manager.h
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/content/child/child_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/content/child/child_gpu_memory_buffer_manager.h
[modify] https://crrev.com/f75160bf37852d01f1f467237435c4d89802b8ed/gpu/command_buffer/client/gpu_memory_buffer_manager.h

Project Member

Comment 6 by bugdroid1@chromium.org, May 20 2016

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

commit 529e601dd0e4fbe65b9046da53f48614a9448d07
Author: ccameron <ccameron@chromium.org>
Date: Fri May 20 09:10:39 2016

cc: Add ScopedReadLockGpuMemoryBuffer

For resources provided by a child compositor, hook this up to the new
CreateGpuMemoryBufferFromClientId function to create a
GpuMemoryBufferImpl on the parent side.

Update TestGpuMemoryBufferManager to test this (providing a
different GpuMemoryBufferManager to the child and parent resource
providers).

Plumb the GpuMemoryBufferManager client id through from
DelegatedFrameHost to the cc::Surface to the cc:ResourceProvider
when providing child resources. Note that this will not cover
all content (e.g, child frame). A follow-on patch will cover these
cases (for now, not-covered content will fall back to OpenGL
compositing).

BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/1989453003
Cr-Commit-Position: refs/heads/master@{#395040}

[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/resources/resource_provider.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/resources/resource_provider.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/resources/resource_provider_unittest.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/surfaces/surface.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/surfaces/surface.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/surfaces/surface_aggregator.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/surfaces/surface_factory.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/surfaces/surface_factory.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/test/test_gpu_memory_buffer_manager.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/cc/test/test_gpu_memory_buffer_manager.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/content/browser/renderer_host/delegated_frame_host.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/content/browser/renderer_host/delegated_frame_host.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/content/browser/renderer_host/render_widget_host_view_mac.h
[modify] https://crrev.com/529e601dd0e4fbe65b9046da53f48614a9448d07/content/browser/renderer_host/render_widget_host_view_mac.mm

Project Member

Comment 7 by bugdroid1@chromium.org, May 23 2016

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

commit a386d2f6f425b9205d53ee6443910a3b2ef8dba6
Author: ccameron <ccameron@chromium.org>
Date: Mon May 23 23:15:44 2016

Video Gmb Pool: Plumb GpuMemoryBufferId through to compositor

Add a function WrapGpuMemoryBufferBackedNativeTextures, which is like
WrapNativeTextures, but specifying GpuMemoryBufferIds for the textures,
which is then passed along to the compositor (as opposed to the current
behavior, where we just pass an invalid id).

BUG=604052
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review-Url: https://codereview.chromium.org/2006893002
Cr-Commit-Position: refs/heads/master@{#395454}

[modify] https://crrev.com/a386d2f6f425b9205d53ee6443910a3b2ef8dba6/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/a386d2f6f425b9205d53ee6443910a3b2ef8dba6/media/base/video_frame.cc
[modify] https://crrev.com/a386d2f6f425b9205d53ee6443910a3b2ef8dba6/media/base/video_frame.h
[modify] https://crrev.com/a386d2f6f425b9205d53ee6443910a3b2ef8dba6/media/renderers/mock_gpu_video_accelerator_factories.cc
[modify] https://crrev.com/a386d2f6f425b9205d53ee6443910a3b2ef8dba6/media/video/gpu_memory_buffer_video_frame_pool.cc

Cc: k...@yandx-team.ru
Project Member

Comment 10 by bugdroid1@chromium.org, Jun 3 2016

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

commit 898bf6cab1519ef567ecfc0dd07d3fef9b941247
Author: ccameron <ccameron@chromium.org>
Date: Fri Jun 03 06:13:50 2016

Mac: Move remote layer use to GpuOutputSurfaceMac

Move the logic for managing remote layers from AcceleratedWidgetMac
to GpuOutputSurfaceMac. Change AcceleratedWidgetMac's interface to take
CALayers for new content, not remote handles (CAContextIDs).

In future patches, GpuOutputSurfaceMac will instantiate a
CALayerTreeCoordinatorMac locally (as opposed to in the GPU process),
and will present the resulting CALayers directly.

BUG=604052

Review-Url: https://codereview.chromium.org/2018793002
Cr-Commit-Position: refs/heads/master@{#397646}

[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/content/browser/compositor/gpu_output_surface_mac.h
[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/content/browser/compositor/gpu_output_surface_mac.mm
[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/content/browser/compositor/software_output_device_mac.mm
[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/content/browser/renderer_host/browser_compositor_view_mac.h
[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/ui/accelerated_widget_mac/accelerated_widget_mac.h
[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/ui/accelerated_widget_mac/accelerated_widget_mac.mm
[modify] https://crrev.com/898bf6cab1519ef567ecfc0dd07d3fef9b941247/ui/views/widget/native_widget_mac_unittest.mm

Cc: piman@chromium.org vmi...@chromium.org
Design doc at
https://docs.google.com/document/d/1hrbvV0ayk5Yw29VtmdDIZO13q9ABacznT8yugWCnDkk/edit#heading=h.kb6zm0m7uqer

Because this has not yielded the power improvements that I wanted, I am not strongly opinionated about whether or not we continue with this project.

I think that it should depend on our plans for how GMBs are to be handled in the browser process. If they are to opened in the browser process (which I thought was the plan), then I think this is worth it for the cleanup.
Blockedon: 614791
Cc: sdy@chromium.org ericrk@chromium.org
I'm still on the bubble about this.

This would solve the issues that we have with
- janky browser resize ( issue 617824 )
- flashes of the wrong content ( issue 549637 )

Maybe a reasonable roll-out scheme would be
1. Finch experiment to just open the IOSurfaces in the browser process for the InUse query ( issue 614791 ) and UMA the time that it takes to create the IOSurface Mach ports (GPU process) and open them (browser process) for each frame.
2. If the overhead is "low enough" (and browser crash rates unaffected), then Finch moving this to the browser process.
Of note is that by "browser process" here, I mean "whatever thing it is that has the GLRenderer", because mus.
And also would fix issue 662207 -- CA remote layer SPI usage being less than reliable.
Cc: fsam...@chromium.org
+fsamuel
Not sure what mus looks like on mac, but if we're moving the Display Compositor to the gpu/viz process, would this make it easier? At least in terms of not having the browser deal with GMBs and IOSurfaces. That said, I'm not sure it necessarily helps the other issues you're looking at, I imagine we'd still need remote CALayers in that world.
> This is annoying (and bad for performance) in that we have to send all of
> this data through the command buffer.

I should note that with mus the quads will be in the GPU not the browser, directly from the renderer. Does that change your feelings here?

Sign in to add a comment