summaryrefslogtreecommitdiffstats
path: root/content/browser/gpu/gpu_process_host.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/gpu/gpu_process_host.cc')
-rw-r--r--content/browser/gpu/gpu_process_host.cc44
1 files changed, 44 insertions, 0 deletions
diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
index b970578..45eaf1a 100644
--- a/content/browser/gpu/gpu_process_host.cc
+++ b/content/browser/gpu/gpu_process_host.cc
@@ -604,6 +604,10 @@ bool GpuProcessHost::OnMessageReceived(const IPC::Message& message) {
OnGpuMemoryBufferCreated)
IPC_MESSAGE_HANDLER(GpuHostMsg_DidCreateOffscreenContext,
OnDidCreateOffscreenContext)
+#if defined(OS_CHROMEOS)
+ IPC_MESSAGE_HANDLER(GpuHostMsg_ArcVideoAcceleratorChannelCreated,
+ OnArcVideoAcceleratorChannelCreated)
+#endif
IPC_MESSAGE_HANDLER(GpuHostMsg_DidLoseContext, OnDidLoseContext)
IPC_MESSAGE_HANDLER(GpuHostMsg_DidDestroyOffscreenContext,
OnDidDestroyOffscreenContext)
@@ -787,6 +791,19 @@ void GpuProcessHost::DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id,
Send(new GpuMsg_DestroyGpuMemoryBuffer(id, client_id, sync_token));
}
+#if defined(OS_CHROMEOS)
+void GpuProcessHost::CreateArcVideoAcceleratorChannel(
+ const CreateArcVideoAcceleratorChannelCallback& callback) {
+ DCHECK(CalledOnValidThread());
+
+ if (Send(new GpuMsg_CreateArcVideoAcceleratorChannel())) {
+ create_arc_video_accelerator_channel_requests_.push(callback);
+ } else {
+ callback.Run(IPC::ChannelHandle());
+ }
+}
+#endif
+
void GpuProcessHost::OnInitialized(bool result, const gpu::GPUInfo& gpu_info) {
UMA_HISTOGRAM_BOOLEAN("GPU.GPUProcessInitialized", result);
initialized_ = result;
@@ -854,6 +871,24 @@ void GpuProcessHost::OnGpuMemoryBufferCreated(
callback.Run(handle);
}
+#if defined(OS_CHROMEOS)
+void GpuProcessHost::OnArcVideoAcceleratorChannelCreated(
+ const IPC::ChannelHandle& handle) {
+ if (create_arc_video_accelerator_channel_requests_.empty()) {
+ RouteOnUIThread(
+ GpuHostMsg_OnLogMessage(logging::LOG_WARNING, "WARNING",
+ "Received a ArcVideoAcceleratorChannelCreated "
+ "message but no requests in queue."));
+ return;
+ }
+
+ CreateArcVideoAcceleratorChannelCallback callback =
+ create_arc_video_accelerator_channel_requests_.front();
+ create_arc_video_accelerator_channel_requests_.pop();
+ callback.Run(handle);
+}
+#endif
+
void GpuProcessHost::OnDidCreateOffscreenContext(const GURL& url) {
urls_with_live_offscreen_contexts_.insert(url);
}
@@ -1059,6 +1094,15 @@ void GpuProcessHost::SendOutstandingReplies() {
create_gpu_memory_buffer_requests_.pop();
callback.Run(gfx::GpuMemoryBufferHandle());
}
+
+#if defined(OS_CHROMEOS)
+ while (!create_arc_video_accelerator_channel_requests_.empty()) {
+ CreateArcVideoAcceleratorChannelCallback callback =
+ create_arc_video_accelerator_channel_requests_.front();
+ create_arc_video_accelerator_channel_requests_.pop();
+ callback.Run(IPC::ChannelHandle());
+ }
+#endif
}
void GpuProcessHost::BlockLiveOffscreenContexts() {