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

Issue 730660 link

Starred by 14 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 14
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug


Sign in to add a comment

Software compositing fallback for Viz

Project Member Reported by danakj@chromium.org, Jun 7 2017

Issue description

Thoughts doc about launching gpu process and platform things. https://docs.google.com/document/d/1nDAFy7Up_Qnxk7x39FBafJ-KuMWMVIFM9exdqYUdShQ/edit#heading=h.9ssjx7u4qc2k

Starting a list of problems we'll need to think about. Can add to it (don't remove tho or we lose history).

1. Compositing mode reporting needs to be decided and reported in the gpu process, to the browser, and bounce to the renderers.
2. HostFrameSinkManager::CreateCompositorFrameSink explodes if the renderer falls back to software cuz it already has a CompositorFrameSink. We should pull that CFS out of the LayerTreeFrameSink and stuff it back into a new one instead of making one from scratch.
3. GpuDisplayProvider has no idea about software compositing, needs to be able to set up a software output surface, and decide to fall back on enough errors.
4. Because gpu process is restartable, if the browser sees it fall back to software it needs to tell the gpu process the next time around.
5. If gpu process is failing to launch, browser needs to tell it to stop trying to use gpu. Not sure how to combine this with (4) well, as that one comes from VizProcessFactory, and this one from GpuProcessHost.
6. Setting up the OutputSurface is platform specific (see doc)
7. Shared bitmap sequence numbers go to the browser in order to sync them with the compositor frame. Need to sync shared bitmap id generation with compositor frames to the viz process instead.
 
Showing comments 26 - 125 of 125 Older
Project Member

Comment 26 by bugdroid1@chromium.org, Dec 1 2017

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

commit d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c
Author: danakj <danakj@chromium.org>
Date: Fri Dec 01 22:10:37 2017

viz: force_software_compositing flag for CreateRootCompositorFrameSink

For ui::Compositors that don't need to embed anything (eg. tooltips)
they may be set to use software compositing even if the system as a
whole is using gpu compositing.

This adds the flag to CreateRootCompositorFrameSink plumbing, all the
way through to the GpuDisplayProvider. In GpuDisplayProvider it adds
code to create (for most platforms) a SoftwareOutputDevice.

It renames DisplayOutputSurface to GLOutputSurface, and adds a
SoftwareOutputSurface, which is created in the software compositing
case.

This now crashes if software compositing is forced, as the ui
compositor has a null SharedBitmapManager. Once we set up the
SharedBitmapManager in the viz and browser processes we should
be able to get software compositing pixels. Lots of TODOs aded as
appropriate.

The auto-fallback on fatal error making a GL context is not
implemented yet in GpuDisplayProvider.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I82855e03df1c156e1a0b1c4bbc4eb35ffb3deb51
Reviewed-on: https://chromium-review.googlesource.com/798153
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521083}
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/common/gpu/in_process_context_provider.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/common/gpu/in_process_context_provider.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/host/host_frame_sink_manager.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/host/host_frame_sink_manager.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/host/host_frame_sink_manager_unittest.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/BUILD.gn
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/display_provider.h
[rename] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/gl_output_surface.cc
[rename] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/gl_output_surface.h
[rename] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/gl_output_surface_ozone.cc
[rename] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/gl_output_surface_ozone.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/gpu_display_provider.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/gpu_display_provider.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/software_output_device_ozone.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/software_output_device_ozone.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/software_output_device_ozone_unittest.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/software_output_device_x11.cc
[add] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/software_output_surface.cc
[add] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/display_embedder/software_output_surface.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/service/frame_sinks/frame_sink_manager_impl.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/components/viz/test/test_frame_sink_manager.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/content/browser/compositor/viz_process_transport_factory.h
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/services/ui/ws/window_server.cc
[modify] https://crrev.com/d92cc04210d91dbbfdb13ed7dbf74bc78f7e7a5c/services/viz/privileged/interfaces/compositing/frame_sink_manager.mojom

Comment 27 by m...@chromium.org, Dec 6 2017

Cc: m...@chromium.org
When running --enable-viz on my Linux desktop, I'm encountering a crash that led me to this bug. I run my local chrome build (ToT), and whenever I hover over any UI buttons that animate, it causes a crash in two processes. The first is in the GPU process, where X11 claims "Most likely this is a multi-threaded client and XInitThreads has not been called." The second is in the browser process, because the SharedBitmapManager is null, and ResourceProvider::CreateBitmapResource() is dereferencing that null pointer.

I tried digging into the root cause, and that's what brought me here. Seems there's a TODO in VizProcessTransportFactory::OnEstablishedGpuChannel(): https://cs.chromium.org/chromium/src/content/browser/compositor/viz_process_transport_factory.cc?rcl=8390d6521342c17eb17ec090e24641e74b995e28&l=435

So, is this just a hole in the implementation we haven't filled in yet, or have I discovered a separate bug?

Crash from GPU process:

[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
u/chromium/src/out/Release/chrome --type=gpu-process --field-trial-handle=16003999287186601889,1002294839360157693,131072 --disable-breakpad --enable-viz --log-level=1 --user-data-dir=/usr/local/google/home/miu/caches/debug-chrome --gpu-preferences=GAAAAAAAAAAAAQAAAQAAAAAAAAAAAGAA --gpu-vendor-id=0x10de --gpu-device-id=0x11b4 --gpu-driver-vendor=Nvidia --gpu-driver-version=367.57 --gpu-driver-date --user-data-dir=/usr/local/google/home/miu/caches/debug-chrome --log-level=1 --service-request-channel-token=11891335AACAD645C3C038916B202015: ../../src/xcb_io.c:179: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
Received signal 6
#0 0x7f605b4d028c base::debug::StackTrace::StackTrace()
#1 0x7f605b4cfd61 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f605b622330 <unknown>
#3 0x7f604e4f6c37 gsignal
#4 0x7f604e4fa028 abort
#5 0x7f604e4efbf6 <unknown>
#6 0x7f604e4efca2 __assert_fail
#7 0x7f6050d6779c <unknown>
#8 0x7f6050d685c3 _XReply
#9 0x7f6050d4fc74 _XGetWindowAttributes
#10 0x7f6050d4fde1 XGetWindowAttributes
#11 0x7f604d3aa44c viz::SoftwareOutputDeviceX11::SoftwareOutputDeviceX11()
#12 0x7f604d373780 viz::GpuDisplayProvider::CreateDisplay()
#13 0x7f604d37e63c viz::FrameSinkManagerImpl::CreateRootCompositorFrameSink()
#14 0x7f604d3acb89 viz::mojom::FrameSinkManagerStubDispatch::Accept()
#15 0x7f605a765e37 mojo::InterfaceEndpointClient::HandleValidatedMessage()
#16 0x7f605a7656e6 mojo::FilterChain::Accept()
#17 0x7f605a767302 mojo::InterfaceEndpointClient::HandleIncomingMessage()
#18 0x7f605a7720c2 mojo::internal::MultiplexRouter::ProcessIncomingMessage()
#19 0x7f605a771581 mojo::internal::MultiplexRouter::Accept()
#20 0x7f605a7656e6 mojo::FilterChain::Accept()
#21 0x7f605a75fd5d mojo::Connector::ReadSingleMessage()
#22 0x7f605a7609f4 mojo::Connector::ReadAllAvailableMessages()
#23 0x7f605a760856 mojo::Connector::OnHandleReadyInternal()
#24 0x7f605a761194 mojo::SimpleWatcher::DiscardReadyState()
#25 0x7f605a720df8 mojo::SimpleWatcher::OnHandleReady()
#26 0x7f605a72138e _ZN4base8internal7InvokerINS0_9BindStateIMN4mojo13SimpleWatcherEFvijRKNS3_18HandleSignalsStateEEJNS_7WeakPtrIS4_EEijS5_EEEFvvEE7RunImplIRKS9_RKNSt3__15tupleIJSB_ijS5_EEEJLm0ELm1ELm2ELm3EEEEvOT_OT0_NSI_16integer_sequenceImJXspT1_EEEE
#27 0x7f605b4d0baa base::debug::TaskAnnotator::RunTask()
#28 0x7f605b503a16 base::internal::IncomingTaskQueue::RunTask()
#29 0x7f605b507b07 base::MessageLoop::RunTask()
#30 0x7f605b507f24 base::MessageLoop::DeferOrRunPendingTask()
#31 0x7f605b5081e8 base::MessageLoop::DoWork()
#32 0x7f605b509680 base::MessagePumpDefault::Run()
#33 0x7f605b50735c base::MessageLoop::Run()
#34 0x7f605b53d416 base::RunLoop::Run()
#35 0x7f605b57ff8a base::Thread::Run()
#36 0x7f605b580583 base::Thread::ThreadMain()
#37 0x7f605b57671f base::(anonymous namespace)::ThreadFunc()
#38 0x7f605b61a184 start_thread
#39 0x7f604e5bdffd clone
  r8: fefefefefefefeff  r9: fefefefefeff092d r10: 0000000000000008 r11: 0000000000000206
 r12: 00007f6050dd720d r13: 00007f6050dd76b0 r14: 0000154a62a06000 r15: 00007f603d1abf88
  di: 000000000000509f  si: 00000000000050c0  bp: 00007f604e644018  bx: 00007f604311c000
  dx: 0000000000000006  ax: 0000000000000000  cx: 00007f604e4f6c37  sp: 00007f603d1abd78
  ip: 00007f604e4f6c37 efl: 0000000000000206 cgf: 0000000000000033 erf: 0000000000000000
 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.


Crash from browser process:

Received signal 11 SEGV_MAPERR 000000000000
#0 0x7f1bcb30c28c base::debug::StackTrace::StackTrace()
#1 0x7f1bcb30bd61 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#2 0x7f1bcb45e330 <unknown>
#3 0x7f1bc78fe5f3 cc::ResourceProvider::CreateBitmapResource()
#4 0x7f1bc78fe27a cc::ResourceProvider::CreateResource()
#5 0x7f1bc7902251 cc::ScopedResource::Allocate()
#6 0x7f1bc78fa34b cc::ResourcePool::CreateResource()
#7 0x7f1bc79484f3 cc::TileManager::CreateRasterTask()
#8 0x7f1bc7945732 cc::TileManager::AssignGpuMemoryToTiles()
#9 0x7f1bc7944c2f cc::TileManager::PrepareTiles()
#10 0x7f1bc7971803 cc::LayerTreeHostImpl::PrepareTiles()
#11 0x7f1bc7970610 cc::LayerTreeHostImpl::UpdateSyncTreeAfterCommitOrImplSideInvalidation()
#12 0x7f1bc7970291 cc::LayerTreeHostImpl::CommitComplete()
#13 0x7f1bc79ba12e cc::SingleThreadProxy::DoCommit()
#14 0x7f1bc79bdd0c cc::SingleThreadProxy::ScheduledActionCommit()
#15 0x7f1bc79110ac cc::Scheduler::ProcessScheduledActions()
#16 0x7f1bc7911a6d cc::Scheduler::NotifyReadyToCommit()
#17 0x7f1bc79bd6f4 cc::SingleThreadProxy::BeginMainFrame()
#18 0x7f1bc79be41d _ZN4base8internal7InvokerINS0_9BindStateIMN2cc17SingleThreadProxyEFvRKN3viz14BeginFrameArgsEEJNS_7WeakPtrIS4_EES6_EEEFvvEE7RunOnceEPNS0_13BindStateBaseE
#19 0x7f1bcb30cbaa base::debug::TaskAnnotator::RunTask()
#20 0x7f1bcb33fa16 base::internal::IncomingTaskQueue::RunTask()
#21 0x7f1bcb343b07 base::MessageLoop::RunTask()
#22 0x7f1bcb343f24 base::MessageLoop::DeferOrRunPendingTask()
#23 0x7f1bcb3441e8 base::MessageLoop::DoWork()
#24 0x7f1bcb345f0f base::(anonymous namespace)::WorkSourceDispatch()
#25 0x7f1bbfe37e04 g_main_context_dispatch
#26 0x7f1bbfe38048 <unknown>
#27 0x7f1bbfe380ec g_main_context_iteration
#28 0x7f1bcb345c42 base::MessagePumpGlib::Run()
#29 0x7f1bcb34335c base::MessageLoop::Run()
#30 0x7f1bcb379416 base::RunLoop::Run()
#31 0x559e71aabfa7 ChromeBrowserMainParts::MainMessageLoopRun()
#32 0x7f1bc896c027 content::BrowserMainLoop::RunMainMessageLoopParts()
#33 0x7f1bc896f853 content::BrowserMainRunnerImpl::Run()
#34 0x7f1bc8967e6a content::BrowserMain()
#35 0x7f1bc93aa61b content::RunNamedProcessTypeMain()
#36 0x7f1bc93ab0f6 content::ContentMainRunnerImpl::Run()
#37 0x7f1bcb82c794 service_manager::Main()
#38 0x7f1bc93a9961 content::ContentMain()
#39 0x559e7158c1cc ChromeMain
#40 0x7f1bbe31df45 __libc_start_main
#41 0x559e7158c02a _start
  r8: 0000000000000000  r9: 00007fff6199a390 r10: 000000000000009c r11: 0000000000000000
 r12: 0000288201b7fc40 r13: 0000000000000000 r14: 0000288202788518 r15: 00007fff6199a3c0
  di: 0000288201b7fd58  si: 0000000000000000  bp: 00007fff619999b0  bx: 0000288202788518
  dx: 0000288201b7fd58  ax: 0000000001b7fd01  cx: 4e5e4145bdbc0f01  sp: 00007fff61999730
  ip: 00007f1bc78fe5f3 efl: 0000000000010202 cgf: 4e5e000000000033 erf: 0000000000000004
 trp: 000000000000000e msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.

The second crash is something unimplemented and I believe danakj is working on. The first crash is expected and I will fix it.
Blocking: 776613
Labels: -Pri-2 ReleaseBlock-Stable OS-Chrome Pri-1
Issue 776613 needs to cherry pick these CLs for next stable release of ChromeOS.
What CLs? This bug is for --enable-viz which is not enabled anywhere yet.
Blocking: -776613
Labels: -Pri-1 -ReleaseBlock-Stable Pri-2
sorry for noise.
Blockedon: 790807
Cc: boliu@chromium.org
Ok I am on a mission to kill SharedBitmap and SharedBitmapManager in the child processes. This is a complicated out-of-band system to map sharedbitmapids to shared memory handles.

The plan looks roughly like this:

CompositorFrameSink mojo interface gains two methods. This makes the notifications in-band with submitted compositor frames, eliminating races.

  // Informs the display compositor that the child allocated a shared bitmap. The |id|
  // can then be used in subsequent CompositorFrames given to SubmitCompositorFrame.
  DidAllocateSharedBitmap(handle<shared_buffer> buffer, gpu.mojom.Mailbox id);

  // Informs the display compositor that the child deleted a shared bitmap.
  DidDeleteSharedBitmap(gpu.mojom.Mailbox id);

LayerTreeFrameSink also gains similar methods which pass through to the CompositorFrameSink.

  // Associates a SharedBitmapId with a shared buffer handle.                                                      
  virtual void DidAllocateSharedBitmap(mojo::ScopedSharedBufferHandle buffer,
                                       const viz::SharedBitmapId& id) = 0;

  // Disassociates a SharedBitmapId previously passed to                                                           
  // DidAllocateSharedBitmap.                                                                                      
  virtual void DidDeleteSharedBitmap(const viz::SharedBitmapId& id) = 0;

We remove all the sequence number tracking from RenderWidgetHostImpl. It is a CompositorFrameSink (for non-viz), so it grows a set of SharedBitmapIds, and informs the ServerSharedBitmapManager about allocations and deletions, and deletes * when it is Destroy()ed.

We do the same in CompositorFrameSinkSupport, and all CompositorFrameSinkImpls forward through to this.

Ok now things get interesting. Consumers of SharedBitmapManager in the child are, that I know so far:

- cc::LayerTreeHostImpl / cc::LayerTreeResourceProvider

These classes allocate shared bitmaps for raster. When they allocate then LayerTreeResourceProvider duplicates the shared memory handle (via ClientSharedBitmapManager) and ships ownership of it to the display compositor in an IPC.

Instead of doing this IPC through a separate IPC interface, we can keep track of all SharedMemory objects in the LayerTreeHostImpl, and dupe handles and send them to the CompositorFrameSink (and re-send when the CompositorFrameSink is replaced).

- blink::OffscreenCanvasResourceProvider

This class allocates shared memory and ships ownership of a duped handle to the display compositor via the Platform API which uses the ClientSharedBitmapManager on RenderThreadImpl. Since OffscreenCanvas has its own CompositorFrameSink, we can give the CompositorFrameSink pointer to the OffscreenCanvasResourceProvider, and have it notify about allocations directly to it.

- WebGL DrawingBuffer / Canvas ImageLayerBridge

This class also allocates shared memory and ships a dupled handle through the Platform API. However this code is a client of LayerTreeHost, and does not have its own CompositorFrameSink, nor access to LayerTreeHost's (wrong thread).

I think we can make use of the same system used for LayerTreeHostImpl/LayerTreeResourceProvider. We add an API to cc::LayerTreeHost to report creating/destroying shared memory - and we pass pointer-ownership of the shared memory in there, keeping lifetime-ownership via the SharedBitmapId in the WebGL/Canvas code. It gives the Id up to the LayerTreeHost to free the shared memory.

LayerTreeHost commits these shared memories over to LayerTreeHostImpl which dupes and passes ownership of a handle through the CompositorFrameSink (and re-does this when CompositorFrameSink is replaced).

- PepperGraphics2dHost

I think this is identical in spirit to the WebGL/Canvas cases, and can use the same APIs.

- RenderViewImpl Disambiguation popup

This shouldn't be using SharedBitmap, it's not for the compositor. http://crbug.com/790807.

- WebView SynchronousLayerTreeFrameSink

WebView uses a SharedBitmapManager to give to the SoftwareRenderer to allocate bitmaps with (thru ResourceProvider). This is all overkill http://crbug.com/692814. But for now we don't have to care yet. I believe we can instead instantiate a ServerSharedBitmapManager in the SynchronousLayerTreeFrameSink and give that to the Display, rather than getting a ClientSharedBitmapManager from the RenderThreadImpl. This should make things a bit more lightweight for almost free, as we'll stop using shared memory for that Display's resources, tho doesn't do much for the code complexity.

- ContentShell TestPlugin

TestPlugin works like Pepper/Canvas/WebGL, but doesn't go through the Platform API. I think we should be able to hook it up to the LayerTreeHost though like the others.

I think that's it. Off we go then, this will take at least a few patches. I am currently thinking to approach it something like:

1. WebView stop using ClientSharedBitmapManager
2. Build out the LayerTreeHost{Impl} stuff.
3. Hide SharedBitmapManager from LayerTreeResourceProvider, and have it use the stuff from 2.
4. Remove Platform API use for WebGL/Canvas/TestPlugin/Pepper and have them use the stuff from 2.
5. Add the replacement API on CompositorFrameSinks.
6. Convert LayerTreeHostImpl to use CompositorFrameSink instead of SharedBitmapManager.
7. Remove SharedBitmapManager from LayerTreeFrameSink.
8. Remove shared bitmap ID tracking from RenderWidgetHostImpl.
8. Convert OffscreeCanvas to use CompositorFrameSink instead of Platform API.
9. Remove Platform API.
10. Remove the SharedBitmapAllocationNotification mojo APIs/impl.
11. Remove ClientSharedBitmapManager.
12. Remove sequence numbers from SharedBitmap.
13. Make SharedBitmap into a viz-service-side-only simpler non-virtual thing (or delete it). Delete the SharedBitmapManager interface base class.

The end?
Also ftr https://chromium-review.googlesource.com/c/chromium/src/+/802574 appears to be much harder to land than I thought, as RenderProcessHostImpls are made in lots of unit tests that don't have a BrowserMainLoop.

Rather than do more intricate hacks, the above means there won't be a SharedBitmapAllocationNotificationImpl in RenderProcessHostImpl, which means removing the ServerSharedBitmapManager singleton existance from the browser process will be easier.
Cc: -boliu@chromium.org
Project Member

Comment 36 by bugdroid1@chromium.org, Dec 14 2017

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

commit a2b00295495ed040ac9768266f15e9d142655dcc
Author: danakj <danakj@chromium.org>
Date: Thu Dec 14 22:36:22 2017

Give Webview SynchronousLayerTreeFrameSink a ServerSharedBitmapManager

This removes its use of the ClientSharedBitmapManager in the renderer
process, freeing up one use toward removing it. This also means the
Display in the SynchronousLayerTreeFrameSink will not allocate shared
memory for RenderPass resources, as the ServerSharedBitmapManager will
use normal memory allocations.

R=boliu@chromium.org

Bug: 730660
Change-Id: Ibb05a8f1787a221351232907704412c5b682e85f
Reviewed-on: https://chromium-review.googlesource.com/826182
Reviewed-by: Bo <boliu@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524202}
[modify] https://crrev.com/a2b00295495ed040ac9768266f15e9d142655dcc/content/renderer/android/DEPS
[modify] https://crrev.com/a2b00295495ed040ac9768266f15e9d142655dcc/content/renderer/android/synchronous_layer_tree_frame_sink.cc
[modify] https://crrev.com/a2b00295495ed040ac9768266f15e9d142655dcc/content/renderer/android/synchronous_layer_tree_frame_sink.h
[modify] https://crrev.com/a2b00295495ed040ac9768266f15e9d142655dcc/content/renderer/render_thread_impl.cc

