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

Issue 624830 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2016
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android
Pri: 3
Type: Bug



Sign in to add a comment

Blimp Compositor GPU dependencies.

Project Member Reported by khushals...@chromium.org, Jun 30 2016

Issue description

To create an OutputSurface for the LayerTreeHost, we need to create a GPU CommandBuffer. Currently this requires access to the BrowserGpuChannelHostFactory which lives in content.

Also, we probably want to use the BrowserGpuMemoryBufferManager from content as well.
 
Cc: klo...@chromium.org
Do we really need CommandBuffer?
We need the command buffer to give the compositor a GL context for creating and uploading textures, sharing them with the browser compositor, and if we want to later on support GPU raster.

Even if the compositor used bitmaps, we'd still need to have a way to share those resources with the browser compositor, with the content::HostSharedBitmapManager.
Command buffer is originally written for cross process GL execution. It does carry some cost. As Blimp is single process, can we by pass it?

Daniel, I haven't looked at this area for a while. In the early days we were able to do GL in the render without command buffer. Is it still easy to do in today's code?
There are a two things:

- Our internal GL APIs and all the plumbing through the interfaces and abstraction layers that go through the command buffer and decoder like the 
texture sharing and sync points which the compositor relies on.

- If you want to share resources you have to be in the same GL process on the service side (unless you use SurfaceTexture). So if the device runs locally rendered tabs and has a GPU process (which many low-endish devices with 512-1GB do) then to integrate with the browser compositor you also probably want to talk to the same GPU process.

Components: Mobile>Blimp

Comment 7 by w...@chromium.org, Jul 27 2016

Components: -Mobile>Blimp Mobile>Blimp>Client
Labels: OS-Android OS-Linux
Owner: khushals...@chromium.org
Status: Assigned (was: Untriaged)
Khushal, is this still relevant?
Status: Started (was: Assigned)
Yes, we need the CommandBuffer hooks from content to get the compositor running for 0.6. I'm working on this right now.
Project Member

Comment 9 by bugdroid1@chromium.org, Aug 9 2016

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

commit c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a
Author: khushalsagar <khushalsagar@chromium.org>
Date: Tue Aug 09 02:15:51 2016

content: Add ContextProviderFactory to create a render ContextProvider.

Add a ContextProviderFactory to ui to create a ContextProvider for an
external compositor rendering web content. This will be used by the
Blimp Compositor. Also,

1) Consolidate the GpuChannel initialization logic
and ownership of the VulkanContextProvider for the UI compositor in
ContextProviderFactoryImpl.

2) Move cc::SurfaceManager and surface_ids allocation to
ContextProviderFactory.

BUG= 624830 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation

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

[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/browser_main_loop.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/compositor/surface_utils.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/frame_host/render_widget_host_view_child_frame_unittest.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/gpu/gpu_surface_tracker.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/gpu/gpu_surface_tracker.h
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/renderer_host/compositor_impl_android.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/renderer_host/compositor_impl_android.h
[add] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/renderer_host/context_provider_factory_impl_android.cc
[add] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/renderer_host/context_provider_factory_impl_android.h
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/renderer_host/render_widget_host_unittest.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/common/gpu/client/command_buffer_metrics.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/common/gpu/client/command_buffer_metrics.h
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/content_browser.gypi
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/content/public/test/test_renderer_host.cc
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/tools/metrics/histograms/histograms.xml
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/ui/android/BUILD.gn
[modify] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/ui/android/DEPS
[add] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/ui/android/context_provider_factory.cc
[add] https://crrev.com/c81e43b82548d619a0b8ebd4dfd2362a8bbf5e2a/ui/android/context_provider_factory.h

Status: Fixed (was: Started)
Labels: Archive-Blimp
Blocking: -622848

Sign in to add a comment