| Index: cc/surfaces/surface_display_output_surface.cc
|
| diff --git a/cc/surfaces/surface_display_output_surface.cc b/cc/surfaces/surface_display_output_surface.cc
|
| deleted file mode 100644
|
| index d1bb3cdf7398ecd60d88d781f75c32efe96723c5..0000000000000000000000000000000000000000
|
| --- a/cc/surfaces/surface_display_output_surface.cc
|
| +++ /dev/null
|
| @@ -1,169 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "cc/surfaces/surface_display_output_surface.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "cc/output/compositor_frame.h"
|
| -#include "cc/surfaces/display.h"
|
| -#include "cc/surfaces/surface.h"
|
| -#include "cc/surfaces/surface_id_allocator.h"
|
| -#include "cc/surfaces/surface_manager.h"
|
| -
|
| -namespace cc {
|
| -
|
| -SurfaceDisplayOutputSurface::SurfaceDisplayOutputSurface(
|
| - SurfaceManager* surface_manager,
|
| - SurfaceIdAllocator* surface_id_allocator,
|
| - Display* display,
|
| - scoped_refptr<ContextProvider> context_provider,
|
| - scoped_refptr<ContextProvider> worker_context_provider)
|
| - : OutputSurface(std::move(context_provider),
|
| - std::move(worker_context_provider),
|
| - nullptr),
|
| - surface_manager_(surface_manager),
|
| - surface_id_allocator_(surface_id_allocator),
|
| - display_(display),
|
| - factory_(surface_manager, this) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - capabilities_.delegated_rendering = true;
|
| - capabilities_.adjust_deadline_for_parent = true;
|
| - capabilities_.can_force_reclaim_resources = true;
|
| -
|
| - // Display and SurfaceDisplayOutputSurface share a GL context, so sync
|
| - // points aren't needed when passing resources between them.
|
| - capabilities_.delegated_sync_points_required = false;
|
| - factory_.set_needs_sync_points(false);
|
| -}
|
| -
|
| -SurfaceDisplayOutputSurface::SurfaceDisplayOutputSurface(
|
| - SurfaceManager* surface_manager,
|
| - SurfaceIdAllocator* surface_id_allocator,
|
| - Display* display,
|
| - scoped_refptr<VulkanContextProvider> vulkan_context_provider)
|
| - : OutputSurface(std::move(vulkan_context_provider)),
|
| - surface_manager_(surface_manager),
|
| - surface_id_allocator_(surface_id_allocator),
|
| - display_(display),
|
| - factory_(surface_manager, this) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - capabilities_.delegated_rendering = true;
|
| - capabilities_.adjust_deadline_for_parent = true;
|
| - capabilities_.can_force_reclaim_resources = true;
|
| -}
|
| -
|
| -SurfaceDisplayOutputSurface::~SurfaceDisplayOutputSurface() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - if (HasClient())
|
| - DetachFromClient();
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::SwapBuffers(CompositorFrame frame) {
|
| - gfx::Size frame_size =
|
| - frame.delegated_frame_data->render_pass_list.back()->output_rect.size();
|
| - if (frame_size.IsEmpty() || frame_size != last_swap_frame_size_) {
|
| - if (!delegated_surface_id_.is_null()) {
|
| - factory_.Destroy(delegated_surface_id_);
|
| - }
|
| - delegated_surface_id_ = surface_id_allocator_->GenerateId();
|
| - factory_.Create(delegated_surface_id_);
|
| - last_swap_frame_size_ = frame_size;
|
| - }
|
| - display_->SetSurfaceId(delegated_surface_id_,
|
| - frame.metadata.device_scale_factor);
|
| -
|
| - factory_.SubmitCompositorFrame(
|
| - delegated_surface_id_, std::move(frame),
|
| - base::Bind(&SurfaceDisplayOutputSurface::DidDrawCallback,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -bool SurfaceDisplayOutputSurface::BindToClient(OutputSurfaceClient* client) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| -
|
| - surface_manager_->RegisterSurfaceFactoryClient(
|
| - surface_id_allocator_->client_id(), this);
|
| -
|
| - if (!OutputSurface::BindToClient(client))
|
| - return false;
|
| -
|
| - // We want the Display's output surface to hear about lost context, and since
|
| - // this shares a context with it, we should not be listening for lost context
|
| - // callbacks on the context here.
|
| - if (context_provider())
|
| - context_provider()->SetLostContextCallback(base::Closure());
|
| -
|
| - // Avoid initializing GL context here, as this should be sharing the
|
| - // Display's context.
|
| - display_->Initialize(this, surface_manager_,
|
| - surface_id_allocator_->client_id());
|
| - return true;
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::ForceReclaimResources() {
|
| - if (!delegated_surface_id_.is_null()) {
|
| - factory_.SubmitCompositorFrame(delegated_surface_id_, CompositorFrame(),
|
| - SurfaceFactory::DrawCallback());
|
| - }
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::DetachFromClient() {
|
| - DCHECK(HasClient());
|
| - // Unregister the SurfaceFactoryClient here instead of the dtor so that only
|
| - // one client is alive for this namespace at any given time.
|
| - surface_manager_->UnregisterSurfaceFactoryClient(
|
| - surface_id_allocator_->client_id());
|
| - if (!delegated_surface_id_.is_null())
|
| - factory_.Destroy(delegated_surface_id_);
|
| -
|
| - OutputSurface::DetachFromClient();
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::BindFramebuffer() {
|
| - // This is a delegating output surface, no framebuffer/direct drawing support.
|
| - NOTREACHED();
|
| -}
|
| -
|
| -uint32_t SurfaceDisplayOutputSurface::GetFramebufferCopyTextureFormat() {
|
| - // This is a delegating output surface, no framebuffer/direct drawing support.
|
| - NOTREACHED();
|
| - return 0;
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::ReturnResources(
|
| - const ReturnedResourceArray& resources) {
|
| - if (client_)
|
| - client_->ReclaimResources(resources);
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::SetBeginFrameSource(
|
| - BeginFrameSource* begin_frame_source) {
|
| - DCHECK(client_);
|
| - client_->SetBeginFrameSource(begin_frame_source);
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::DisplayOutputSurfaceLost() {
|
| - output_surface_lost_ = true;
|
| - client_->DidLoseOutputSurface();
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::DisplayWillDrawAndSwap(
|
| - bool will_draw_and_swap,
|
| - const RenderPassList& render_passes) {
|
| - // This notification is not relevant to our client outside of tests.
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::DisplayDidDrawAndSwap() {
|
| - // This notification is not relevant to our client outside of tests. We
|
| - // unblock the client from DidDrawCallback() when the surface is going to
|
| - // be drawn.
|
| -}
|
| -
|
| -void SurfaceDisplayOutputSurface::DidDrawCallback() {
|
| - // TODO(danakj): Why the lost check?
|
| - if (!output_surface_lost_)
|
| - client_->DidSwapBuffersComplete();
|
| -}
|
| -
|
| -} // namespace cc
|
|
|