Insert step 1.5

1.5: Get SoftwareRenderer and SkiaRenderer off ResourceProvider so that the LayerTreeHost/ResourceProvider interactions can be only on LayerTreeResourceProvider and not impact the Display compositor.
Project Member

Comment 38 by bugdroid1@chromium.org, Dec 15 2017

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

commit b8d249cfeff9699c054f721e6c4f3a09dd345b8d
Author: kylechar <kylechar@chromium.org>
Date: Fri Dec 15 00:04:18 2017

viz: Call XInitThreads().

Both the GPU and compositor threads can make Xlib calls and
XInitThreads() must be called in this situation. Change GPU process to
always call XInitThreads() during startup. GLSurfaceGLX will still call
XInitThreads() on startup because some test paths need it.
XInitThreads() will return immediately for subsequent calls so this
should be safe.

Bug: 730660
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: I0f3b44d7ac1a0e6c9e711de6d457634435add101
Reviewed-on: https://chromium-review.googlesource.com/818054
Commit-Queue: kylechar <kylechar@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524242}
[modify] https://crrev.com/b8d249cfeff9699c054f721e6c4f3a09dd345b8d/content/gpu/BUILD.gn
[modify] https://crrev.com/b8d249cfeff9699c054f721e6c4f3a09dd345b8d/content/gpu/gpu_main.cc

Project Member

Comment 39 by bugdroid1@chromium.org, Dec 15 2017

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

commit 249dc2fe982d665760b5acfafb6b9eb62d0acd1f
Author: danakj <danakj@chromium.org>
Date: Fri Dec 15 21:46:32 2017

Don't use ResourceProvider to make bitmaps in SoftwareRenderer

The SoftwareRenderer doesn't need to share those bitmaps out of process
so it can just make regular SkBitmaps and use those, without depending
on ResourceProvider, ResourceIds, SharedBitmapManager, etc to get that
done.

R=kylechar@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ie49389776441efe3faddb7ecf364126e5cc44170
Reviewed-on: https://chromium-review.googlesource.com/828081
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524472}
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/direct_renderer.cc
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/direct_renderer.h
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/gl_renderer.cc
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/gl_renderer.h
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/skia_renderer.cc
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/skia_renderer.h
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/software_renderer.cc
[modify] https://crrev.com/249dc2fe982d665760b5acfafb6b9eb62d0acd1f/components/viz/service/display/software_renderer.h

Blocking: 794961
Cc: jonr...@chromium.org
Project Member

Comment 41 by bugdroid1@chromium.org, Dec 20 2017

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

commit c79b8c848fc4352c35f30cda3372b53e3c89df25
Author: Antonio Gomes <tonikitoo@igalia.com>
Date: Wed Dec 20 18:47:34 2017

fixup! viz: Spawn renderer with gpu disabled when it's turned off already.

ImageTransportFactory doesn't exist in mus. Either ENABLE_MUS
needs an ImageTransportFactory or ENABLE_MUS has to get the value
from somewhere else.

While this does not happen, extra harden the build time check to
reflect the situation.

BUG=730660

Change-Id: I6a93d426e19d6fe5cf797252434d56e53cdc95a1
Reviewed-on: https://chromium-review.googlesource.com/832146
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#525384}
[modify] https://crrev.com/c79b8c848fc4352c35f30cda3372b53e3c89df25/content/browser/renderer_host/render_process_host_impl.cc

Project Member

Comment 42 by bugdroid1@chromium.org, Dec 21 2017

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

commit 51329a3c86c6c89564b2777a3bbc1729024fa64d
Author: danakj <danakj@chromium.org>
Date: Thu Dec 21 00:07:05 2017

Stop using ResourceProvider to create resources for SkiaRenderer.

This drops a dependency on ResourceProvider to create new resources
in the display compositor, allowing us to remove that functionality
from the DisplayResourceProvider.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I7835e71b3c1657dcc28f4bb2bd093b3b1dae86ed
Reviewed-on: https://chromium-review.googlesource.com/835353
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#525525}
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/direct_renderer.cc
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/direct_renderer.h
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/gl_renderer.cc
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/gl_renderer.h
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/skia_renderer.cc
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/skia_renderer.h
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/software_renderer.cc
[modify] https://crrev.com/51329a3c86c6c89564b2777a3bbc1729024fa64d/components/viz/service/display/software_renderer.h

Some more 1.5 steps:

a. https://chromium-review.googlesource.com/c/chromium/src/+/838263 makes software resource creation explicit inside cc
b. then we need to have ScopedResource be able to hold an imported resource, but to do that it needs to point to LayerTreeResourceProvider*. that depends on xing's patch to get GLRenderer off ScopedResource (soon)
c. then we can make owners of software resources also own the SharedBitmap and make imported resources from them to get a resource id.

At some point the GL resource creation could probably be abstracted out of LayerTreeResourceProvider too, and then it would just be imported resources?
Project Member

Comment 44 by bugdroid1@chromium.org, Dec 21 2017

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

commit 0ce8b0deb0f465cf40331dc5afc289b312ddefab
Author: danakj <danakj@chromium.org>
Date: Thu Dec 21 21:20:49 2017

Remove ResourceProvider::CreateResource, expose gpu/software choice.

This changes the clients of ResourceProvider to create explicitly gpu
or software resources, rather than hiding the choice inside
CreateResource. This means software resources no longer have to pass
in hints/formats that are fixed or don't apply.

The purpose of this is to separate CreateBitmapResource() out so that
the clients can in future work allocate and own the SharedBitmap
themselves. At that point they can "import" software
TransferableResources via SharedBitmapId the same way we do for clients
of cc, and the creators of SharedBitmap can move off of SharedBitmap
and SharedBitmapManager.

Once that is done, we will notify SharedBitmapId creation through the
CompositorFrameSink instead of through the SharedBitmapManager.

R=piman@chromium.org
NOTRY=true

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: If9bb98f9fc325c0c9652fee51f07628d4ebc328b
Reviewed-on: https://chromium-review.googlesource.com/838263
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#525803}
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/layers/heads_up_display_layer_impl.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/layers/heads_up_display_layer_impl.h
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/layer_tree_resource_provider_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/resource_pool.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/resource_pool.h
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/resource_provider.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/resource_provider.h
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/resource_provider_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/scoped_resource.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/scoped_resource.h
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/scoped_resource_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/resources/video_resource_updater.h
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/test/fake_picture_layer_tiling_client.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/test/fake_ui_resource_layer_tree_host_impl.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/test/pixel_test.h
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/test/render_pass_test_utils.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/components/viz/service/display/gl_renderer.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/components/viz/service/display/gl_renderer_unittest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/components/viz/service/display/renderer_pixeltest.cc
[modify] https://crrev.com/0ce8b0deb0f465cf40331dc5afc289b312ddefab/components/viz/service/display/software_renderer_unittest.cc

A random thought about moving creation/ownership of bitmaps out of ResourceProvider before the holidays. We could do the same for GL resources too. The reason they are owned inside ResourceProvider right now is so that they can outlive the ResourceId in the client, in order for them to be returned to a child later. This is not needed anymore for uses of ResourceProvider that create resources (ie LayerTreeResourceProvider). So we could put ownership in Tile/etc instead of in internal::Resource, and just make LayerTreeResourceProvider only deal in TransferableResources. That'd position it well for non-cc clients to make use of better too, probably.. and get texture creation code in a general place that could be shared by cc & viz & other viz clients & VideoResourceUpdater & etc? kbye.
Project Member

Comment 46 by bugdroid1@chromium.org, Jan 4 2018

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

commit 52e1d55c1ef39797050456f93ca6681ada56fb63
Author: danakj <danakj@chromium.org>
Date: Thu Jan 04 01:39:21 2018

Replace use of ResourcePool with owned ScopedGpuMemoryBufferTexture

ResourcePool makes uses of creating resources on ResourceProvider, which is
a functionality of LayerTreeResourceProvider (ie compositor clients). We
replace it with 3 vectors in GLRenderer, and ScopedGpuMemoryBufferTexture,
of which ownership is moved through those vectors.

ScopedGpuMemoryBufferTexture allocates a texture backed by an image +
GpuMemoryBuffer, so that it can be used as an overlay. The first vector
is the set of in-flight textures. Once SwapBuffersComplete happens, we
move them to a set awaiting release from CA. Then on signal from CA we
recycle them back into the available set.

R=ccameron@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I24efe515b69aaa7ec30d7163f28a66f96c3562c0
Reviewed-on: https://chromium-review.googlesource.com/843127
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Erik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#526892}
[modify] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/cc/resources/resource_provider.cc
[modify] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/BUILD.gn
[modify] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/display/gl_renderer.cc
[modify] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/display/gl_renderer.h
[modify] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/display/gl_renderer_unittest.cc
[modify] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/display/overlay_unittest.cc
[add] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/display/scoped_gpu_memory_buffer_texture.cc
[add] https://crrev.com/52e1d55c1ef39797050456f93ca6681ada56fb63/components/viz/service/display/scoped_gpu_memory_buffer_texture.h

Project Member

Comment 47 by bugdroid1@chromium.org, Jan 4 2018

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

commit bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb
Author: danakj <danakj@chromium.org>
Date: Thu Jan 04 17:47:20 2018

Give ScopedResource a LayerTreeResourceProvider.

ScopedResource is used for making resources that will be shipped out
of the layer tree compositor. Give it a LayerTreeResourceProvider so
that we reduce the API surface needed by the ResourceProvider base
class to not include creating/deleting these resources, and allowing
us to change how software resource are created.

