Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(944)

Unified Diff: content/gpu/gpu_child_thread.cc

Issue 2612623002: gpu: Use mus gpu interface in non-mus chrome. (Closed)
Patch Set: more cleanup Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/gpu/gpu_child_thread.cc
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc
index 0da00b1f53c252b6faea95403f81ef88539e42bf..4656d54578a3270c7ea5a48eaa32f53a4439184f 100644
--- a/content/gpu/gpu_child_thread.cc
+++ b/content/gpu/gpu_child_thread.cc
@@ -39,6 +39,7 @@
#include "media/gpu/ipc/service/gpu_video_encode_accelerator.h"
#include "media/gpu/ipc/service/media_gpu_channel_manager.h"
#include "services/service_manager/public/cpp/interface_registry.h"
+#include "services/ui/gpu/interfaces/gpu_service.mojom.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/gl_switches.h"
#include "ui/gl/gpu_switching_manager.h"
@@ -150,11 +151,15 @@ GpuChildThread::GpuChildThread(
gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory)
: ChildThreadImpl(GetOptions(gpu_memory_buffer_factory)),
dead_on_arrival_(dead_on_arrival),
- watchdog_thread_(std::move(watchdog_thread)),
gpu_info_(gpu_info),
deferred_messages_(deferred_messages),
in_browser_process_(false),
- gpu_memory_buffer_factory_(gpu_memory_buffer_factory) {
+ gpu_service_(
+ new ui::GpuService(gpu_info,
+ std::move(watchdog_thread),
+ gpu_memory_buffer_factory,
+ ChildProcess::current()->io_task_runner())),
+ gpu_main_binding_(this) {
#if defined(OS_WIN)
target_services_ = NULL;
#endif
@@ -174,7 +179,12 @@ GpuChildThread::GpuChildThread(
dead_on_arrival_(false),
gpu_info_(gpu_info),
in_browser_process_(true),
- gpu_memory_buffer_factory_(gpu_memory_buffer_factory) {
+ gpu_service_(
+ new ui::GpuService(gpu_info,
+ nullptr /* watchdog thread */,
+ gpu_memory_buffer_factory,
+ ChildProcess::current()->io_task_runner())),
+ gpu_main_binding_(this) {
#if defined(OS_WIN)
target_services_ = NULL;
#endif
@@ -209,7 +219,8 @@ void GpuChildThread::Init(const base::Time& process_start_time) {
if (GetContentClient()->gpu()) // NULL in tests.
GetContentClient()->gpu()->Initialize(this);
- channel()->AddAssociatedInterface(base::Bind(
+ AssociatedInterfaceRegistry* registry = &associated_interfaces_;
+ registry->AddInterface(base::Bind(
Ken Rockot(use gerrit already) 2017/01/23 18:29:53 nit: just use associated_interfaces_
sadrul 2017/01/23 19:57:49 I tried that at first, but it gives me a compile e
&GpuChildThread::CreateGpuMainService, base::Unretained(this)));
}
@@ -220,7 +231,7 @@ void GpuChildThread::OnFieldTrialGroupFinalized(const std::string& trial_name,
void GpuChildThread::CreateGpuMainService(
ui::mojom::GpuMainAssociatedRequest request) {
- // TODO(sad): Implement.
+ gpu_main_binding_.Bind(std::move(request));
}
bool GpuChildThread::Send(IPC::Message* msg) {
@@ -234,7 +245,6 @@ bool GpuChildThread::Send(IPC::Message* msg) {
bool GpuChildThread::OnControlMessageReceived(const IPC::Message& msg) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(GpuChildThread, msg)
- IPC_MESSAGE_HANDLER(GpuMsg_Initialize, OnInitialize)
IPC_MESSAGE_HANDLER(GpuMsg_Finalize, OnFinalize)
IPC_MESSAGE_HANDLER(GpuMsg_CollectGraphicsInfo, OnCollectGraphicsInfo)
IPC_MESSAGE_HANDLER(GpuMsg_GetVideoMemoryUsageStats,
@@ -272,45 +282,18 @@ bool GpuChildThread::OnMessageReceived(const IPC::Message& msg) {
return false;
}
-void GpuChildThread::SetActiveURL(const GURL& url) {
- GetContentClient()->SetActiveURL(url);
+void GpuChildThread::OnAssociatedInterfaceRequest(
+ const std::string& name,
+ mojo::ScopedInterfaceEndpointHandle handle) {
+ associated_interfaces_.BindRequest(name, std::move(handle));
}
-void GpuChildThread::DidCreateOffscreenContext(const GURL& active_url) {
- Send(new GpuHostMsg_DidCreateOffscreenContext(active_url));
-}
-
-void GpuChildThread::DidDestroyChannel(int client_id) {
- media_gpu_channel_manager_->RemoveChannel(client_id);
- Send(new GpuHostMsg_DestroyChannel(client_id));
-}
-
-void GpuChildThread::DidDestroyOffscreenContext(const GURL& active_url) {
- Send(new GpuHostMsg_DidDestroyOffscreenContext(active_url));
-}
-
-void GpuChildThread::DidLoseContext(bool offscreen,
- gpu::error::ContextLostReason reason,
- const GURL& active_url) {
- Send(new GpuHostMsg_DidLoseContext(offscreen, reason, active_url));
-}
-
-#if defined(OS_WIN)
-void GpuChildThread::SendAcceleratedSurfaceCreatedChildWindow(
- gpu::SurfaceHandle parent_window,
- gpu::SurfaceHandle child_window) {
- Send(new GpuHostMsg_AcceleratedSurfaceCreatedChildWindow(parent_window,
- child_window));
-}
-#endif
+void GpuChildThread::CreateGpuService(
+ ui::mojom::GpuServiceRequest request,
+ ui::mojom::GpuHostPtr gpu_host,
+ const gpu::GpuPreferences& gpu_preferences) {
+ gpu_service_->Bind(std::move(request));
-void GpuChildThread::StoreShaderToDisk(int32_t client_id,
- const std::string& key,
- const std::string& shader) {
- Send(new GpuHostMsg_CacheShader(client_id, key, shader));
-}
-
-void GpuChildThread::OnInitialize(const gpu::GpuPreferences& gpu_preferences) {
gpu_info_.video_decode_accelerator_capabilities =
media::GpuVideoDecodeAccelerator::GetCapabilities(gpu_preferences);
gpu_info_.video_encode_accelerator_supported_profiles =
@@ -343,29 +326,14 @@ void GpuChildThread::OnInitialize(const gpu::GpuPreferences& gpu_preferences) {
// Note SyncPointManager from ContentGpuClient cannot be owned by this.
if (GetContentClient()->gpu())
sync_point_manager = GetContentClient()->gpu()->GetSyncPointManager();
- if (!sync_point_manager) {
- if (!owned_sync_point_manager_) {
- owned_sync_point_manager_.reset(new gpu::SyncPointManager(false));
- }
- sync_point_manager = owned_sync_point_manager_.get();
- }
-
- // Defer creation of the render thread. This is to prevent it from handling
- // IPC messages before the sandbox has been enabled and all other necessary
- // initialization has succeeded.
- gpu_channel_manager_.reset(new gpu::GpuChannelManager(
- gpu_preferences, this, watchdog_thread_.get(),
- base::ThreadTaskRunnerHandle::Get().get(),
- ChildProcess::current()->io_task_runner(),
- ChildProcess::current()->GetShutDownEvent(), sync_point_manager,
- gpu_memory_buffer_factory_));
-
- media_gpu_channel_manager_.reset(
- new media::MediaGpuChannelManager(gpu_channel_manager_.get()));
+ gpu_service_->InitializeWithHost(std::move(gpu_host), gpu_preferences,
+ sync_point_manager,
+ ChildProcess::current()->GetShutDownEvent());
+ CHECK(gpu_service_->media_gpu_channel_manager());
// Only set once per process instance.
- service_factory_.reset(
- new GpuServiceFactory(media_gpu_channel_manager_->AsWeakPtr()));
+ service_factory_.reset(new GpuServiceFactory(
+ gpu_service_->media_gpu_channel_manager()->AsWeakPtr()));
GetInterfaceRegistry()->AddInterface(base::Bind(
&GpuChildThread::BindServiceFactoryRequest, base::Unretained(this)));
@@ -380,6 +348,12 @@ void GpuChildThread::OnInitialize(const gpu::GpuPreferences& gpu_preferences) {
GetInterfaceRegistry()->ResumeBinding();
}
+void GpuChildThread::CreateDisplayCompositor(
+ cc::mojom::DisplayCompositorRequest request,
+ cc::mojom::DisplayCompositorClientPtr client) {
+ NOTREACHED();
+}
+
void GpuChildThread::OnFinalize() {
// Quit the GPU process
base::MessageLoop::current()->QuitWhenIdle();
@@ -444,8 +418,8 @@ void GpuChildThread::OnCollectGraphicsInfo() {
void GpuChildThread::OnGetVideoMemoryUsageStats() {
gpu::VideoMemoryUsageStats video_memory_usage_stats;
- if (gpu_channel_manager_) {
- gpu_channel_manager_->gpu_memory_manager()->GetVideoMemoryUsageStats(
+ if (gpu_channel_manager()) {
+ gpu_channel_manager()->gpu_memory_manager()->GetVideoMemoryUsageStats(
&video_memory_usage_stats);
}
Send(new GpuHostMsg_VideoMemoryUsageStats(video_memory_usage_stats));
@@ -453,8 +427,8 @@ void GpuChildThread::OnGetVideoMemoryUsageStats() {
void GpuChildThread::OnClean() {
DVLOG(1) << "GPU: Removing all contexts";
- if (gpu_channel_manager_)
- gpu_channel_manager_->DestroyAllChannels();
+ if (gpu_channel_manager())
+ gpu_channel_manager()->DestroyAllChannels();
}
void GpuChildThread::OnCrash() {
@@ -480,38 +454,38 @@ void GpuChildThread::OnGpuSwitched() {
}
void GpuChildThread::OnEstablishChannel(const EstablishChannelParams& params) {
- if (!gpu_channel_manager_)
+ if (!gpu_channel_manager())
return;
- IPC::ChannelHandle channel_handle = gpu_channel_manager_->EstablishChannel(
+ IPC::ChannelHandle channel_handle = gpu_channel_manager()->EstablishChannel(
params.client_id, params.client_tracing_id, params.preempts,
params.allow_view_command_buffers, params.allow_real_time_streams);
- media_gpu_channel_manager_->AddChannel(params.client_id);
+ gpu_service_->media_gpu_channel_manager()->AddChannel(params.client_id);
Send(new GpuHostMsg_ChannelEstablished(channel_handle));
}
void GpuChildThread::OnCloseChannel(int32_t client_id) {
- if (gpu_channel_manager_)
- gpu_channel_manager_->RemoveChannel(client_id);
+ if (gpu_channel_manager())
+ gpu_channel_manager()->RemoveChannel(client_id);
}
void GpuChildThread::OnLoadedShader(const std::string& shader) {
- if (gpu_channel_manager_)
- gpu_channel_manager_->PopulateShaderCache(shader);
+ if (gpu_channel_manager())
+ gpu_channel_manager()->PopulateShaderCache(shader);
}
void GpuChildThread::OnDestroyGpuMemoryBuffer(
gfx::GpuMemoryBufferId id,
int client_id,
const gpu::SyncToken& sync_token) {
- if (gpu_channel_manager_)
- gpu_channel_manager_->DestroyGpuMemoryBuffer(id, client_id, sync_token);
+ if (gpu_channel_manager())
+ gpu_channel_manager()->DestroyGpuMemoryBuffer(id, client_id, sync_token);
}
#if defined(OS_ANDROID)
void GpuChildThread::OnWakeUpGpu() {
- if (gpu_channel_manager_)
- gpu_channel_manager_->WakeUpGpu();
+ if (gpu_channel_manager())
+ gpu_channel_manager()->WakeUpGpu();
}
void GpuChildThread::OnDestroyingVideoSurface(int surface_id) {
@@ -520,13 +494,6 @@ void GpuChildThread::OnDestroyingVideoSurface(int surface_id) {
}
#endif
-void GpuChildThread::OnLoseAllContexts() {
- if (gpu_channel_manager_) {
- gpu_channel_manager_->DestroyAllChannels();
- media_gpu_channel_manager_->DestroyAllChannels();
- }
-}
-
void GpuChildThread::BindServiceFactoryRequest(
service_manager::mojom::ServiceFactoryRequest request) {
DVLOG(1) << "GPU: Binding service_manager::mojom::ServiceFactoryRequest";

Powered by Google App Engine
This is Rietveld 408576698