| Index: cc/test/test_delegating_output_surface.cc
|
| diff --git a/cc/test/test_delegating_output_surface.cc b/cc/test/test_delegating_output_surface.cc
|
| deleted file mode 100644
|
| index 41a17b646d49f1021d997de5343164343adcaa35..0000000000000000000000000000000000000000
|
| --- a/cc/test/test_delegating_output_surface.cc
|
| +++ /dev/null
|
| @@ -1,212 +0,0 @@
|
| -// Copyright 2016 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/test/test_delegating_output_surface.h"
|
| -
|
| -#include <stdint.h>
|
| -#include <utility>
|
| -
|
| -#include "cc/output/begin_frame_args.h"
|
| -#include "cc/output/copy_output_request.h"
|
| -#include "cc/output/direct_renderer.h"
|
| -#include "cc/output/texture_mailbox_deleter.h"
|
| -
|
| -static constexpr uint32_t kCompositorClientId = 1;
|
| -
|
| -namespace cc {
|
| -
|
| -TestDelegatingOutputSurface::TestDelegatingOutputSurface(
|
| - scoped_refptr<ContextProvider> compositor_context_provider,
|
| - scoped_refptr<ContextProvider> worker_context_provider,
|
| - std::unique_ptr<OutputSurface> display_output_surface,
|
| - SharedBitmapManager* shared_bitmap_manager,
|
| - gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
|
| - const RendererSettings& renderer_settings,
|
| - base::SingleThreadTaskRunner* task_runner,
|
| - bool synchronous_composite,
|
| - bool force_disable_reclaim_resources)
|
| - : OutputSurface(std::move(compositor_context_provider),
|
| - std::move(worker_context_provider),
|
| - nullptr),
|
| - surface_manager_(new SurfaceManager),
|
| - surface_id_allocator_(new SurfaceIdAllocator(kCompositorClientId)),
|
| - surface_factory_(new SurfaceFactory(surface_manager_.get(), this)),
|
| - weak_ptrs_(this) {
|
| - std::unique_ptr<SyntheticBeginFrameSource> begin_frame_source;
|
| - std::unique_ptr<DisplayScheduler> scheduler;
|
| - if (!synchronous_composite) {
|
| - if (renderer_settings.disable_display_vsync) {
|
| - begin_frame_source.reset(new BackToBackBeginFrameSource(
|
| - base::MakeUnique<DelayBasedTimeSource>(task_runner)));
|
| - } else {
|
| - begin_frame_source.reset(new DelayBasedBeginFrameSource(
|
| - base::MakeUnique<DelayBasedTimeSource>(task_runner)));
|
| - begin_frame_source->SetAuthoritativeVSyncInterval(
|
| - base::TimeDelta::FromMilliseconds(1000.f /
|
| - renderer_settings.refresh_rate));
|
| - }
|
| - scheduler.reset(new DisplayScheduler(
|
| - begin_frame_source.get(), task_runner,
|
| - display_output_surface->capabilities().max_frames_pending));
|
| - }
|
| - const bool context_shared_with_compositor =
|
| - display_output_surface->context_provider() == context_provider();
|
| - display_.reset(
|
| - new Display(shared_bitmap_manager, gpu_memory_buffer_manager,
|
| - renderer_settings, std::move(begin_frame_source),
|
| - std::move(display_output_surface), std::move(scheduler),
|
| - base::MakeUnique<TextureMailboxDeleter>(task_runner)));
|
| -
|
| - capabilities_.delegated_rendering = true;
|
| - // Since this OutputSurface and the Display are tightly coupled and in the
|
| - // same process/thread, the LayerTreeHostImpl can reclaim resources from
|
| - // the Display. But we allow tests to disable this to mimic an out-of-process
|
| - // Display.
|
| - capabilities_.can_force_reclaim_resources = !force_disable_reclaim_resources;
|
| - capabilities_.delegated_sync_points_required =
|
| - !context_shared_with_compositor;
|
| -}
|
| -
|
| -TestDelegatingOutputSurface::~TestDelegatingOutputSurface() {
|
| - DCHECK(copy_requests_.empty());
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::RequestCopyOfOutput(
|
| - std::unique_ptr<CopyOutputRequest> request) {
|
| - copy_requests_.push_back(std::move(request));
|
| -}
|
| -
|
| -bool TestDelegatingOutputSurface::BindToClient(OutputSurfaceClient* client) {
|
| - 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 (when delegated_sync_points_required is
|
| - // false), we should not be listening for lost context callbacks on the
|
| - // context here.
|
| - if (!capabilities_.delegated_sync_points_required && context_provider())
|
| - context_provider()->SetLostContextCallback(base::Closure());
|
| -
|
| - surface_manager_->RegisterSurfaceClientId(surface_id_allocator_->client_id());
|
| - surface_manager_->RegisterSurfaceFactoryClient(
|
| - surface_id_allocator_->client_id(), this);
|
| - display_->Initialize(this, surface_manager_.get(),
|
| - surface_id_allocator_->client_id());
|
| - display_->renderer_for_testing()->SetEnlargePassTextureAmountForTesting(
|
| - enlarge_pass_texture_amount_);
|
| - display_->SetVisible(true);
|
| - bound_ = true;
|
| - return true;
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::DetachFromClient() {
|
| - // Some tests make BindToClient fail on purpose. ^__^
|
| - if (bound_) {
|
| - if (!delegated_surface_id_.is_null())
|
| - surface_factory_->Destroy(delegated_surface_id_);
|
| - surface_manager_->UnregisterSurfaceFactoryClient(
|
| - surface_id_allocator_->client_id());
|
| - surface_manager_->InvalidateSurfaceClientId(
|
| - surface_id_allocator_->client_id());
|
| - bound_ = false;
|
| - }
|
| - display_ = nullptr;
|
| - surface_factory_ = nullptr;
|
| - surface_id_allocator_ = nullptr;
|
| - surface_manager_ = nullptr;
|
| - weak_ptrs_.InvalidateWeakPtrs();
|
| - OutputSurface::DetachFromClient();
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::SwapBuffers(CompositorFrame frame) {
|
| - if (test_client_)
|
| - test_client_->DisplayReceivedCompositorFrame(frame);
|
| -
|
| - if (delegated_surface_id_.is_null()) {
|
| - delegated_surface_id_ = surface_id_allocator_->GenerateId();
|
| - surface_factory_->Create(delegated_surface_id_);
|
| - }
|
| - display_->SetSurfaceId(delegated_surface_id_,
|
| - frame.metadata.device_scale_factor);
|
| -
|
| - gfx::Size frame_size =
|
| - frame.delegated_frame_data->render_pass_list.back()->output_rect.size();
|
| - display_->Resize(frame_size);
|
| -
|
| - bool synchronous = !display_->has_scheduler();
|
| -
|
| - surface_factory_->SubmitCompositorFrame(
|
| - delegated_surface_id_, std::move(frame),
|
| - base::Bind(&TestDelegatingOutputSurface::DidDrawCallback,
|
| - weak_ptrs_.GetWeakPtr(), synchronous));
|
| -
|
| - for (std::unique_ptr<CopyOutputRequest>& copy_request : copy_requests_)
|
| - surface_factory_->RequestCopyOfSurface(delegated_surface_id_,
|
| - std::move(copy_request));
|
| - copy_requests_.clear();
|
| -
|
| - if (synchronous)
|
| - display_->DrawAndSwap();
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::DidDrawCallback(bool synchronous) {
|
| - // This is the frame ack to unthrottle the next frame, not actually a notice
|
| - // that drawing is done.
|
| - if (synchronous) {
|
| - // For synchronous draws, this must be posted to a new stack because we are
|
| - // still the original call to SwapBuffers, and we want to leave that before
|
| - // saying that it is done.
|
| - OutputSurface::PostSwapBuffersComplete();
|
| - } else {
|
| - client_->DidSwapBuffersComplete();
|
| - }
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::ForceReclaimResources() {
|
| - if (capabilities_.can_force_reclaim_resources &&
|
| - !delegated_surface_id_.is_null()) {
|
| - surface_factory_->SubmitCompositorFrame(delegated_surface_id_,
|
| - CompositorFrame(),
|
| - SurfaceFactory::DrawCallback());
|
| - }
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::BindFramebuffer() {
|
| - // This is a delegating output surface, no framebuffer/direct drawing support.
|
| - NOTREACHED();
|
| -}
|
| -
|
| -uint32_t TestDelegatingOutputSurface::GetFramebufferCopyTextureFormat() {
|
| - // This is a delegating output surface, no framebuffer/direct drawing support.
|
| - NOTREACHED();
|
| - return 0;
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::ReturnResources(
|
| - const ReturnedResourceArray& resources) {
|
| - client_->ReclaimResources(resources);
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::SetBeginFrameSource(
|
| - BeginFrameSource* begin_frame_source) {
|
| - client_->SetBeginFrameSource(begin_frame_source);
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::DisplayOutputSurfaceLost() {
|
| - client_->DidLoseOutputSurface();
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::DisplayWillDrawAndSwap(
|
| - bool will_draw_and_swap,
|
| - const RenderPassList& render_passes) {
|
| - if (test_client_)
|
| - test_client_->DisplayWillDrawAndSwap(will_draw_and_swap, render_passes);
|
| -}
|
| -
|
| -void TestDelegatingOutputSurface::DisplayDidDrawAndSwap() {
|
| - if (test_client_)
|
| - test_client_->DisplayDidDrawAndSwap();
|
| -}
|
| -
|
| -} // namespace cc
|
|
|