R=piman@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ia89068da79c497539f4cbf98f96bba4b9f4d362b
Reviewed-on: https://chromium-review.googlesource.com/848253
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527028}
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/layers/heads_up_display_layer_impl.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/layers/heads_up_display_layer_impl.h
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/raster/gpu_raster_buffer_provider.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/raster/staging_buffer_pool.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/resource.h
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/resource_pool.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/resource_pool.h
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/scoped_resource.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/scoped_resource.h
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/resources/scoped_resource_unittest.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/test/fake_picture_layer_tiling_client.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/test/fake_picture_layer_tiling_client.h
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/tiles/picture_layer_tiling_set_unittest.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/tiles/tile.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/tiles/tile_draw_info.h
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/tiles/tile_manager.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/bf124ca1e2e80f27377cb2e0797f0fcccb56b0cb/components/viz/service/display/gl_renderer.cc

Blockedon: 799478
Project Member

Comment 49 by bugdroid1@chromium.org, Jan 5 2018

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

commit ee1b38ee2e5b4d2c086e6cd27dc679ca7a3cd87f
Author: danakj <danakj@chromium.org>
Date: Fri Jan 05 21:11:19 2018

cc: Remove GetTextureHint() from ResourceProvider.

The hint is used for making resources, but is not used after, and is
not part of imported resources. As we transition toward using those,
this method will not work. Also it's not used today.

R=kylechar@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I7d52b48ee2ed47e6f5644236ab2953d8af2f4ee7
Reviewed-on: https://chromium-review.googlesource.com/852696
Reviewed-by: kylechar <kylechar@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527381}
[modify] https://crrev.com/ee1b38ee2e5b4d2c086e6cd27dc679ca7a3cd87f/cc/resources/resource_provider.cc
[modify] https://crrev.com/ee1b38ee2e5b4d2c086e6cd27dc679ca7a3cd87f/cc/resources/resource_provider.h

Project Member

Comment 50 by bugdroid1@chromium.org, Jan 10 2018

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

commit 8870280cdda552bdb93cbd223ab511cf5f1fbefe
Author: Weiliang Chen <weiliangc@chromium.org>
Date: Wed Jan 10 20:01:13 2018

viz: Stop SkiaRenderer Reading RenderPass Textures from ResourceProvider

SkiaRenderer creates and owns its render pass textures, should not read
from ResourceProvider. This would have same behavior as other
DirectRenderers.

R=danakj@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I78db25a674600fe7288a6576e05cf3185057d01f
Reviewed-on: https://chromium-review.googlesource.com/852974
Reviewed-by: enne <enne@chromium.org>
Commit-Queue: weiliangc <weiliangc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528398}
[modify] https://crrev.com/8870280cdda552bdb93cbd223ab511cf5f1fbefe/components/viz/service/display/skia_renderer.cc

Comment 51 by xing...@intel.com, Jan 11 2018

Cc: xing...@intel.com
Project Member

Comment 52 by bugdroid1@chromium.org, Jan 11 2018

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

commit 9bbf70d01e3ec2ab7868b38c660f7cf2f41c3d3f
Author: kylechar <kylechar@chromium.org>
Date: Thu Jan 11 21:31:44 2018

viz: Work around for SharedBitmapManager crashes.

Change VizProcessTransportFactory to provide a ServerSharedBitmapManager
to newly created LayerTreeFrameSinks. The software compositing path
currently crashes the browser process with --enable-viz because there is
no SharedBitmapManager. This is a quick work around to avoid the crash.
Software composited areas (eg. tooltips) will be blank until the
refactor for SharedBitmap resources is finished.

Bug: 730660
Change-Id: I1bdeeda9fed3a30583d7d9f5b70e8aa2a70d9843
Reviewed-on: https://chromium-review.googlesource.com/848395
Commit-Queue: kylechar <kylechar@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#528761}
[modify] https://crrev.com/9bbf70d01e3ec2ab7868b38c660f7cf2f41c3d3f/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/9bbf70d01e3ec2ab7868b38c660f7cf2f41c3d3f/content/browser/compositor/viz_process_transport_factory.h

Project Member

Comment 53 by bugdroid1@chromium.org, Jan 17 2018

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

commit c42be6060ef48eef2942de0c6bf6c39852fd860f
Author: danakj <danakj@chromium.org>
Date: Wed Jan 17 17:22:31 2018

ResourcePool creation cleanups.

- Use make_unique<T> instead of T::Create()
- Set disallow_non_exact_resource_reuse in RenderWidgetCompositor
instead of in the constructor when OS_ANDROID.
- Remove disallow_non_exact_resource_reuse from RendererSettings since
ResourcePool is not used there anymore.
- Add a separate constructor for software resources instead of a bool
since not all the gpu fields need to be given (the hint is not
relevant).
- Pass the task runner by scoped_refptr, since it will store it in one
(same in StagingBufferPool).

R=vmpstr@chromium.org
TBR=kenrb

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I98803de7c4f99ce2f694fcd071a05d6cc1bbfe77
Reviewed-on: https://chromium-review.googlesource.com/852776
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#529785}
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/raster/one_copy_raster_buffer_provider.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/raster/one_copy_raster_buffer_provider.h
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/raster/staging_buffer_pool.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/raster/staging_buffer_pool.h
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/resources/resource_pool.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/resources/resource_pool.h
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/test/fake_picture_layer_tiling_client.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/components/viz/common/display/renderer_settings.h
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/components/viz/host/renderer_settings_creation.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/services/viz/privileged/interfaces/compositing/renderer_settings.mojom
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/services/viz/privileged/interfaces/compositing/renderer_settings_struct_traits.cc
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/services/viz/privileged/interfaces/compositing/renderer_settings_struct_traits.h
[modify] https://crrev.com/c42be6060ef48eef2942de0c6bf6c39852fd860f/services/viz/privileged/interfaces/struct_traits_unittest.cc

Project Member

Comment 54 by bugdroid1@chromium.org, Jan 18 2018

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

commit 4e871d8fb606cb411e2883be013479bddbc37837
Author: danakj <danakj@chromium.org>
Date: Thu Jan 18 21:56:57 2018

Vend resources from ResourcePool with an RAII object.

This RAII object, InUsePoolResource wraps an underlying backing from
the ResourcePool, and verifies at runtime that the object is passed
back to the ResourcePool exactly once to indicate the backing is no
longer in use and release it into the pool again.

The RAII object exposes the backing but requires the caller to know if
they are expecting a software or gpu backing when they ask for it. This
means that TileManager can no longer try to access the backing, and must
always go through the RasterBufferProvider. It was already doing this
mostly, but the API was a bit lazy and leaked the backing info (the
ResourceId) into TileManager in a couple places, so we must resolve
that and make it use InUsePoolResource exclusively.

PictureLayerImpl grabs a ResourceId off the TileDrawInfo as before, but
it is explicitly marked as an id meant for export to the display
compositor, as opposed to a backing that can be written to. For now
the backing is still a ResourceId for both software/gpu and it is
written to via the ResourceProvider locks, but this sets us up to be
able to change that.

R=vmpstr@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I79292834482a8d1a3858d61a8313f14b3221337e
Reviewed-on: https://chromium-review.googlesource.com/868713
Reviewed-by: vmpstr <vmpstr@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#530286}
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/layers/picture_layer_impl.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/layers/picture_layer_impl_unittest.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/bitmap_raster_buffer_provider.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/bitmap_raster_buffer_provider.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/gpu_raster_buffer_provider.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/gpu_raster_buffer_provider.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/one_copy_raster_buffer_provider.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/one_copy_raster_buffer_provider.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/raster_buffer_provider.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/staging_buffer_pool.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/staging_buffer_pool.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/raster/zero_copy_raster_buffer_provider.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/resources/resource_pool.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/resources/resource_pool.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/test/fake_raster_buffer_provider.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/test/fake_raster_buffer_provider.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/tiles/tile.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/tiles/tile_draw_info.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/tiles/tile_draw_info.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/tiles/tile_manager.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/tiles/tile_manager.h
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/4e871d8fb606cb411e2883be013479bddbc37837/cc/trees/layer_tree_host_pixeltest_masks.cc

Project Member

Comment 55 by bugdroid1@chromium.org, Jan 29 2018

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

commit 2477ec97389f184f0e25750b4e2a277ff9189e9d
Author: danakj <danakj@chromium.org>
Date: Mon Jan 29 18:12:43 2018

Don't purge busy resources from ResourcePool

But drop them when they become available if we're in the SUSPENDED
memory state.

Deleting busy resorces doesn't actually free any memory, it just moves
the ownership solely into the ResourceProvider until they become
available. Instead, we can keep them in the busy list, and when
they are available, decide to keep them or not based on the
memory state instead.

This should also improve things by reducing memory footprint in the
SUSPENDED memory state if OnPurgeMemory() isn't being called but
new tile resources are being made and released.

R=ericrk@chromium.org, vmpstr@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I24e1a6f38c88fa278566849174a315bff71ed375
Reviewed-on: https://chromium-review.googlesource.com/886862
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: vmpstr <vmpstr@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532492}
[modify] https://crrev.com/2477ec97389f184f0e25750b4e2a277ff9189e9d/cc/resources/resource_pool.cc
[modify] https://crrev.com/2477ec97389f184f0e25750b4e2a277ff9189e9d/cc/resources/resource_pool.h
[modify] https://crrev.com/2477ec97389f184f0e25750b4e2a277ff9189e9d/cc/resources/resource_pool_unittest.cc

Project Member

Comment 56 by bugdroid1@chromium.org, Jan 29 2018

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

commit 694134e2b295464c965306b2865250cd97173de2
Author: danakj <danakj@chromium.org>
Date: Mon Jan 29 20:15:40 2018

Move ownership of software ResourcePool backings into the pool.

Instead of the ResourcePool making a ResourceId, which the
RasterBufferProvider implementation actualizes into a backing via a
write lock, we have the ResourcePool give out a metadata object,
and the RasterBufferProvider allocates a backing for it directly.

Then, TileManager puts a ResourceId by explicitly asking the
ResourcePool to do so, in order to allow the backing to be exported
to the display compositor.

R=vmpstr@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Idc3b127f819e7154414cb7de9897e5309a22b7bc
Reviewed-on: https://chromium-review.googlesource.com/882101
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: vmpstr <vmpstr@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532566}
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/raster/bitmap_raster_buffer_provider.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/raster/bitmap_raster_buffer_provider.h
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/resources/resource_pool.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/resources/resource_pool.h
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/tiles/tile_manager.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/694134e2b295464c965306b2865250cd97173de2/cc/trees/layer_tree_host_impl.cc

Project Member

Comment 57 by bugdroid1@chromium.org, Jan 29 2018

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

commit 6aea0ad7e72eb80da8eafcfb06dc231d987d5f2f
Author: danakj <danakj@chromium.org>
Date: Mon Jan 29 21:28:59 2018

Add comments for RasterBufferProvider synchronization methods.

Also adds comments explaining the implementation of them in
OneCopyRasterBufferProvider.

R=piman@chromium.org, sunnyps@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I02a762a4208fcd8d317c35c49f40d36425f27126
Reviewed-on: https://chromium-review.googlesource.com/891442
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532594}
[modify] https://crrev.com/6aea0ad7e72eb80da8eafcfb06dc231d987d5f2f/cc/raster/one_copy_raster_buffer_provider.cc
[modify] https://crrev.com/6aea0ad7e72eb80da8eafcfb06dc231d987d5f2f/cc/raster/raster_buffer_provider.h

Project Member

Comment 58 by bugdroid1@chromium.org, Feb 6 2018

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

commit bd63605c0b5cbcd45dd8320143b2d511f3112995
Author: danakj <danakj@chromium.org>
Date: Tue Feb 06 18:28:49 2018

Move ownership of ResourcePool zero-copy resources to buffer provider

This adds a GpuBacking object to PoolResource, which holds ownership
of all the GpuMemoryBuffer-based backing objects. The
ZeroCopyRasterBufferImpl has a subclass with its own specific types
in it, and populates them:
a) When AcquireBufferForRaster is called it creates the GpuBacking
and ensures the sync token is waited on if present.
b) When the RasterBuffer is destroyed, back on the compositor thread,
it binds the GpuMemoryBuffer to a mailbox, and stores those onto the
GpuBacking.

Then ResourcePool can export the GpuBacking by reading the mailbox
of it. And when the resource is destroyed, the GpuBacking cleans
up the ownership of the mailboxed texture and GpuMemoryBuffer.

R=vmpstr@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Iac964108e2ab767239e9968e03f82bc80d6a6e3b
Reviewed-on: https://chromium-review.googlesource.com/888844
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534726}
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/layers/texture_layer_impl.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/layers/texture_layer_unittest.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/raster/zero_copy_raster_buffer_provider.h
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/resources/layer_tree_resource_provider.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/resources/layer_tree_resource_provider_unittest.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/resources/resource_pool.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/resources/resource_pool.h
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/bd63605c0b5cbcd45dd8320143b2d511f3112995/cc/trees/layer_tree_host_impl.cc

Project Member

Comment 59 by bugdroid1@chromium.org, Feb 8 2018

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

commit 2c201ec3f0edf8d50fffd582a31ee4eb42b1713c
Author: danakj <danakj@chromium.org>
Date: Thu Feb 08 18:25:36 2018

Fix flakiness when dumping memory with ZeroCopyRasterBufferProvider

The GpuBacking in a PoolResource is allocated before running the raster
task, but the GpuMemoryBuffer is set on the backing after. If memory
dump happens in between, it would crash trying to read the null
GpuMemoryBuffer. Until the GpuMemoryBuffer is set, we can treat the
memory as not allocated (from the compositor thread's perspective
at the least). So change ResourcePool code to handle this case.

R=vmpstr@chromium.org

Bug: 730660, 810073
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I7b5add1f741c8596432f070e8c6038c69612540c
Reviewed-on: https://chromium-review.googlesource.com/906672
Reviewed-by: vmpstr <vmpstr@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535447}
[modify] https://crrev.com/2c201ec3f0edf8d50fffd582a31ee4eb42b1713c/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/2c201ec3f0edf8d50fffd582a31ee4eb42b1713c/cc/resources/resource_pool.cc
[modify] https://crrev.com/2c201ec3f0edf8d50fffd582a31ee4eb42b1713c/cc/resources/resource_pool.h

Cc: lethalantidote@chromium.org liber...@chromium.org
Project Member

Comment 61 by bugdroid1@chromium.org, Feb 9 2018

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

commit af3170e5f40955165ffea7a5dd0d8032a9e012f5
Author: danakj <danakj@chromium.org>
Date: Fri Feb 09 17:31:58 2018

Move ownership of gpu texture resources to ResourcePool

This makes allocation of resources in OneCopyRasterBufferProvider
and GpuRasterBufferProvider happen directly instead of through
a ResourceProvider lock, and stores ownership of the resources in the
ResourcePool. For each RasterBufferProvider,
a) When AcquireBufferForRaster is called it creates the GpuBacking
and ensures the sync token is waited on if present, and creates a texture
and mailbox.
b) After playback on the worker, a sync token is created.
c) When the RasterBuffer is destroyed, back on the compositor thread,
it stores that sync token into the GpuBacking.

