#include "cc/mojo_embedder/async_layer_tree_frame_sink.h"
#include <utility>
#include "base/functional/bind.h"
#include "base/metrics/histogram.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/task/current_thread.h"
#include "base/threading/platform_thread.h"
#include "base/trace_event/trace_event.h"
#include "base/trace_event/typed_macros.h"
#include "build/build_config.h"
#include "cc/base/histograms.h"
#include "cc/mojo_embedder/viz_layer_context.h"
#include "cc/trees/layer_tree_frame_sink_client.h"
#include "components/viz/common/features.h"
#include "components/viz/common/frame_sinks/begin_frame_args.h"
#include "components/viz/common/hit_test/hit_test_region_list.h"
#include "components/viz/common/quads/compositor_frame.h"
namespace cc {
namespace mojo_embedder {
namespace {
auto to_proto_enum(FrameSkippedReason reason) { … }
}
AsyncLayerTreeFrameSink::InitParams::InitParams() = default;
AsyncLayerTreeFrameSink::InitParams::~InitParams() = default;
AsyncLayerTreeFrameSink::UnboundMessagePipes::UnboundMessagePipes() = default;
AsyncLayerTreeFrameSink::UnboundMessagePipes::~UnboundMessagePipes() = default;
bool AsyncLayerTreeFrameSink::UnboundMessagePipes::HasUnbound() const { … }
AsyncLayerTreeFrameSink::UnboundMessagePipes::UnboundMessagePipes(
UnboundMessagePipes&& other) = default;
AsyncLayerTreeFrameSink::AsyncLayerTreeFrameSink(
scoped_refptr<viz::RasterContextProvider> context_provider,
scoped_refptr<RasterContextProviderWrapper> worker_context_provider_wrapper,
scoped_refptr<gpu::ClientSharedImageInterface> shared_image_interface,
InitParams* params)
: … { … }
AsyncLayerTreeFrameSink::~AsyncLayerTreeFrameSink() { … }
bool AsyncLayerTreeFrameSink::BindToClient(LayerTreeFrameSinkClient* client) { … }
void AsyncLayerTreeFrameSink::DetachFromClient() { … }
void AsyncLayerTreeFrameSink::SetLocalSurfaceId(
const viz::LocalSurfaceId& local_surface_id) { … }
void AsyncLayerTreeFrameSink::SubmitCompositorFrame(
viz::CompositorFrame frame,
bool hit_test_data_changed) { … }
void AsyncLayerTreeFrameSink::DidNotProduceFrame(const viz::BeginFrameAck& ack,
FrameSkippedReason reason) { … }
std::unique_ptr<LayerContext> AsyncLayerTreeFrameSink::CreateLayerContext(
LayerTreeHostImpl& host_impl) { … }
void AsyncLayerTreeFrameSink::DidAllocateSharedBitmap(
base::ReadOnlySharedMemoryRegion region,
const viz::SharedBitmapId& id) { … }
void AsyncLayerTreeFrameSink::DidDeleteSharedBitmap(
const viz::SharedBitmapId& id) { … }
void AsyncLayerTreeFrameSink::DidReceiveCompositorFrameAck(
std::vector<viz::ReturnedResource> resources) { … }
void AsyncLayerTreeFrameSink::OnBeginFrame(
const viz::BeginFrameArgs& args,
const viz::FrameTimingDetailsMap& timing_details,
bool frame_ack,
std::vector<viz::ReturnedResource> resources) { … }
void AsyncLayerTreeFrameSink::OnBeginFramePausedChanged(bool paused) { … }
void AsyncLayerTreeFrameSink::ReclaimResources(
std::vector<viz::ReturnedResource> resources) { … }
void AsyncLayerTreeFrameSink::OnCompositorFrameTransitionDirectiveProcessed(
uint32_t sequence_id) { … }
void AsyncLayerTreeFrameSink::OnSurfaceEvicted(
const viz::LocalSurfaceId& local_surface_id) { … }
void AsyncLayerTreeFrameSink::OnNeedsBeginFrames(bool needs_begin_frames) { … }
void AsyncLayerTreeFrameSink::OnMojoConnectionError(
uint32_t custom_reason,
const std::string& description) { … }
void AsyncLayerTreeFrameSink::UpdateNeedsBeginFramesInternal(
bool needs_begin_frames) { … }
}
}