#include "components/viz/service/main/viz_compositor_thread_runner_impl.h"
#include <utility>
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/message_loop/message_pump_type.h"
#include "base/synchronization/waitable_event.h"
#include "base/task/bind_post_task.h"
#include "base/task/single_thread_task_runner.h"
#include "base/threading/thread.h"
#include "base/trace_event/memory_dump_manager.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "components/viz/common/features.h"
#include "components/viz/common/switches.h"
#include "components/viz/service/display_embedder/in_process_gpu_memory_buffer_manager.h"
#include "components/viz/service/display_embedder/output_surface_provider_impl.h"
#include "components/viz/service/display_embedder/server_shared_bitmap_manager.h"
#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
#include "components/viz/service/frame_sinks/gmb_video_frame_pool_context_provider_impl.h"
#include "components/viz/service/frame_sinks/shared_image_interface_provider.h"
#include "components/viz/service/gl/gpu_service_impl.h"
#include "components/viz/service/performance_hint/hint_session.h"
#include "gpu/command_buffer/service/scheduler_sequence.h"
#include "gpu/config/gpu_finch_features.h"
#include "gpu/config/gpu_switches.h"
#include "gpu/ipc/service/gpu_memory_buffer_factory.h"
#include "ui/gfx/switches.h"
#if BUILDFLAG(IS_OZONE)
#include "ui/ozone/public/ozone_platform.h"
#endif
namespace viz {
namespace {
const char kThreadName[] = …;
std::unique_ptr<VizCompositorThreadType> CreateAndStartCompositorThread() { … }
}
VizCompositorThreadRunnerImpl::VizCompositorThreadRunnerImpl()
: … { … }
VizCompositorThreadRunnerImpl::~VizCompositorThreadRunnerImpl() { … }
bool VizCompositorThreadRunnerImpl::CreateHintSessionFactory(
base::flat_set<base::PlatformThreadId> thread_ids,
base::RepeatingClosure* wake_up_closure) { … }
void VizCompositorThreadRunnerImpl::CreateHintSessionFactoryOnCompositorThread(
base::flat_set<base::PlatformThreadId> thread_ids,
base::RepeatingClosure* wake_up_closure,
base::WaitableEvent* event) { … }
void VizCompositorThreadRunnerImpl::WakeUpOnCompositorThread() { … }
base::SingleThreadTaskRunner* VizCompositorThreadRunnerImpl::task_runner() { … }
void VizCompositorThreadRunnerImpl::CreateFrameSinkManager(
mojom::FrameSinkManagerParamsPtr params,
GpuServiceImpl* gpu_service) { … }
void VizCompositorThreadRunnerImpl::CreateFrameSinkManagerOnCompositorThread(
mojom::FrameSinkManagerParamsPtr params,
GpuServiceImpl* gpu_service) { … }
void VizCompositorThreadRunnerImpl::RequestBeginFrameForGpuService(
bool toggle) { … }
void VizCompositorThreadRunnerImpl::
RequestBeginFrameForGpuServiceOnCompositorThread(bool toggle) { … }
void VizCompositorThreadRunnerImpl::TearDownOnCompositorThread() { … }
}