R=sunnyps@chromium.org, vmpstr@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ide0005262435cc4a0925766761221dc8852f0026
Reviewed-on: https://chromium-review.googlesource.com/895806
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535741}
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/gpu_raster_buffer_provider.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/gpu_raster_buffer_provider.h
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/one_copy_raster_buffer_provider.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/one_copy_raster_buffer_provider.h
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/resources/layer_tree_resource_provider.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/resources/layer_tree_resource_provider.h
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/resources/resource_pool.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/resources/resource_pool.h
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/test/fake_raster_buffer_provider.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/tiles/tile_manager.h
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/cc/trees/layer_tree_host_unittest.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/components/viz/common/BUILD.gn
[add] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/components/viz/common/gpu/texture_allocation.cc
[add] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/components/viz/common/gpu/texture_allocation.h
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/components/viz/common/resources/resource_format_utils.cc
[modify] https://crrev.com/af3170e5f40955165ffea7a5dd0d8032a9e012f5/components/viz/common/resources/resource_format_utils.h

Project Member

Comment 62 by bugdroid1@chromium.org, Feb 9 2018

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

commit 737d223066587b0e3be07ac84aafe6eb2733d3f4
Author: danakj <danakj@chromium.org>
Date: Fri Feb 09 20:16:34 2018

Cleaning up ResourcePool TODOs.

This drops some unused method/fields from ResourcePool and consolidates
the constructors to a single one.

R=vmpstr@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I7bd8483d177dde7b3b24a5490d15f3ea03502492
Reviewed-on: https://chromium-review.googlesource.com/895870
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535805}
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/resources/resource_pool.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/resources/resource_pool.h
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/test/fake_picture_layer_tiling_client.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/tiles/tile_manager.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/737d223066587b0e3be07ac84aafe6eb2733d3f4/cc/trees/layer_tree_host_impl.cc

Blockedon: 810925
Blocking: 807840
Project Member

Comment 65 by bugdroid1@chromium.org, Feb 14 2018

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

commit 55243afdd78947ce52c81df834a5b7cc319c633a
Author: danakj <danakj@chromium.org>
Date: Wed Feb 14 20:09:01 2018

cc: Move ownership of resources for the compositor HeadsUpDisplay

This moves ownership of the HUD layer's resources out of the
ResourceProvider to the HUD directly, with its own ResourcePool. Using
a ResourcePool allows the HUD to reuse resources without rolling its
own pool essentially.

The HUD's textures are all dropped on ReleaseResources() which
signals the context was no longer valid. But not released (still) on
ReleaseTileResources(), which signals a change to/from gpu
rasterization. Instead, change the signal to the HUD for using gpu
raster to be based only on the gpu context, and not on the page
content.

R=enne@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I10cd0e786c4b7e98896ee138ecc3c5e5a8756162
Reviewed-on: https://chromium-review.googlesource.com/912112
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#536791}
[modify] https://crrev.com/55243afdd78947ce52c81df834a5b7cc319c633a/cc/layers/heads_up_display_layer_impl.cc
[modify] https://crrev.com/55243afdd78947ce52c81df834a5b7cc319c633a/cc/layers/heads_up_display_layer_impl.h
[modify] https://crrev.com/55243afdd78947ce52c81df834a5b7cc319c633a/cc/layers/heads_up_display_layer_impl_unittest.cc
[modify] https://crrev.com/55243afdd78947ce52c81df834a5b7cc319c633a/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/55243afdd78947ce52c81df834a5b7cc319c633a/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/55243afdd78947ce52c81df834a5b7cc319c633a/cc/trees/layer_tree_impl.h

Project Member

Comment 66 by bugdroid1@chromium.org, Feb 14 2018

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

commit 50fc16efa60869e2f49d5458810694479ed277f6
Author: danakj <danakj@chromium.org>
Date: Wed Feb 14 21:49:48 2018

Don't memory dump PoolResources until they have storage allocated.

It's possible for TileManager to grab a resource from the pool, but
then not use it. Also, until the raster task actually runs, there is
no memory allocated. So don't return a guid until a texture id is
created and storage is allocated for it.

R=ericrk@chromium.org, vmpstr@chromium.org

Bug: 811432,730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I9a33a66746c5c95a6ae9bdc363c784adbeb949bc
Reviewed-on: https://chromium-review.googlesource.com/919313
Reviewed-by: vmpstr <vmpstr@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#536831}
[modify] https://crrev.com/50fc16efa60869e2f49d5458810694479ed277f6/cc/raster/gpu_raster_buffer_provider.cc
[modify] https://crrev.com/50fc16efa60869e2f49d5458810694479ed277f6/cc/raster/one_copy_raster_buffer_provider.cc

Now that we're much further along here, looking over the next steps..

> - WebGL DrawingBuffer / Canvas ImageLayerBridge
> 
> This class also allocates shared memory and ships a dupled handle through the Platform API. However this code is a 
> client of LayerTreeHost, and does not have its own CompositorFrameSink, nor access to LayerTreeHost's (wrong thread).
> 
> I think we can make use of the same system used for LayerTreeHostImpl/LayerTreeResourceProvider. We add an API to 
> cc::LayerTreeHost to report creating/destroying shared memory - and we pass pointer-ownership of the shared memory in 
> there, keeping lifetime-ownership via the SharedBitmapId in the WebGL/Canvas code. It gives the Id up to the 
> LayerTreeHost to free the shared memory.
> 
> LayerTreeHost commits these shared memories over to LayerTreeHostImpl which dupes and passes ownership of a handle 
> through the CompositorFrameSink (and re-does this when CompositorFrameSink is replaced).

There's some problems here. The blink clients do not have a persistent connection to a single LayerTreeHost. They may not be attached to any at some times. They may want to allocate or delete shared memory at those times.

Currently blink clients notify about shm thru RenderThreadImpl which they do have a persistent connection to (through Platform).

Also, a blink client may move between different LTHs over its lifetime, which the TextureLayer would know about, but no new resource need be submitted when it happens.
Some things considered/observed here are:

- We used to care about Shm allocation but that is no longer the case, all Shm allocation can be done anywhere through mojo now. What we care about it pairing a (duped) Shm handle to a SharedBitmapId that the display knows about/owns.

- We can't assume Shm is allocated inside TextureLayerClient::PrepareTransferableResource(), but we /could/ do the shm->id mapping in there. For other clients of TextureLayer that push updates, they would have to do the mapping through TextureLayer.

- We could make this look more like GL, where we have a software "context" that gets lost in blink with a callback when the CFS goes down and that we notify through. basically SharedBitmapAllocationNotifier directly to viz.
- I don't like this because unlike GL where the the display queues things into a command buffer, and can insert waits there, software is done directly. It has to actually wait for the IPCs. Right now we do that in RenderWidgetHostImpl by sitting on compositor frames, but we'd have to build that into the viz CompositorFrameSinkImpl stuff instead.. and delay CompositorFrameSinks from being received. Or activated?

- I'm trying really hard to find a way to put this IPC on CompositorFrameSink so it's in the same channel as the SubmitCompositorFrame calls.

Something like this would allow the client to name the SharedBitmapId to the Shm handle when it had a new handle.

  virtual bool PrepareTransferableResource(
      SharedBitmapIdAllocator* allocator,
      viz::TransferableResource* out_transferable_resource,
      std::unique_ptr<viz::SingleReleaseCallback>* out_release_callback) = 0;

And an accessor on TextureLayer to the same allocator for push clients.

With

class SharedBitmapIdAllocation {
  SharedBitmapId Id();
  ~SharedBitmapIdAllocation() { ... has ptr to CFS to unnotify ... }
};

class SharedBitmapIdAllocator {
  // cc client keeps this allocation alive as long as it wants to use the shm/sharedbitmapid in compositor frames
  SharedBitmapIdAllocation Allocate(base::SharedMemory*) { .. notifies thru the CFS .. }
};

However the SharedBitmapIdAllocation needs to basically be implemented inside TextureLayer, so it can know about the LayerTreeHost changing. And also telling the LayerTreeHost to un-notify the display about the id (to let it delete its shared bitmap handle) when the allocation is destroyed.

The cc client needs to keep the allocation alive for a shm handle until the ReleaseCallback for the shm it sent, and continue to keep it alive if it wants to reuse the shm, or make a new one on the next time it wants a SharedBitmapId for the shm handle in a TransferableResource.

The SharedBitmapIdAllocation is kinda complicated, idk. It's doable, tightly coupled to the TextureLayer which is the place where it is needed.
The other nice thing IMO about putting this onto CompositorFrameSink is it makes things the simplest for the desired path.

Surface clients like video-surfaces, offscreen canvas, and cc, have a CompositorFameSink and can do the simple thing. Notify when they make a shm, and when they delete it. There is no synchronization penalties imposed on them with shared bitmap sequence numbers, and sitting on their compositor frames due to bad IPC scheduling.

This only complicates clients going thru TextureLayer which is the undesirable/deprecated path, with them dancing thru some hoops and pointery helper classes.
Project Member

Comment 70 by bugdroid1@chromium.org, Feb 18 2018

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

commit 96f593847f8811bfe8977f82b1c343880e222300
Author: danakj <danakj@chromium.org>
Date: Sun Feb 18 21:37:25 2018

Fix rebasing in ResourcePool's OnMemoryDump.

This went all wrong, with a branch being duplicated and comments
to variables that no longer exist.

R=ericrk@chromium.org
TBR=ericrk

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Iaf5d331798ed2b4343c57120e558546c40489b63
Reviewed-on: https://chromium-review.googlesource.com/919661
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537567}
[modify] https://crrev.com/96f593847f8811bfe8977f82b1c343880e222300/cc/resources/resource_pool.cc

Project Member

Comment 71 by bugdroid1@chromium.org, Feb 20 2018

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

commit abc59ef67aad37a5e929cb5e98bcfca4890ffb77
Author: danakj <danakj@chromium.org>
Date: Tue Feb 20 20:54:13 2018

Make ResourcePool export the resource format on TransferableResource

This format isn't part of the TransferableResource::MakeFoo() helpers
but is important nonetheless for memory accounting, and would be
important for software resources. For GL the format is known in the
service so it ends up not being used for correctness.

R=ericrk@chromium.org

Bug: 811432, 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ibaacf987cbbdb1cc17ad624325c843aca7ba7230
Reviewed-on: https://chromium-review.googlesource.com/927021
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537874}
[modify] https://crrev.com/abc59ef67aad37a5e929cb5e98bcfca4890ffb77/cc/resources/resource_pool.cc
[modify] https://crrev.com/abc59ef67aad37a5e929cb5e98bcfca4890ffb77/components/viz/common/resources/transferable_resource.h

Project Member

Comment 72 by bugdroid1@chromium.org, Feb 20 2018

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

commit 729d39efe011c30ab04a68905c0d3b1e173224f1
Author: danakj <danakj@chromium.org>
Date: Tue Feb 20 21:18:48 2018

OneCopy resources should not be allocated for framebuffer attachment

The ResourcePool used to be created for OneCopy mode with a kDefault
ResourceTextureHint, rather than kFramebuffer. This was a copy-paste
from GpuRasterBufferProvider, which does want to use textures for
framebuffer attachment.

R=vmpstr@chromium.org

Bug: 811432, 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ibfba07d0f8834ecdd7160d5e80d8e4d5bb544706
Reviewed-on: https://chromium-review.googlesource.com/926723
Reviewed-by: Eric Karl <ericrk@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537883}
[modify] https://crrev.com/729d39efe011c30ab04a68905c0d3b1e173224f1/cc/raster/one_copy_raster_buffer_provider.cc

Project Member

Comment 73 by bugdroid1@chromium.org, Feb 20 2018

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

commit 63c438c49a4f3ff93c58f2ecf955bb18952eae81
Author: danakj <danakj@chromium.org>
Date: Tue Feb 20 23:51:44 2018

Export BufferFormat and fence requirements for zero copy resources

Zero-copy resources use a GpuMemoryBuffer, so they have a BufferFormat
that is determined by the resource format + usage. This format is used
to determine if the resource can be promoted to an overlay or not.

Also, zero-copy resources require a fence to know when they are no
longer in use before trying to write to them in the renderer, when
the resource is reused. This is because they are written to directly
outside of the command stream, so they shouldn't be returned to the
renderer until it is okay for it to do so.

R=ericrk@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I7ac389bf8f3b6f9e5c8a3802e5f7e5fb48872e31
Reviewed-on: https://chromium-review.googlesource.com/927161
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537939}
[modify] https://crrev.com/63c438c49a4f3ff93c58f2ecf955bb18952eae81/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/63c438c49a4f3ff93c58f2ecf955bb18952eae81/cc/resources/resource_pool.cc
[modify] https://crrev.com/63c438c49a4f3ff93c58f2ecf955bb18952eae81/cc/resources/resource_pool.h
[modify] https://crrev.com/63c438c49a4f3ff93c58f2ecf955bb18952eae81/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/63c438c49a4f3ff93c58f2ecf955bb18952eae81/components/viz/common/resources/transferable_resource.h

Project Member

Comment 74 by bugdroid1@chromium.org, Feb 21 2018

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

commit 1c8ab25a7851ba87c989a69874ab9b96b1cc8945
Author: danakj <danakj@chromium.org>
Date: Wed Feb 21 17:58:04 2018

Invalidate resources in ResourcePool when moving to/from gpu raster

Instead of destroying and recreating the ResourcePool (which can drop
resources in-flight to the display compositor), just invalidate any
resources in the pool so they will not be reused.

We only need to recreate the ResourcePool when we have a new context
and ResourceProvider. It used to be the case that the pool held states
related to gpu raster (the texture allocation hint), but it is no
longer the case, so the pool can continue to be used, just not any
resources previously allocated.

R=enne@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I0d58f40501c08984d1380c1f2b572ad56571186c
Reviewed-on: https://chromium-review.googlesource.com/927323
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: enne <enne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538150}
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/resources/resource_pool.cc
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/resources/resource_pool.h
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/test/layer_tree_pixel_resource_test.h
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/test/layer_tree_test.cc
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/test/test_hooks.cc
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/test/test_hooks.h
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/1c8ab25a7851ba87c989a69874ab9b96b1cc8945/cc/trees/layer_tree_host_impl.h

Cc: mlamouri@chromium.org
Project Member

Comment 76 by bugdroid1@chromium.org, Feb 23 2018

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

commit b1c319a39c52519e5516c56ee735a040448a272a
Author: danakj <danakj@chromium.org>
Date: Fri Feb 23 00:10:50 2018

viz: Add mojo to give SharedBitmapId mappings on CompositorFrameSink.

This method is in the same pipe as SubmitCompositorFrame() so that we
can get correct ordering - if a SharedBitmapId is posted, then a
CompositorFrame is submitted, we don't have a race of using the frame
before the bitmap id arrives.

The implementations give the SharedBitmapId to the
ServerSharedBitmapManager. For tests, which have other
SharedBitmapManager types, we have to add these methods to the
SharedBitmapManager interface.

The mojo interface is not used by anything in this CL, but we will
migrate from ClientSharedBitmapManager to this in future CLs.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Iec3a8fe24860f5f2a8090ce4e3c8b4ad3ea3b00c
Reviewed-on: https://chromium-review.googlesource.com/929643
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538631}
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/DEPS
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/test/fake_layer_tree_frame_sink.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/test/fake_layer_tree_frame_sink.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/test/test_shared_bitmap_manager.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/test/test_shared_bitmap_manager.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/trees/layer_tree_frame_sink.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/cc/trees/layer_tree_frame_sink_unittest.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/client/client_layer_tree_frame_sink.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/client/client_layer_tree_frame_sink.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/client/client_shared_bitmap_manager.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/client/client_shared_bitmap_manager.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/common/resources/DEPS
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/common/resources/shared_bitmap_manager.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/display_embedder/server_shared_bitmap_manager.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/display_embedder/server_shared_bitmap_manager_unittest.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/display_embedder/shared_bitmap_allocation_notifier_impl.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/display_embedder/shared_bitmap_allocation_notifier_impl.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/compositor_frame_sink_impl.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/compositor_frame_sink_impl.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/compositor_frame_sink_support.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/test/DEPS
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/test/test_layer_tree_frame_sink.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/components/viz/test/test_layer_tree_frame_sink.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/content/browser/renderer_host/render_widget_host_impl.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/content/renderer/android/synchronous_layer_tree_frame_sink.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/content/renderer/android/synchronous_layer_tree_frame_sink.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/services/ui/ws/compositor_frame_sink_client_binding.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/services/ui/ws/compositor_frame_sink_client_binding.h
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/services/ui/ws/frame_generator_unittest.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/services/viz/public/interfaces/compositing/compositor_frame_sink.mojom
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/third_party/WebKit/Source/platform/graphics/VideoFrameSubmitterTest.cpp
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/ui/aura/local/layer_tree_frame_sink_local.cc
[modify] https://crrev.com/b1c319a39c52519e5516c56ee735a040448a272a/ui/aura/local/layer_tree_frame_sink_local.h

