OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/gpu/gpu_channel.h" | 5 #include "content/common/gpu/gpu_channel.h" |
6 | 6 |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include <windows.h> | 8 #include <windows.h> |
9 #endif | 9 #endif |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "base/strings/string_util.h" | 23 #include "base/strings/string_util.h" |
24 #include "base/synchronization/lock.h" | 24 #include "base/synchronization/lock.h" |
25 #include "base/thread_task_runner_handle.h" | 25 #include "base/thread_task_runner_handle.h" |
26 #include "base/timer/timer.h" | 26 #include "base/timer/timer.h" |
27 #include "base/trace_event/memory_dump_manager.h" | 27 #include "base/trace_event/memory_dump_manager.h" |
28 #include "base/trace_event/process_memory_dump.h" | 28 #include "base/trace_event/process_memory_dump.h" |
29 #include "base/trace_event/trace_event.h" | 29 #include "base/trace_event/trace_event.h" |
30 #include "content/common/gpu/gpu_channel_manager.h" | 30 #include "content/common/gpu/gpu_channel_manager.h" |
31 #include "content/common/gpu/gpu_memory_buffer_factory.h" | 31 #include "content/common/gpu/gpu_memory_buffer_factory.h" |
32 #include "content/common/gpu/gpu_messages.h" | 32 #include "content/common/gpu/gpu_messages.h" |
| 33 #include "content/common/gpu/media/gpu_arc_accelerator.h" |
33 #include "content/common/gpu/media/gpu_jpeg_decode_accelerator.h" | 34 #include "content/common/gpu/media/gpu_jpeg_decode_accelerator.h" |
34 #include "content/public/common/content_switches.h" | 35 #include "content/public/common/content_switches.h" |
35 #include "gpu/command_buffer/common/mailbox.h" | 36 #include "gpu/command_buffer/common/mailbox.h" |
36 #include "gpu/command_buffer/common/value_state.h" | 37 #include "gpu/command_buffer/common/value_state.h" |
37 #include "gpu/command_buffer/service/gpu_scheduler.h" | 38 #include "gpu/command_buffer/service/gpu_scheduler.h" |
38 #include "gpu/command_buffer/service/image_factory.h" | 39 #include "gpu/command_buffer/service/image_factory.h" |
39 #include "gpu/command_buffer/service/mailbox_manager.h" | 40 #include "gpu/command_buffer/service/mailbox_manager.h" |
40 #include "gpu/command_buffer/service/sync_point_manager.h" | 41 #include "gpu/command_buffer/service/sync_point_manager.h" |
41 #include "gpu/command_buffer/service/valuebuffer_manager.h" | 42 #include "gpu/command_buffer/service/valuebuffer_manager.h" |
42 #include "ipc/ipc_channel.h" | 43 #include "ipc/ipc_channel.h" |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 #if defined(OS_POSIX) | 612 #if defined(OS_POSIX) |
612 // On POSIX, pass the renderer-side FD. Also mark it as auto-close so | 613 // On POSIX, pass the renderer-side FD. Also mark it as auto-close so |
613 // that it gets closed after it has been sent. | 614 // that it gets closed after it has been sent. |
614 base::ScopedFD renderer_fd = channel_->TakeClientFileDescriptor(); | 615 base::ScopedFD renderer_fd = channel_->TakeClientFileDescriptor(); |
615 DCHECK(renderer_fd.is_valid()); | 616 DCHECK(renderer_fd.is_valid()); |
616 channel_handle.socket = base::FileDescriptor(renderer_fd.Pass()); | 617 channel_handle.socket = base::FileDescriptor(renderer_fd.Pass()); |
617 #endif | 618 #endif |
618 | 619 |
619 channel_->AddFilter(filter_.get()); | 620 channel_->AddFilter(filter_.get()); |
620 | 621 |
| 622 arc_accelerator_.reset( |
| 623 new GpuArcAccelerator(this, shutdown_event, io_task_runner_)); |
| 624 arc_accelerator_->Initialize(); |
| 625 |
621 return channel_handle; | 626 return channel_handle; |
622 } | 627 } |
623 | 628 |
624 base::ProcessId GpuChannel::GetClientPID() const { | 629 base::ProcessId GpuChannel::GetClientPID() const { |
625 return channel_->GetPeerPID(); | 630 return channel_->GetPeerPID(); |
626 } | 631 } |
627 | 632 |
628 uint32_t GpuChannel::GetProcessedOrderNum() const { | 633 uint32_t GpuChannel::GetProcessedOrderNum() const { |
629 return message_queue_->GetProcessedOrderNum(); | 634 return message_queue_->GetProcessedOrderNum(); |
630 } | 635 } |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 | 787 |
783 bool GpuChannel::OnControlMessageReceived(const IPC::Message& msg) { | 788 bool GpuChannel::OnControlMessageReceived(const IPC::Message& msg) { |
784 bool handled = true; | 789 bool handled = true; |
785 IPC_BEGIN_MESSAGE_MAP(GpuChannel, msg) | 790 IPC_BEGIN_MESSAGE_MAP(GpuChannel, msg) |
786 IPC_MESSAGE_HANDLER(GpuChannelMsg_CreateOffscreenCommandBuffer, | 791 IPC_MESSAGE_HANDLER(GpuChannelMsg_CreateOffscreenCommandBuffer, |
787 OnCreateOffscreenCommandBuffer) | 792 OnCreateOffscreenCommandBuffer) |
788 IPC_MESSAGE_HANDLER(GpuChannelMsg_DestroyCommandBuffer, | 793 IPC_MESSAGE_HANDLER(GpuChannelMsg_DestroyCommandBuffer, |
789 OnDestroyCommandBuffer) | 794 OnDestroyCommandBuffer) |
790 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuMsg_CreateJpegDecoder, | 795 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuMsg_CreateJpegDecoder, |
791 OnCreateJpegDecoder) | 796 OnCreateJpegDecoder) |
| 797 IPC_MESSAGE_HANDLER(GpuMsg_CreateArcAccelerator, OnCreateArcAccelerator) |
| 798 IPC_MESSAGE_HANDLER(GpuMsg_ShutdownArcAccelerators, |
| 799 OnShutdownArcAccelerators) |
792 IPC_MESSAGE_UNHANDLED(handled = false) | 800 IPC_MESSAGE_UNHANDLED(handled = false) |
793 IPC_END_MESSAGE_MAP() | 801 IPC_END_MESSAGE_MAP() |
794 DCHECK(handled) << msg.type(); | 802 DCHECK(handled) << msg.type(); |
795 return handled; | 803 return handled; |
796 } | 804 } |
797 | 805 |
798 scoped_refptr<gpu::SyncPointOrderData> GpuChannel::GetSyncPointOrderData() { | 806 scoped_refptr<gpu::SyncPointOrderData> GpuChannel::GetSyncPointOrderData() { |
799 return message_queue_->GetSyncPointOrderData(); | 807 return message_queue_->GetSyncPointOrderData(); |
800 } | 808 } |
801 | 809 |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 } | 1001 } |
994 } | 1002 } |
995 | 1003 |
996 void GpuChannel::OnCreateJpegDecoder(int32 route_id, IPC::Message* reply_msg) { | 1004 void GpuChannel::OnCreateJpegDecoder(int32 route_id, IPC::Message* reply_msg) { |
997 if (!jpeg_decoder_) { | 1005 if (!jpeg_decoder_) { |
998 jpeg_decoder_.reset(new GpuJpegDecodeAccelerator(this, io_task_runner_)); | 1006 jpeg_decoder_.reset(new GpuJpegDecodeAccelerator(this, io_task_runner_)); |
999 } | 1007 } |
1000 jpeg_decoder_->AddClient(route_id, reply_msg); | 1008 jpeg_decoder_->AddClient(route_id, reply_msg); |
1001 } | 1009 } |
1002 | 1010 |
| 1011 void GpuChannel::OnCreateArcAccelerator(uint32_t device_type) { |
| 1012 DCHECK(arc_accelerator_); |
| 1013 arc_accelerator_->CreateClient(device_type); |
| 1014 } |
| 1015 |
| 1016 void GpuChannel::OnShutdownArcAccelerators() { |
| 1017 arc_accelerator_.reset(); |
| 1018 } |
| 1019 |
1003 void GpuChannel::CacheShader(const std::string& key, | 1020 void GpuChannel::CacheShader(const std::string& key, |
1004 const std::string& shader) { | 1021 const std::string& shader) { |
1005 gpu_channel_manager_->Send( | 1022 gpu_channel_manager_->Send( |
1006 new GpuHostMsg_CacheShader(client_id_, key, shader)); | 1023 new GpuHostMsg_CacheShader(client_id_, key, shader)); |
1007 } | 1024 } |
1008 | 1025 |
1009 void GpuChannel::AddFilter(IPC::MessageFilter* filter) { | 1026 void GpuChannel::AddFilter(IPC::MessageFilter* filter) { |
1010 io_task_runner_->PostTask( | 1027 io_task_runner_->PostTask( |
1011 FROM_HERE, base::Bind(&GpuChannelMessageFilter::AddChannelFilter, | 1028 FROM_HERE, base::Bind(&GpuChannelMessageFilter::AddChannelFilter, |
1012 filter_, make_scoped_refptr(filter))); | 1029 filter_, make_scoped_refptr(filter))); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 } | 1084 } |
1068 } | 1085 } |
1069 } | 1086 } |
1070 | 1087 |
1071 void GpuChannel::HandleUpdateValueState( | 1088 void GpuChannel::HandleUpdateValueState( |
1072 unsigned int target, const gpu::ValueState& state) { | 1089 unsigned int target, const gpu::ValueState& state) { |
1073 pending_valuebuffer_state_->UpdateState(target, state); | 1090 pending_valuebuffer_state_->UpdateState(target, state); |
1074 } | 1091 } |
1075 | 1092 |
1076 } // namespace content | 1093 } // namespace content |
OLD | NEW |