Project Member

Comment 77 by bugdroid1@chromium.org, Feb 23 2018

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

commit d1dd03155abe26c9b1c7bcba580c2b8de406310f
Author: danakj <danakj@chromium.org>
Date: Fri Feb 23 18:13:46 2018

Remove RasterBufferProvider::OrderingBarrier.

Instead, make a SyncToken when generating the gpu::Mailbox for each
(new) resource. If a resource is reused from the ResourcePool, then
no SyncToken will be be generated. Previously we always called
OrderingBarrier and inserted a SyncToken each time we prepared tiles
for raster, even if the resources were reused.

R=sunnyps@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I4bdf5ab00f82fe8a9eed56f5cabc6628c1dffc22
Reviewed-on: https://chromium-review.googlesource.com/909070
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538822}
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/bitmap_raster_buffer_provider.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/bitmap_raster_buffer_provider.h
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/gpu_raster_buffer_provider.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/gpu_raster_buffer_provider.h
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/one_copy_raster_buffer_provider.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/one_copy_raster_buffer_provider.h
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/raster_buffer_provider.h
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/zero_copy_raster_buffer_provider.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/raster/zero_copy_raster_buffer_provider.h
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/test/fake_raster_buffer_provider.cc
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/test/fake_raster_buffer_provider.h
[modify] https://crrev.com/d1dd03155abe26c9b1c7bcba580c2b8de406310f/cc/tiles/tile_manager.cc

Project Member

Comment 78 by bugdroid1@chromium.org, Feb 23 2018

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

commit a721b029b31640e26db86b12f9e5fd149e19aefb
Author: danakj <danakj@chromium.org>
Date: Fri Feb 23 22:11:11 2018

cc: Give ResourcePool a unique tracing id.

There may be more than one ResourcePool in a process, so a unique id
is needed to name each resource in memory dumps. Previously it used the
id on the ResourceProvider which is unique to each layer compositor
instance. But now there are more than one ResourcePool within the same
layer compositor, as the HUD layer can have its own ResourcePool, so
invent a tracing id specifically for ResourcePool.

This also handily removes another dependency on ResourceProvider that
isn't needed for exporting resources to the display compositor.

R=enne@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I09427437427eb2ec1df6a40aa73d9624c004d0a6
Reviewed-on: https://chromium-review.googlesource.com/935423
Reviewed-by: enne <enne@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538916}
[modify] https://crrev.com/a721b029b31640e26db86b12f9e5fd149e19aefb/cc/resources/resource_pool.cc
[modify] https://crrev.com/a721b029b31640e26db86b12f9e5fd149e19aefb/cc/resources/resource_pool.h

Project Member

Comment 79 by bugdroid1@chromium.org, Feb 24 2018

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

commit 512888750425d7bdca95a780bc7b4214ea959556
Author: danakj <danakj@chromium.org>
Date: Sat Feb 24 00:22:28 2018

viz: Remove SharedBitmaps from ServerSharedBitmapManager on disconnect

When a renderer or other viz client shuts down, the CompositorFrameSink
may not have been notified about all the SharedBitmapIds being deleted.
In that case the shared memory would stay in the display compositor's
ServerSharedBitmapManager forever, leaking that memory space. So have
each CompositorFrameSink implementation remember what SharedBitmapIds
it has told the display compositor about, and remove them all when the
implementation is destroyed.

R=kylechar@chromium.org
NOTRY=true

Bug: 730660
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ia1aff6f9035b4713ece787f49ceb1d6c0f839c15
Reviewed-on: https://chromium-review.googlesource.com/929989
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#538957}
[modify] https://crrev.com/512888750425d7bdca95a780bc7b4214ea959556/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
[modify] https://crrev.com/512888750425d7bdca95a780bc7b4214ea959556/components/viz/service/frame_sinks/compositor_frame_sink_support.h
[modify] https://crrev.com/512888750425d7bdca95a780bc7b4214ea959556/components/viz/test/test_layer_tree_frame_sink.cc
[modify] https://crrev.com/512888750425d7bdca95a780bc7b4214ea959556/components/viz/test/test_layer_tree_frame_sink.h
[modify] https://crrev.com/512888750425d7bdca95a780bc7b4214ea959556/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/512888750425d7bdca95a780bc7b4214ea959556/content/browser/renderer_host/render_widget_host_impl.h

Components: -MUS Internals>Services>WindowService
Blocking: -770833 -807840 787097
Blocking: 786067
Project Member

Comment 83 by bugdroid1@chromium.org, Mar 7 2018

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

commit cf8851712041012f32241f38dd960c1d0ad11229
Author: danakj <danakj@chromium.org>
Date: Wed Mar 07 01:37:32 2018

viz: Make SharedBitmap tracing consistent and more clear

Make SharedBitmap return an UnguessableToken as the shared bitmap-based
tracing id, if the SharedBitmap is in fact backed by shared memory for
cross-process use. This means ClientSharedBitmapManager always does
and ServerSharedBitmapManager returns null if the bitmap was allocated
inside the ServerSharedBitmapManager.

In ServerSharedBitmapManager memory dumps, if a bitmap is shared memory
backed, it dumps the |mapped_id()| which is the UnguessableToken.
Otherwise, it dumps the SharedBitmapGUID from the SharedBitmapId.

In ResourceProvider, if the SharedBitmap has an UnguessableToken for
its shared memory backing, it dumps that, else uses the SharedBitmapID
to make a GUID.

In ResourcePool, the same thing is done as ResourceProvider.

Thus, all child-process bitmaps will be dumped via the shared memory
mapped_id() which is an UnguessableToken. And all service-process
bitmaps are dumped via the SharedBitmapGUID.

R=ericrk@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Id4b1c20350a139d36df13743d012756181937c6e
Reviewed-on: https://chromium-review.googlesource.com/935428
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Eric Karl <ericrk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541275}
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/cc/resources/resource_pool.cc
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/cc/resources/resource_provider.cc
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/components/viz/client/client_shared_bitmap_manager.cc
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/components/viz/common/quads/shared_bitmap.h
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/components/viz/service/display_embedder/server_shared_bitmap_manager_unittest.cc
[modify] https://crrev.com/cf8851712041012f32241f38dd960c1d0ad11229/components/viz/test/test_shared_bitmap_manager.cc

Project Member

Comment 84 by bugdroid1@chromium.org, Mar 7 2018

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

commit 1ab62f15e76dffbf3a7de3f2c37ad6008fa06550
Author: danakj <danakj@chromium.org>
Date: Wed Mar 07 18:20:48 2018

cc: Allocate shared mem directly in BitmapRasterBufferProvider

Previously this code used ClientSharedBitmapManager to allocate
shared memory which would report the allocations thru the mojo-based
SharedBitmapAllocationNotifier to the display compositor. But we
want to tell the display compositor on the CompositorFrameSink so it
is in the same channel as SubmitCompositorFrame.

So BitmapRasterBufferProvider now receives a LayerTreeFrameSink
instead of a SharedBitmapManager, does allocation of shared memory
through base+mojo, and reports the allocations and destructions to
the CompositorFrameSink.

The ResourcePool and its resources are all destroyed before the
CompositorFrameSink, so it can hold a raw pointer to the frame sink
in each SoftwareBacking to notify when the shared memory is freed.

This doesn't break the old notification path, and clients of
ClientSharedBitmapManager will still notify their SharedBitmapIds
to the display compositor with SharedBitmapAllocationNotifier, and
with a valid sequence number. However for the
BitmapRasterBufferProvider+ResourcePool, the sequence numbers are
now 0 since they are not needed, as the notification goes to the
same interface as SubmitCompositorFrame and will be well ordered.

Notably, this means that the browser compositor's software
resources will be allocated in shared memory, as the
BitmapRasterBufferProvider and the CompositorFrameSink have
no interface to pass raw pointers to the display. This is required
for the VizDisplayCompositor feature, and as we close the shared
memory fds it shouldn't greatly impact the browser process.

R=kylechar@chromium.org
TBR=sky

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I8354b11344afa58866105e970a0efc9741294b50
Reviewed-on: https://chromium-review.googlesource.com/935266
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541506}
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/layers/heads_up_display_layer_impl.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/layers/heads_up_display_layer_impl.h
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/layers/heads_up_display_layer_impl_unittest.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/raster/bitmap_raster_buffer_provider.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/raster/bitmap_raster_buffer_provider.h
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/resources/resource_pool.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/resources/resource_pool.h
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/test/layer_tree_pixel_resource_test.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/client/client_shared_bitmap_manager.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/common/BUILD.gn
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/common/resources/DEPS
[add] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/common/resources/bitmap_allocation.cc
[add] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/common/resources/bitmap_allocation.h
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/test/test_shared_bitmap_manager.cc
[modify] https://crrev.com/1ab62f15e76dffbf3a7de3f2c37ad6008fa06550/components/viz/test/test_shared_bitmap_manager.h

Project Member

Comment 85 by bugdroid1@chromium.org, Mar 7 2018

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

commit 7cb0b3a36f2bea7a70d86cb923a77a07732a6e24
Author: kylechar <kylechar@chromium.org>
Date: Wed Mar 07 22:19:46 2018

viz: Fix software compositing fallback.

Make VizProcessTransportFactory software fallback work similar to
GpuProcessTransportFactory software fallback. The major change here is
that VizProcessTransportFactory includes the compositing mode in
RootCompositorFrameSinkParams and code is unified.

Delete ForwardingCompositingModeReporterImpl as it's no longer needed.

Bug: 819474, 730660
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I2b6f53b41e4e0ac599fda0e3abeae77cfd69f0a9
Reviewed-on: https://chromium-review.googlesource.com/938329
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541607}
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/host/BUILD.gn
[delete] https://crrev.com/82d6a7b47d69152cf6bd7cbc5985c5891de71a8d/components/viz/host/forwarding_compositing_mode_reporter_impl.cc
[delete] https://crrev.com/82d6a7b47d69152cf6bd7cbc5985c5891de71a8d/components/viz/host/forwarding_compositing_mode_reporter_impl.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/service/display_embedder/display_provider.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/service/display_embedder/gpu_display_provider.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/service/display_embedder/gpu_display_provider.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/service/main/viz_main_impl.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/service/main/viz_main_impl.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/test/test_display_provider.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/components/viz/test/test_display_provider.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/content/browser/browser_main_loop.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/content/browser/browser_main_loop.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/content/browser/compositor/viz_process_transport_factory.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/content/browser/gpu/gpu_process_host.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/content/browser/gpu/gpu_process_host.h
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/services/ui/ws/window_server.cc
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/services/viz/privileged/interfaces/compositing/frame_sink_manager.mojom
[modify] https://crrev.com/7cb0b3a36f2bea7a70d86cb923a77a07732a6e24/services/viz/privileged/interfaces/viz_main.mojom

Project Member

Comment 86 by bugdroid1@chromium.org, Mar 10 2018

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

commit df9e9205a243d3636eacf55f57445601896fcb22
Author: kylechar <kylechar@chromium.org>
Date: Sat Mar 10 02:23:57 2018

Re-order VideoResourceUpdater methods.

The order of methods has gotten pretty messy over the years. Reorder
source file so its free functions, public functions then private
functions and follows the order in header. Also fix header to be more
style guide compliant. No change to any code beyond order and
formatting. This is an initial step before refactoring resource
allocation code.

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I6b36a8119c7c70e6981a24c56562b7e0ac2a504c
Reviewed-on: https://chromium-review.googlesource.com/957556
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542321}
[modify] https://crrev.com/df9e9205a243d3636eacf55f57445601896fcb22/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/df9e9205a243d3636eacf55f57445601896fcb22/cc/resources/video_resource_updater.h

Project Member

Comment 87 by bugdroid1@chromium.org, Mar 16 2018

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

commit 272ecf9b2994dec3d0dee9fae609cd821f5e157f
Author: danakj <danakj@chromium.org>
Date: Fri Mar 16 00:20:01 2018

cc: Move Resource size methods to viz

This moves the ResourceUtil methods and the SharedBitmap methods to
determine bytes from sizes to viz/common so they can be used in viz
code.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I1c12896a3f87f8f577fb4aaf32239aa5a1baecb0
Reviewed-on: https://chromium-review.googlesource.com/954229
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543570}
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/BUILD.gn
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/raster/one_copy_raster_buffer_provider.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/raster/staging_buffer_pool.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/resources/layer_tree_resource_provider.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/resources/resource_pool.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/resources/resource_pool_unittest.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/resources/resource_provider.cc
[delete] https://crrev.com/672d71b45aad7b32830d880159a5c144f777ba39/cc/resources/resource_util.h
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/resources/resource_util_unittest.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/tiles/tile.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/tiles/tile_manager.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/cc/tiles/tile_manager_unittest.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/common/BUILD.gn
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/common/quads/shared_bitmap.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/common/quads/shared_bitmap.h
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/common/resources/DEPS
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/common/resources/bitmap_allocation.cc
[add] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/common/resources/resource_sizes.h
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/service/display_embedder/server_shared_bitmap_manager_unittest.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/components/viz/service/display_embedder/software_output_device_win.cc
[modify] https://crrev.com/272ecf9b2994dec3d0dee9fae609cd821f5e157f/content/renderer/pepper/pepper_graphics_2d_host.cc

We're going to need to add something to make VideoSurfaceUpdater work in two different configurations. 

1. Normal video where LayerTreeFrameSink is used to notify the display compositor about SharedMemory allocations and deletions.
2. UseSurfaceLayerForVideo feature where there is no LayerTreeFrameSink and there is a mojom::CompositorFrameSinkSupport.

Maybe another interface that has DidAllocateSharedBitmap() / DidDeleteSharedBitmap() that LayerTreeFrameSink and something else can extend?
Project Member

Comment 89 by bugdroid1@chromium.org, Mar 19 2018

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

commit 7731912933030a6f905b4c3528b0994655bd37c5
Author: kylechar <kylechar@chromium.org>
Date: Mon Mar 19 19:44:53 2018

Modernize and add comments for VideoResourceUpdater.

This CL improves the code quality in VideoResourceUpdater.
1. Use C++11/14 conventions if possible.
2. Use OnceCallback and use member functions.
2. Delete dead code.
3. Add comments.

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: I6d34839b7b781fa61b3b7c6655f7bba599892755
Reviewed-on: https://chromium-review.googlesource.com/959046
Commit-Queue: kylechar <kylechar@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544131}
[modify] https://crrev.com/7731912933030a6f905b4c3528b0994655bd37c5/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/7731912933030a6f905b4c3528b0994655bd37c5/cc/resources/video_resource_updater.h

Project Member

Comment 90 by bugdroid1@chromium.org, Mar 20 2018

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

commit f77a89225113b8f47f36670265fb9130502170ca
Author: danakj <danakj@chromium.org>
Date: Tue Mar 20 21:02:53 2018

Allocate shared memory/textures directly for UIResources.

Instead of allocating through the ResourceProvider, allocate directly
and store the backing on the UIResourceData in LayerTreeHostImpl. When
deleted, stick them into a deleted_ui_resources_ list awaiting the
display compositor to release them. At that point then free the backing
texture/shared memory.

This notifies SharedBitmapIds to the display compositor through the
LayerTreeFrameSink instead of using SharedBitmapManager and bitmap
sequence numbers.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ib0704e9d9d878a22b8e481f2942ece0ac2a9f7f5
Reviewed-on: https://chromium-review.googlesource.com/953386
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544516}
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/cc/test/fake_ui_resource_layer_tree_host_impl.cc
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/cc/test/fake_ui_resource_layer_tree_host_impl.h
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/cc/trees/layer_tree_host_impl.h
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/components/viz/common/gpu/texture_allocation.cc
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/components/viz/common/gpu/texture_allocation.h
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/components/viz/common/resources/resource_format_utils.cc
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/components/viz/common/resources/resource_format_utils.h
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/ui/gfx/OWNERS
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/ui/gfx/skia_util.cc
[modify] https://crrev.com/f77a89225113b8f47f36670265fb9130502170ca/ui/gfx/skia_util.h

Project Member

Comment 91 by bugdroid1@chromium.org, Mar 22 2018

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

commit df9d6f301f2f79230b215d32ec9b2fe227e849dd
Author: kylechar <kylechar@chromium.org>
Date: Thu Mar 22 20:25:54 2018

Change how VideoResourceUpdater allocates resources.

Change VideoResourceUpdater to not allocates resources via
LayerTreeResourceProvider. The resources are allocated directly and then
imported to LayerTreeResourceProvider.

For software resources SharedBitmapManager is no longer used.
VideoResourceUpdater allocates SharedMemory directly and then notifies
the display compositor via LayerTreeFrameSink. This new system will
work with the VizDisplayCompositor feature.

The new software compositing path doesn't work with the
UseSurfaceLayerForVideo feature. This needs to be fixed eventually, but
software compositing was already broken with UseSurfaceLayerForVideo and
the feature is automatically disabled in that case.

VideoResourceUpdater has the software and GPU compositing paths cleaned
up. Both code paths work roughly the same now which simplifies the logic
slightly.

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I840f5610248d9727c3d998669dd52f34d9cd1058
Reviewed-on: https://chromium-review.googlesource.com/956968
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545223}
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/cc/layers/video_layer_impl.cc
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/cc/resources/video_resource_updater.h
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/cc/resources/video_resource_updater_unittest.cc
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/cc/trees/layer_tree_impl.h
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/components/viz/service/display/renderer_pixeltest.cc
[modify] https://crrev.com/df9d6f301f2f79230b215d32ec9b2fe227e849dd/third_party/WebKit/Source/platform/graphics/VideoFrameResourceProvider.cpp

Project Member

Comment 92 by bugdroid1@chromium.org, Mar 23 2018

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

commit 493ecd31aa357359f421e5464ae3faca1e322a28
Author: danakj <danakj@chromium.org>
Date: Thu Mar 22 23:28:56 2018

viz: Close the SharedMemory in DuplicateAndCloseMappedBitmap()

This was an oversight, and we'll be keeping the shared memory for
each tile in the compositor open with an fd in the renderer without
this.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: I4f7b5d0c7ff9d2c63925a03232b23647a8ce3c2e
Reviewed-on: https://chromium-review.googlesource.com/976650
Reviewed-by: kylechar <kylechar@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545287}
[modify] https://crrev.com/493ecd31aa357359f421e5464ae3faca1e322a28/components/viz/common/resources/bitmap_allocation.cc

Project Member

Comment 93 by bugdroid1@chromium.org, Mar 23 2018

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

commit 3ed7e609c3bfba1ea48d9f0347c9570481f57426
Author: Mostyn Bramley-Moore <mostynb@vewd.com>
Date: Fri Mar 23 11:46:40 2018

[jumbo] avoid g_next_tracing_id collision in video_resource_updater.cc

Followup to https://chromium-review.googlesource.com/c/chromium/src/+/956968

TBR=danakj@chromium.org

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Idbfbf4702784e3af51298c95a2d1e45fd5f54096
Reviewed-on: https://chromium-review.googlesource.com/976882
Reviewed-by: Mostyn Bramley-Moore <mostynb@vewd.com>
Commit-Queue: Mostyn Bramley-Moore <mostynb@vewd.com>
Cr-Commit-Position: refs/heads/master@{#545406}
[modify] https://crrev.com/3ed7e609c3bfba1ea48d9f0347c9570481f57426/cc/resources/video_resource_updater.cc

Project Member

Comment 94 by bugdroid1@chromium.org, Mar 27 2018

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

commit 0d9e184db7646b2ac744260ec9d26c3d2819921e
Author: kylechar <kylechar@chromium.org>
Date: Tue Mar 27 12:49:16 2018

Cleanup VideoResourceUpdaterTests.

1. Consolidate logic to create VideoResourceUpdater into helper
   functions.
2. Improve ResourceType enum readability.
3. Delete dead code.
4. Fix software compositing tests expectations to ensure no new shared
   bitmap allocations.

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I1c4120b511a4e411f2699462eb03d9843a85c0a3
Reviewed-on: https://chromium-review.googlesource.com/977891
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546089}
[modify] https://crrev.com/0d9e184db7646b2ac744260ec9d26c3d2819921e/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/0d9e184db7646b2ac744260ec9d26c3d2819921e/cc/resources/video_resource_updater.h
[modify] https://crrev.com/0d9e184db7646b2ac744260ec9d26c3d2819921e/cc/resources/video_resource_updater_unittest.cc
[modify] https://crrev.com/0d9e184db7646b2ac744260ec9d26c3d2819921e/components/viz/service/display/renderer_pixeltest.cc

Blockedon: 826886
Blockedon: 827242
Blockedon: 827210
Project Member

Comment 98 by bugdroid1@chromium.org, Mar 29 2018

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

commit 92d63896e496e23dcbedacd873fc37b8be8a5df6
Author: danakj <danakj@chromium.org>
Date: Thu Mar 29 23:43:28 2018

cc: Notify SharedBitmapIds through TextureLayer, and use it for WebGL

This adds an interface SharedBitmapIdRegistrar which is implemented by
TextureLayer, and given to the TextureLayerClient directly in
PrepareTransferableResource().

The SharedBitmapIdRegistrar is given mappings from viz::SharedBitmapId
to base::SharedMemory objects. This mapping is kept valid as the
TextureLayer moves between trees, or if the LayerTreeFrameSink changes,
until the returned SharedBitmapIdRegistration is destroyed/assigned to.
In order to maintain the mapping, the base::SharedMemory ownership must
be at least partly held inside the TextureLayer, so this introduces a
lightweight thread-safe ref-counted wrapper around the
base::SharedMemory called CrossThreadSharedBitmap, that is used to give
ownership to the TextureLayer, as well as to keep ownership in the
client until it is no longer using the SharedMemory and any pending
ReleaseCallbacks have fired.

This plumbs the new SharedBitmapIdRegistrar to all clients of
TextureLayer, but most don't touch it, still using the
SharedBitmapManager to create/map their SharedMemory+SharedBitmapIds.

The one client this does convert is WebGL, in the DrawingBuffer class.
The class now holds a cc::CrossThreadSharedBitmap and
cc::SharedBitmapIdRegistration instead of the viz::SharedBitmap it
held previously.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I25e2bc6b819fcab043faa3fc4949a89f5e078307
Reviewed-on: https://chromium-review.googlesource.com/976694
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547024}
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/BUILD.gn
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/layers/texture_layer.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/layers/texture_layer.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/layers/texture_layer_client.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/layers/texture_layer_impl.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/layers/texture_layer_impl.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/layers/texture_layer_unittest.cc
[add] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/resources/cross_thread_shared_bitmap.cc
[add] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/resources/cross_thread_shared_bitmap.h
[add] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/resources/shared_bitmap_id_registrar.cc
[add] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/cc/resources/shared_bitmap_id_registrar.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/components/viz/common/resources/bitmap_allocation.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/components/viz/common/resources/bitmap_allocation.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/components/viz/test/test_layer_tree_frame_sink.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/components/viz/test/test_layer_tree_frame_sink.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/components/viz/test/test_shared_bitmap_manager.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/content/browser/compositor/reflector_impl_unittest.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/content/renderer/pepper/pepper_plugin_instance_impl.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/content/renderer/pepper/pepper_plugin_instance_impl.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/content/shell/test_runner/test_plugin.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/content/shell/test_runner/test_plugin.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/gpu/command_buffer/common/mailbox.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/gpu/command_buffer/common/mailbox.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridgeTest.cpp
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.cpp
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/gpu/DrawingBuffer.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferSoftwareRenderingTest.cpp
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/gpu/DrawingBufferTest.cpp
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.h
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/ui/compositor/layer.cc
[modify] https://crrev.com/92d63896e496e23dcbedacd873fc37b8be8a5df6/ui/compositor/layer.h

Project Member

Comment 99 by bugdroid1@chromium.org, Apr 2 2018

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

commit 61a9f19ac1e21a4fe9dcb1cf84cc2790d2367a58
Author: danakj <danakj@chromium.org>
Date: Mon Apr 02 20:03:58 2018

layout tests: Use SharedBitmapIdRegistrar for TestPlugin.

This uses the new TextureLayer APIs to register SharedBitmapIds instead
of using ClientSharedBitmapManager, in order to get the registration in
the same IPC channel that the compositor uses for submitting frames
that include the TestPlugin's shared memory bitmaps.

The formula used for this change is:
- Change std::unique_ptr<viz::SharedBitmap> to scoped_refptr<cc::CrossThreadSharedBitmap>
- Allocate shm with viz::bitmap_allocation instead of with viz::SharedBitmapManager
- Generate a SharedBitmapId when allocating and register it with SharedBitmapIdRegistrar
- Store ownership of cc::SharedBitmapIdRegistration alongside each cc::CrossThreadSharedBitmap
- Remove forward decls/includes for SharedBitmap and SharedBitmapManager (still need for SharedBitmapId)

However, for TestPlugin a SharedMemory, and thus, a SharedBitmapId, is
only given to the compositor a single time ever, and deleted in the
ReleaseCallback. As well the SharedMemory is allocated earlier than
when it is given to the compositor. So the SharedBitmapId registration
is delated from the allocation step to where the SharedMemory is handed
to the compositor. But since we only use a SharedMemory once, we can
always do the registration there without any conditions.

R=piman@chromium.org

Bug: 730660
Change-Id: Idaf69b854062482f55d359f7542f576be7df1dd4
Reviewed-on: https://chromium-review.googlesource.com/987096
Commit-Queue: Antoine Labour <piman@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547501}
[modify] https://crrev.com/61a9f19ac1e21a4fe9dcb1cf84cc2790d2367a58/content/shell/test_runner/test_plugin.cc
[modify] https://crrev.com/61a9f19ac1e21a4fe9dcb1cf84cc2790d2367a58/content/shell/test_runner/test_plugin.h

Project Member

Comment 100 by bugdroid1@chromium.org, Apr 2 2018

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

commit 623e1c5e152cb642c8ca4599eabe2abb781f39c7
Author: danakj <danakj@chromium.org>
Date: Mon Apr 02 20:15:28 2018

pepper: Use SharedBitmapIdRegistrar for Pepper2d.

This uses the new TextureLayer APIs to register SharedBitmapIds instead
of using ClientSharedBitmapManager, in order to get the registration in
the same IPC channel that the compositor uses for submitting frames
that include the Pepper2d shared memory bitmaps.

The formula used for this change is:
- Change std::unique_ptr<viz::SharedBitmap> to scoped_refptr<cc::CrossThreadSharedBitmap>
- Allocate shm with viz::bitmap_allocation instead of with viz::SharedBitmapManager
- Generate a SharedBitmapId when allocating and register it with SharedBitmapIdRegistrar
- Store ownership of cc::SharedBitmapIdRegistration alongside each cc::CrossThreadSharedBitmap
- Remove forward decls/includes for SharedBitmap and SharedBitmapManager (still need for SharedBitmapId)

R=piman@chromium.org

Bug: 730660
Change-Id: I6018650bde54e966bae07a6621055c9f5eece648
Reviewed-on: https://chromium-review.googlesource.com/986985
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547506}
[modify] https://crrev.com/623e1c5e152cb642c8ca4599eabe2abb781f39c7/content/renderer/pepper/pepper_graphics_2d_host.cc
[modify] https://crrev.com/623e1c5e152cb642c8ca4599eabe2abb781f39c7/content/renderer/pepper/pepper_graphics_2d_host.h
[modify] https://crrev.com/623e1c5e152cb642c8ca4599eabe2abb781f39c7/content/renderer/pepper/pepper_plugin_instance_impl.cc

Project Member

Comment 101 by bugdroid1@chromium.org, Apr 2 2018

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

commit 9429976d3b2bea58a884e9e374178331fbb7b5b7
Author: danakj <danakj@chromium.org>
Date: Mon Apr 02 21:50:58 2018

ui: Disallow software-backed TransferableResources in ui::Layer.

The SetTransferableResource path used to be used for renderer compositor
frames, but those go directly to the display compositor now. Instead it
is used in a couple ChromeOS-specific cases: reflector, and rotation
animation, where ChromeOS takes a screenshot and inserts it into
another ui::Compositor.

Since software resources aren't needed, document this in a comment, and
with a DCHECK, and then no need to add SharedBitmapId registration
code.

R=kylechar@chromium.org

Bug: 730660
Change-Id: I1312c4e58a84431bad1d4c5e23432784ccd206fa
Reviewed-on: https://chromium-review.googlesource.com/987113
Commit-Queue: Antoine Labour <piman@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547531}
[modify] https://crrev.com/9429976d3b2bea58a884e9e374178331fbb7b5b7/ui/compositor/layer.cc
[modify] https://crrev.com/9429976d3b2bea58a884e9e374178331fbb7b5b7/ui/compositor/layer.h

I talked with junov@ and Canvas2DLayerBridge isn't used with software compositing. Hardware compositing is a perquisite for it, so doesn't need to implement the new SharedBitmapRegistrar API for TextureLayerClients.
Project Member

Comment 103 by bugdroid1@chromium.org, Apr 18 2018

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

commit 4c934ee45176cd21a97be327e5e25ca019d16049
Author: kylechar <kylechar@chromium.org>
Date: Wed Apr 18 16:48:29 2018

Use SharedBitmapIdRegistrar with ImageLayerBridge.

This uses the new TextureLayer APIs to register SharedBitmapIds instead
of using ClientSharedBitmapManager, in order to get the registration in
the same IPC channel that the compositor uses for submitting frames
that include the ImageLayerBridge's shared memory bitmaps.

This CL also fixes a bug where bitmap data wasn't properly copied into
shared memory. All rows from the source were copied into the same row of
the destination. This was causing the canvas to appear (almost?) all
black when using software compositing. I've tested the fix with
https://codepen.io/anon/pen/qoeQEE which looks the same using GPU and
software compositing.

Bug: 730660, 831303
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ibf778947a68c5948596f5dd516606937a8c5c442
Reviewed-on: https://chromium-review.googlesource.com/1014380
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: kylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#551718}
[modify] https://crrev.com/4c934ee45176cd21a97be327e5e25ca019d16049/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc
[modify] https://crrev.com/4c934ee45176cd21a97be327e5e25ca019d16049/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.h

Project Member

Comment 104 by bugdroid1@chromium.org, Apr 19 2018

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

commit 7f5968d2dd21d93bbd94b6366d5017582876629a
Author: Saman Sami <samans@chromium.org>
Date: Thu Apr 19 13:13:41 2018

viz: Track latency info when software compositing is enabled

The latency info given to SoftwareOutputSurface::SwapBuffers is
currently ignored. Similar to GlOutputSurface, we should pass the
the latency info to ui::LatencyTracker so it can collect UMA data.
Verified on my workstation that histograms start showing up in
chrome://histograms after this change.

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: If7130c12e4d6804072f05e4115b7e87aee186ff9
Reviewed-on: https://chromium-review.googlesource.com/1017341
Commit-Queue: Saman Sami <samans@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#551996}
[modify] https://crrev.com/7f5968d2dd21d93bbd94b6366d5017582876629a/components/viz/service/display_embedder/software_output_surface.cc
[modify] https://crrev.com/7f5968d2dd21d93bbd94b6366d5017582876629a/components/viz/service/display_embedder/software_output_surface.h

Project Member

Comment 105 by bugdroid1@chromium.org, Apr 19 2018

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

commit 9a61fc0fed553a6c152437a059120c96ea653790
Author: danakj <danakj@chromium.org>
Date: Thu Apr 19 19:08:26 2018

Register SharedMemory through CompositorFrameSink for OffscreenCanavas

This converts from using the SharedBitmapManager, which registers
shared memory through its own parallel channel, to allocating
SharedMemory directly and reporting it to the CompositorFrameSink.

The SharedBitmapManager path was racey with the submission of
CompositorFrames, unless sequence numbers were used (they were not
in this code), and required the display compositor to live in the
browser process.

With this change, OffscreenCanvas will work with viz software
compositing.

R=kylechar@chromium.org

Bug: 730660
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I0daa654112e9834a325754ade37d19325793e01e
Reviewed-on: https://chromium-review.googlesource.com/1017316
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552106}
[modify] https://crrev.com/9a61fc0fed553a6c152437a059120c96ea653790/third_party/blink/renderer/platform/DEPS
[modify] https://crrev.com/9a61fc0fed553a6c152437a059120c96ea653790/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher_impl.cc
[modify] https://crrev.com/9a61fc0fed553a6c152437a059120c96ea653790/third_party/blink/renderer/platform/graphics/offscreen_canvas_frame_dispatcher_impl.h
[modify] https://crrev.com/9a61fc0fed553a6c152437a059120c96ea653790/third_party/blink/renderer/platform/graphics/offscreen_canvas_resource_provider.cc
[modify] https://crrev.com/9a61fc0fed553a6c152437a059120c96ea653790/third_party/blink/renderer/platform/graphics/offscreen_canvas_resource_provider.h

Project Member

Comment 106 by bugdroid1@chromium.org, Apr 19 2018

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

commit c097dc25dd99c4b80f490eba8231f5a212496d3d
Author: danakj <danakj@chromium.org>
Date: Thu Apr 19 19:21:31 2018

Remove most unused plumbing of SharedBitmapManager in renderer

This removes the SharedBitmapManager API from content::RenderThread and
blink::Platform, and plumbing of the type through content and blink.
The class is no longer used for bitmap allocation on these paths, so
it is not needed.

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

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I358328ad9495299462b32a576f3b8a7ca6d50a31
Reviewed-on: https://chromium-review.googlesource.com/1018141
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552113}
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/cc/resources/video_resource_updater.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/public/renderer/render_thread.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/public/test/mock_render_thread.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/public/test/mock_render_thread.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/renderer/media/media_factory.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/renderer/render_thread_impl.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/renderer/renderer_blink_platform_impl.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/renderer/renderer_blink_platform_impl.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/shell/renderer/layout_test/blink_test_runner.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/shell/renderer/layout_test/blink_test_runner.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/shell/test_runner/web_test_delegate.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/test/test_blink_web_unit_test_support.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/content/test/test_blink_web_unit_test_support.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/third_party/blink/public/platform/platform.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/third_party/blink/public/platform/web_video_frame_submitter.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/third_party/blink/renderer/platform/exported/web_video_frame_submitter.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.cc
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.h
[modify] https://crrev.com/c097dc25dd99c4b80f490eba8231f5a212496d3d/third_party/blink/renderer/platform/graphics/video_frame_submitter_test.cc

Project Member

Comment 107 by bugdroid1@chromium.org, Apr 20 2018

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

commit e2c1314045b9ec07100d46c4c4902d0e852cc436
Author: danakj <danakj@chromium.org>
Date: Fri Apr 20 02:14:03 2018

cc: Remove LayerTreeResourceProvider::CreateBitmapResource

For unit tests, replace it with an ImportResource() of some arbitrary
TransferableResource. For pixel tests, use viz::bitmap_allocation to
allocate a bitmap, and SkBitmap::readPixels to populate the SharedMemory
for the resource. Then register the SharedBitmapId with the display
compositor via the SharedBitmapManager directly, and ImportResource() to
make a ResourceId pointing to the SharedBitmapId for use in DrawQuads.

R=piman@chromium.org

Bug: 730660, 738190
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I143996712ee6477634d728a767f9095b5be8d74c
Reviewed-on: https://chromium-review.googlesource.com/1020226
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552232}
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/cc/resources/layer_tree_resource_provider.cc
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/cc/resources/layer_tree_resource_provider.h
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/cc/resources/layer_tree_resource_provider_unittest.cc
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/cc/test/pixel_test.cc
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/cc/test/pixel_test.h
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/components/viz/service/display/renderer_pixeltest.cc
[modify] https://crrev.com/e2c1314045b9ec07100d46c4c4902d0e852cc436/components/viz/service/display/software_renderer_unittest.cc

Project Member

Comment 108 by bugdroid1@chromium.org, Apr 20 2018

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

commit e338d465398f6fa356032b4e1cd047071486f93e
Author: danakj <danakj@chromium.org>
Date: Fri Apr 20 17:30:52 2018

cc: Remove SharedBitmapManager plumbing from cc.

Add an instance of SharedBitmapManager for the display compositor on
TestLayerTreeFrameSink. Remove all plumbing into cc for the
SharedBitmapManager.

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

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Iafdb85431051d51d70960390201c7d9d0a0a9c93
Reviewed-on: https://chromium-review.googlesource.com/1020369
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552367}
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/layers/texture_layer_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/raster/raster_buffer_provider_perftest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/raster/raster_buffer_provider_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/resources/display_resource_provider_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/resources/layer_tree_resource_provider.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/resources/layer_tree_resource_provider.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/resources/layer_tree_resource_provider_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/resources/resource_provider_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/resources/video_resource_updater_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/fake_layer_tree_frame_sink.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/fake_layer_tree_frame_sink.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/fake_resource_provider.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/layer_tree_pixel_test.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/layer_tree_test.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/layer_tree_test.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/test/pixel_test.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/tiles/picture_layer_tiling_set_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_frame_sink.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_frame_sink.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_frame_sink_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_host_perftest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_host_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_host_unittest_context.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/cc/trees/layer_tree_impl.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/client/client_layer_tree_frame_sink.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/client/client_layer_tree_frame_sink.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/service/display/gl_renderer_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/service/display/overlay_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/service/display/software_renderer_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/service/frame_sinks/direct_layer_tree_frame_sink_unittest.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/test/test_layer_tree_frame_sink.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/components/viz/test/test_layer_tree_frame_sink.h
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/content/browser/compositor/viz_process_transport_factory.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/content/browser/renderer_host/compositor_impl_android.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/content/renderer/android/synchronous_layer_tree_frame_sink.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/content/test/layouttest_support.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/third_party/blink/renderer/platform/graphics/video_frame_resource_provider.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/ui/aura/local/layer_tree_frame_sink_local.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/ui/aura/test/aura_test_context_factory.cc
[modify] https://crrev.com/e338d465398f6fa356032b4e1cd047071486f93e/ui/compositor/test/in_process_context_factory.cc

Project Member

Comment 109 by bugdroid1@chromium.org, Apr 20 2018

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

commit 9f746624b53296e9d5b967ce74e3604093226ad0
Author: danakj <danakj@chromium.org>
Date: Fri Apr 20 18:39:22 2018

Register SharedBitmapIds through TextureLayer for PepperCompositorHost

Replace usage of SharedBitmapManager with instead registering the
SharedMemory and SharedBitmapId through the TextureLayer that they
will be presented on. This gets the registration to go through the
CompositorFrameSink which is compatable with the VizDisplayCompositor.

R=piman@chromium.org

Bug: 730660
Change-Id: I55f915eb00082ba527a440956e93cbf46acf7ce6
Reviewed-on: https://chromium-review.googlesource.com/1021838
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552407}
[modify] https://crrev.com/9f746624b53296e9d5b967ce74e3604093226ad0/content/renderer/pepper/pepper_compositor_host.cc
[modify] https://crrev.com/9f746624b53296e9d5b967ce74e3604093226ad0/content/renderer/pepper/pepper_compositor_host.h

Project Member

Comment 110 by bugdroid1@chromium.org, Apr 20 2018

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

commit 428a186027aa31e414d1fe7f0ef9b6c99085e103
Author: danakj <danakj@chromium.org>
Date: Fri Apr 20 23:19:00 2018

Remove client-side APIs for SharedBitmapManager

SharedBitmapManager is now a service-side only concept, so remove all
client-side APIs. This includes the ClientSharedBitmapManager, the
SharedBitmapAllocationNotifier mojo and c++ APIs, and the allocation
method (and impls) in {Server,Test}SharedBitmapManager.

Also removes the instance and bindings for these things from the
renderer process in RenderThreadImpl, and the service-side connections
in RenderProcessHost{Impl}.

R=piman@chromium.org
TBR=groby

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ia976eb0e2a805c8e00803291214d346423315914
Reviewed-on: https://chromium-review.googlesource.com/1022180
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552516}
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/cc/layers/texture_layer_unittest.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/cc/resources/display_resource_provider_unittest.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/cc/resources/resource_provider_unittest.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/chrome/browser/spellchecker/spellcheck_service_browsertest.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/client/BUILD.gn
[delete] https://crrev.com/0adfd8cbc6dbe003fb2aa8bfce99298e749c7911/components/viz/client/client_shared_bitmap_manager.cc
[delete] https://crrev.com/0adfd8cbc6dbe003fb2aa8bfce99298e749c7911/components/viz/client/client_shared_bitmap_manager.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/common/resources/shared_bitmap_manager.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/service/BUILD.gn
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/service/display_embedder/server_shared_bitmap_manager.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/service/display_embedder/server_shared_bitmap_manager_unittest.cc
[delete] https://crrev.com/0adfd8cbc6dbe003fb2aa8bfce99298e749c7911/components/viz/service/display_embedder/shared_bitmap_allocation_notifier_impl.cc
[delete] https://crrev.com/0adfd8cbc6dbe003fb2aa8bfce99298e749c7911/components/viz/service/display_embedder/shared_bitmap_allocation_notifier_impl.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/test/test_shared_bitmap_manager.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/components/viz/test/test_shared_bitmap_manager.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/browser/renderer_host/render_process_host_impl.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/browser/renderer_host/render_process_host_impl.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/browser/renderer_host/render_widget_host_impl.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/public/app/mojo/content_browser_manifest.json
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/public/browser/render_process_host.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/public/test/mock_render_process_host.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/public/test/mock_render_process_host.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/renderer/pepper/pepper_compositor_host.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/renderer/render_thread_impl.cc
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/content/renderer/render_thread_impl.h
[modify] https://crrev.com/428a186027aa31e414d1fe7f0ef9b6c99085e103/services/viz/public/interfaces/BUILD.gn
[delete] https://crrev.com/0adfd8cbc6dbe003fb2aa8bfce99298e749c7911/services/viz/public/interfaces/compositing/shared_bitmap_allocation_notifier.mojom

Blockedon: 826633
Blockedon: 835906
Blockedon: 835922
Project Member

Comment 114 by bugdroid1@chromium.org, Apr 23 2018

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

commit db77408740a478b9553f49ee85470b0fb65906d9
Author: danakj <danakj@chromium.org>
Date: Mon Apr 23 19:15:07 2018

viz: Remove sequence numbers from TransferableResource.

These numbers are no longer used as SharedBitmapId registration happens
in the same mojo ipc stream as CompositorFrameSubmission. So they don't
need to exist anymore.

R=kenrb@chromium.org, pdr@chromium.org, piman@chromium.org

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I12fcb70963cfaeebc5ae439ab3eb74dab1486bcd
Reviewed-on: https://chromium-review.googlesource.com/1022294
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552784}
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/ipc/cc_param_traits_macros.h
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/layers/texture_layer_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/resources/display_resource_provider_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/resources/layer_tree_resource_provider_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/resources/resource_pool.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/resources/resource_provider_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/resources/video_resource_updater.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/test/pixel_test.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/components/viz/common/resources/transferable_resource.h
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/components/viz/service/display/renderer_pixeltest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/components/viz/service/display/software_renderer_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/content/renderer/pepper/pepper_compositor_host.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/content/renderer/pepper/pepper_graphics_2d_host.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/content/shell/test_runner/test_plugin.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/services/viz/public/cpp/compositing/struct_traits_unittest.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/services/viz/public/cpp/compositing/transferable_resource_struct_traits.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/services/viz/public/cpp/compositing/transferable_resource_struct_traits.h
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/services/viz/public/interfaces/compositing/transferable_resource.mojom
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
[modify] https://crrev.com/db77408740a478b9553f49ee85470b0fb65906d9/third_party/blink/renderer/platform/graphics/gpu/image_layer_bridge.cc

Blocking: -794961
Project Member

Comment 116 by bugdroid1@chromium.org, May 5 2018

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

commit acc082799b19bdda6fd257f96cefd662fddccdab
Author: Christopher Cameron <ccameron@chromium.org>
Date: Sat May 05 15:08:37 2018

viz/mac: Enable software compositing

There exists plumbing to send gfx::CALayerParams (the parameters for
displaying content on macOS) from the viz::Display to the browser
process via that viz::DisplayClient interface.

In GPU compositing, this comes in via viz::Display's implementation of
viz::OutputSurfaceClient::DidReceiveCALayerParams.

Make viz::Display also implement a new interface,
viz::SoftwareOutputDeviceClient, and add a method to this interface,
SoftwareDeviceUpdatedCALayerParams, which the SoftwareOutputDeviceMac
calls when a frame is drawn. Route this to the same paths that the
GPU compositing path takes to send it to the browser process.

Delete the now-unneeded gfx::AcceleratedWidgetMac interfaces in
SoftwareOutputDeviceMac.

Bug: 730660, 772576
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: I03a21c5b1c1e5333aec94b5a0d1e88811fbbaf34
Reviewed-on: https://chromium-review.googlesource.com/1042312
Reviewed-by: kylechar <kylechar@chromium.org>
Commit-Queue: ccameron <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556332}
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display/display.cc
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display/display.h
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display/software_output_device.cc
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display/software_output_device.h
[add] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display/software_output_device_client.h
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display_embedder/gpu_display_provider.cc
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display_embedder/software_output_device_mac.cc
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display_embedder/software_output_device_mac.h
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/components/viz/service/display_embedder/software_output_device_mac_unittest.mm
[modify] https://crrev.com/acc082799b19bdda6fd257f96cefd662fddccdab/content/browser/compositor/gpu_process_transport_factory.cc

Project Member

Comment 117 by bugdroid1@chromium.org, May 31 2018

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

commit 7167a9eac9d0f32675540f8ba623c601538c413e
Author: danakj <danakj@chromium.org>
Date: Thu May 31 15:25:10 2018

viz: Remove the global ServerSharedBitmapManager.

This moves ownership of the ServerSharedBitmapManager from a global
variable accessed thru a static current() method, to be a member on
BrowserMainLoop. This way random files can't instantiate a
ServerSharedBitmapManager by calling a static method, when there
should not even be one in the browser process with --enable-viz.

A SharedBitmapManager* is given to the FrameSinkManagerImpl which
always lives in the viz service process. The CompositorFrameSink
implementations can grab the pointer from there in order to
register software compositing bitmaps with the manager.

R=kylechar@chromium.org, piman@chromium.org
NOTRY=true

Bug: 730660, 722935
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I4c5be0a22ecef9d98012104b8e46678e8cd76617
Reviewed-on: https://chromium-review.googlesource.com/802574
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Bo <boliu@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563241}
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/android_webview/browser/surfaces_instance.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/client/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/common/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/host/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/host/host_frame_sink_manager_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display/display_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display/surface_aggregator_perftest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display/surface_aggregator_pixeltest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display/surface_aggregator_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display_embedder/gpu_display_provider.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display_embedder/gpu_display_provider.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/display_embedder/server_shared_bitmap_manager.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/compositor_frame_sink_support.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/compositor_frame_sink_support_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/direct_layer_tree_frame_sink_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/frame_sink_manager_impl.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/frame_sink_manager_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/surface_references_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/surface_synchronization_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/frame_sinks/video_detector_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/hit_test/hit_test_aggregator_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/hit_test/hit_test_manager_fuzzer.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/main/viz_main_impl.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/main/viz_main_impl.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/surfaces/surface_hittest_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/service/surfaces/surface_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/components/viz/test/test_layer_tree_frame_sink.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/browser_main_loop.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/browser_main_loop.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/compositor/gpu_process_transport_factory.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/compositor/gpu_process_transport_factory.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/compositor/test/test_image_transport_factory.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/compositor/test/test_image_transport_factory.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/renderer_host/compositor_impl_android.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/renderer_host/embedded_frame_sink_provider_impl_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/browser/renderer_host/render_widget_host_impl.h
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/content/renderer/android/synchronous_layer_tree_frame_sink.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/third_party/blink/renderer/platform/graphics/offscreen_canvas_resource_provider.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/android/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/android/delegated_frame_host_android_unittest.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/aura/BUILD.gn
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/aura/demo/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/aura/demo/demo_main.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/compositor/test/context_factories_for_test.cc
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/views/examples/BUILD.gn
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/views/examples/DEPS
[modify] https://crrev.com/7167a9eac9d0f32675540f8ba623c601538c413e/ui/views/examples/examples_main.cc

Project Member

Comment 118 by bugdroid1@chromium.org, May 31 2018

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

commit eef1642efc2494c74ae177de5d858e0ddc3e72f2
Author: danakj <danakj@chromium.org>
Date: Thu May 31 15:32:51 2018

viz: Remove thread-safety from ServerSharedBitmapManager

Auditing ServerSharedBitmapManager thread usage:

GetSharedBitmapFromId() called by:
- DisplayResourceProvider::LockForRead
  - GLRenderer, SkiaRenderer, SoftwareRenderer (non-viz: UI, viz:
    Compositor)

ChildAllocatedSharedBitmap() called by:
- CompositorFrameSinkSupport::DidAllocateSharedBitmap (non-viz: UI,
  viz: Compositor)
- RenderWidgetHostImpl::DidAllocateSharedBitmap (non-viz: UI, viz:
  Compositor)

ChildDeletedSharedBitmap() called by:
- ~CompositorFrameSinkSupport (non-viz: UI, viz: Compositor)
- CompositorFrameSinkSupport::DidDeleteSharedBitmap (non-viz: UI,
  viz: Compositor)
- RenderWidgetHostImpl::Destroy (non-viz: UI, viz: Compositor)
- RenderWidgetHostImpl::DidDeleteSharedBitmap (non-viz: UI, viz:
  Compositor)

AllocatedBitmapCount() is dead.
FreeSharedMemoryFromMap() is dead.
ChildAllocatedSharedBitmapForTest() is dead.

BitmapData is thread-safe ref counted. It is returned by
GetSharedBitmapFromId() and stored in DisplayResourceProvider, which
is only used on (non-viz: UI, viz: Compositor) threads. So the
BitmapData will be destroyed on those threads.

The |lock_| was added in 82b5c2391ca0b3487394a2a15dc9eb97ea977c93 which
claims bitmaps can be queried or deleted from the FILE and IO threads.
This was when we had RenderMessageFilter::OnDeletedSharedBitmap() to
report SharedBitmapIds to the browser. Now they go through
CompositorFrameSink mojom to the UI thread.

Also change BitmapData from RefCountedThreadSafe to RefCounted, since
they are created, used, and destroyed by the DisplayResourceProvider
which lives on one thread.

Update the comment description of the class, as it is very out of date
now, and ServerSharedBitmapManager is only used to find existing
SharedBitmapIds, not to allocate them.

R=piman@chromium.org

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I360e7868edf6f79990c56918a78321440fd3ee36
Reviewed-on: https://chromium-review.googlesource.com/1077671
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563248}
[modify] https://crrev.com/eef1642efc2494c74ae177de5d858e0ddc3e72f2/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/eef1642efc2494c74ae177de5d858e0ddc3e72f2/components/viz/service/display_embedder/server_shared_bitmap_manager.h
[modify] https://crrev.com/eef1642efc2494c74ae177de5d858e0ddc3e72f2/content/browser/browser_main_loop.cc

Project Member

Comment 119 by bugdroid1@chromium.org, May 31 2018

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

commit e85c440e400d622c506c40fbee7a358e88fb42f5
Author: danakj <danakj@chromium.org>
Date: Thu May 31 15:44:00 2018

Revert "viz: Remove thread-safety from ServerSharedBitmapManager"

This reverts commit eef1642efc2494c74ae177de5d858e0ddc3e72f2.

Reason for revert: Compile failure.

Original change's description:
> viz: Remove thread-safety from ServerSharedBitmapManager
> 
> Auditing ServerSharedBitmapManager thread usage:
> 
> GetSharedBitmapFromId() called by:
> - DisplayResourceProvider::LockForRead
>   - GLRenderer, SkiaRenderer, SoftwareRenderer (non-viz: UI, viz:
>     Compositor)
> 
> ChildAllocatedSharedBitmap() called by:
> - CompositorFrameSinkSupport::DidAllocateSharedBitmap (non-viz: UI,
>   viz: Compositor)
> - RenderWidgetHostImpl::DidAllocateSharedBitmap (non-viz: UI, viz:
>   Compositor)
> 
> ChildDeletedSharedBitmap() called by:
> - ~CompositorFrameSinkSupport (non-viz: UI, viz: Compositor)
> - CompositorFrameSinkSupport::DidDeleteSharedBitmap (non-viz: UI,
>   viz: Compositor)
> - RenderWidgetHostImpl::Destroy (non-viz: UI, viz: Compositor)
> - RenderWidgetHostImpl::DidDeleteSharedBitmap (non-viz: UI, viz:
>   Compositor)
> 
> AllocatedBitmapCount() is dead.
> FreeSharedMemoryFromMap() is dead.
> ChildAllocatedSharedBitmapForTest() is dead.
> 
> BitmapData is thread-safe ref counted. It is returned by
> GetSharedBitmapFromId() and stored in DisplayResourceProvider, which
> is only used on (non-viz: UI, viz: Compositor) threads. So the
> BitmapData will be destroyed on those threads.
> 
> The |lock_| was added in 82b5c2391ca0b3487394a2a15dc9eb97ea977c93 which
> claims bitmaps can be queried or deleted from the FILE and IO threads.
> This was when we had RenderMessageFilter::OnDeletedSharedBitmap() to
> report SharedBitmapIds to the browser. Now they go through
> CompositorFrameSink mojom to the UI thread.
> 
> Also change BitmapData from RefCountedThreadSafe to RefCounted, since
> they are created, used, and destroyed by the DisplayResourceProvider
> which lives on one thread.
> 
> Update the comment description of the class, as it is very out of date
> now, and ServerSharedBitmapManager is only used to find existing
> SharedBitmapIds, not to allocate them.
> 
> R=​piman@chromium.org
> 
> Bug: 730660
> Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
> Change-Id: I360e7868edf6f79990c56918a78321440fd3ee36
> Reviewed-on: https://chromium-review.googlesource.com/1077671
> Commit-Queue: danakj <danakj@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#563248}

TBR=danakj@chromium.org,piman@chromium.org

Change-Id: I2dd3f897ca0fb1ef78dea1c36b6debb84ba8d99f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Reviewed-on: https://chromium-review.googlesource.com/1079737
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563251}
[modify] https://crrev.com/e85c440e400d622c506c40fbee7a358e88fb42f5/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/e85c440e400d622c506c40fbee7a358e88fb42f5/components/viz/service/display_embedder/server_shared_bitmap_manager.h
[modify] https://crrev.com/e85c440e400d622c506c40fbee7a358e88fb42f5/content/browser/browser_main_loop.cc

Project Member

Comment 120 by bugdroid1@chromium.org, May 31 2018

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

commit cc330d05185e97c68f6c717e43b5f126c341aab6
Author: danakj <danakj@chromium.org>
Date: Thu May 31 19:27:44 2018

Reland "viz: Remove thread-safety from ServerSharedBitmapManager"

This is a reland of eef1642efc2494c74ae177de5d858e0ddc3e72f2

TBR=piman

Original change's description:
> viz: Remove thread-safety from ServerSharedBitmapManager
>
> Auditing ServerSharedBitmapManager thread usage:
>
> GetSharedBitmapFromId() called by:
> - DisplayResourceProvider::LockForRead
>   - GLRenderer, SkiaRenderer, SoftwareRenderer (non-viz: UI, viz:
>     Compositor)
>
> ChildAllocatedSharedBitmap() called by:
> - CompositorFrameSinkSupport::DidAllocateSharedBitmap (non-viz: UI,
>   viz: Compositor)
> - RenderWidgetHostImpl::DidAllocateSharedBitmap (non-viz: UI, viz:
>   Compositor)
>
> ChildDeletedSharedBitmap() called by:
> - ~CompositorFrameSinkSupport (non-viz: UI, viz: Compositor)
> - CompositorFrameSinkSupport::DidDeleteSharedBitmap (non-viz: UI,
>   viz: Compositor)
> - RenderWidgetHostImpl::Destroy (non-viz: UI, viz: Compositor)
> - RenderWidgetHostImpl::DidDeleteSharedBitmap (non-viz: UI, viz:
>   Compositor)
>
> AllocatedBitmapCount() is dead.
> FreeSharedMemoryFromMap() is dead.
> ChildAllocatedSharedBitmapForTest() is dead.
>
> BitmapData is thread-safe ref counted. It is returned by
> GetSharedBitmapFromId() and stored in DisplayResourceProvider, which
> is only used on (non-viz: UI, viz: Compositor) threads. So the
> BitmapData will be destroyed on those threads.
>
> The |lock_| was added in 82b5c2391ca0b3487394a2a15dc9eb97ea977c93 which
> claims bitmaps can be queried or deleted from the FILE and IO threads.
> This was when we had RenderMessageFilter::OnDeletedSharedBitmap() to
> report SharedBitmapIds to the browser. Now they go through
> CompositorFrameSink mojom to the UI thread.
>
> Also change BitmapData from RefCountedThreadSafe to RefCounted, since
> they are created, used, and destroyed by the DisplayResourceProvider
> which lives on one thread.
>
> Update the comment description of the class, as it is very out of date
> now, and ServerSharedBitmapManager is only used to find existing
> SharedBitmapIds, not to allocate them.
>
> R=piman@chromium.org
>
> Bug: 730660
> Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
> Change-Id: I360e7868edf6f79990c56918a78321440fd3ee36
> Reviewed-on: https://chromium-review.googlesource.com/1077671
> Commit-Queue: danakj <danakj@chromium.org>
> Reviewed-by: Antoine Labour <piman@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#563248}

Bug: 730660
Change-Id: I665f323c52db6cd7957e62507e74b8af0d2e0628
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Reviewed-on: https://chromium-review.googlesource.com/1079738
Reviewed-by: danakj <danakj@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563346}
[modify] https://crrev.com/cc330d05185e97c68f6c717e43b5f126c341aab6/components/viz/service/display_embedder/server_shared_bitmap_manager.cc
[modify] https://crrev.com/cc330d05185e97c68f6c717e43b5f126c341aab6/components/viz/service/display_embedder/server_shared_bitmap_manager.h
[modify] https://crrev.com/cc330d05185e97c68f6c717e43b5f126c341aab6/content/browser/browser_main_loop.cc

Project Member

Comment 121 by bugdroid1@chromium.org, Jun 1 2018

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

commit 1529f944ce4c3c2895b2826d4e8be9249f257694
Author: danakj <danakj@chromium.org>
Date: Fri Jun 01 00:02:37 2018

viz: Remove thread-safety from TestSharedBitmapManager

Similar to https://chromium-review.googlesource.com/c/chromium/src/+/1077671
the TestSharedBitmapManager is not used from multiple threads. Also adds
a SequenceChecker to the class.

TestLayerTreeFrameSink then needs to make the TestSharedBitmapManager and
destroy it on the thread where it will be used.

R=piman@chromium.org
NOTRY=true

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I516942cb8331444953b1837e31c5be974203e118
Reviewed-on: https://chromium-review.googlesource.com/1079148
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563445}
[modify] https://crrev.com/1529f944ce4c3c2895b2826d4e8be9249f257694/components/viz/test/test_layer_tree_frame_sink.cc
[modify] https://crrev.com/1529f944ce4c3c2895b2826d4e8be9249f257694/components/viz/test/test_layer_tree_frame_sink.h
[modify] https://crrev.com/1529f944ce4c3c2895b2826d4e8be9249f257694/components/viz/test/test_shared_bitmap_manager.cc
[modify] https://crrev.com/1529f944ce4c3c2895b2826d4e8be9249f257694/components/viz/test/test_shared_bitmap_manager.h

Project Member

Comment 122 by bugdroid1@chromium.org, Jun 13 2018

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

commit f77f6b8dba2776e23111c84c5d9333dbb03039fe
Author: kylechar <kylechar@chromium.org>
Date: Wed Jun 13 20:29:11 2018

Fix UseSurfaceLayerForVideo GPU crash handling.

When UseSurfaceLayerForVideo and VizDisplayCompositors are both enabled
with software compositing, VideoFrameSubmitter doesn't detect and
recover from GPU process crashes. Add a connection error handler on the
mojom::CompositorFrameSinkPtr to handle this case.

Bug: 730660
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ie364610bc61de3cdb3a18ce62f23e0fa217219df
Reviewed-on: https://chromium-review.googlesource.com/1099475
Commit-Queue: kylechar <kylechar@chromium.org>
Reviewed-by: danakj <danakj@chromium.org>
Reviewed-by: Jeremy Roman <jbroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566971}
[modify] https://crrev.com/f77f6b8dba2776e23111c84c5d9333dbb03039fe/third_party/blink/renderer/platform/graphics/video_frame_submitter.cc

Owner: kylec...@chromium.org
=> kylechar to triage the remaining 2 blockers
Blockedon: -835922
Owner: danakj@chromium.org
Status: Fixed (was: Started)
This is all done.
Showing comments 26 - 125 of 125 Older

Sign in to add a comment