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

Side by Side Diff: content/common/gpu/gpu_channel_manager.cc

Issue 6793054: Moved code that runs in both the browser and GPU process from content/gpu to content/common/gpu. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/gpu/gpu_channel_manager.h ('k') | content/common/gpu/gpu_command_buffer_stub.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/gpu/gpu_render_thread.h" 5 #include "content/common/gpu/gpu_channel_manager.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "app/win/scoped_com_initializer.h" 10 #include "app/win/scoped_com_initializer.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/threading/worker_pool.h" 12 #include "base/threading/worker_pool.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "chrome/common/child_process_logging.h" 14 #include "chrome/common/child_process_logging.h"
15 #include "chrome/common/chrome_switches.h" 15 #include "chrome/common/chrome_switches.h"
16 #include "content/common/child_process.h" 16 #include "content/common/child_process.h"
17 #include "content/common/gpu_messages.h" 17 #include "content/common/gpu_messages.h"
18 #include "content/gpu/gpu_child_thread.h"
19 #include "content/gpu/gpu_info_collector.h"
20 #include "content/gpu/gpu_watchdog_thread.h" 18 #include "content/gpu/gpu_watchdog_thread.h"
21 #include "ipc/ipc_channel_handle.h" 19 #include "ipc/ipc_channel_handle.h"
22 #include "ui/gfx/gl/gl_context.h" 20 #include "ui/gfx/gl/gl_context.h"
23 #include "ui/gfx/gl/gl_implementation.h" 21 #include "ui/gfx/gl/gl_implementation.h"
24 22
25 GpuRenderThread::GpuRenderThread(IPC::Message::Sender* browser_channel, 23 GpuChannelManager::GpuChannelManager(IPC::Message::Sender* browser_channel,
26 GpuWatchdogThread* gpu_watchdog_thread, 24 GpuWatchdogThread* gpu_watchdog_thread,
27 MessageLoop* io_message_loop, 25 MessageLoop* io_message_loop,
28 base::WaitableEvent* shutdown_event) 26 base::WaitableEvent* shutdown_event)
29 : io_message_loop_(io_message_loop), 27 : io_message_loop_(io_message_loop),
30 shutdown_event_(shutdown_event), 28 shutdown_event_(shutdown_event),
31 browser_channel_(browser_channel), 29 browser_channel_(browser_channel),
32 watchdog_thread_(gpu_watchdog_thread) { 30 watchdog_thread_(gpu_watchdog_thread) {
33 DCHECK(browser_channel); 31 DCHECK(browser_channel);
34 DCHECK(io_message_loop); 32 DCHECK(io_message_loop);
35 DCHECK(shutdown_event); 33 DCHECK(shutdown_event);
36 } 34 }
37 35
38 GpuRenderThread::~GpuRenderThread() { 36 GpuChannelManager::~GpuChannelManager() {
39 gpu_channels_.clear(); 37 gpu_channels_.clear();
40 } 38 }
41 39
42 void GpuRenderThread::RemoveChannel(int renderer_id) { 40 void GpuChannelManager::RemoveChannel(int renderer_id) {
43 gpu_channels_.erase(renderer_id); 41 gpu_channels_.erase(renderer_id);
44 } 42 }
45 43
46 bool GpuRenderThread::OnMessageReceived(const IPC::Message& msg) { 44 bool GpuChannelManager::OnMessageReceived(const IPC::Message& msg) {
47 bool msg_is_ok = true; 45 bool msg_is_ok = true;
48 bool handled = true; 46 bool handled = true;
49 IPC_BEGIN_MESSAGE_MAP_EX(GpuRenderThread, msg, msg_is_ok) 47 IPC_BEGIN_MESSAGE_MAP_EX(GpuChannelManager, msg, msg_is_ok)
50 IPC_MESSAGE_HANDLER(GpuMsg_EstablishChannel, OnEstablishChannel) 48 IPC_MESSAGE_HANDLER(GpuMsg_EstablishChannel, OnEstablishChannel)
51 IPC_MESSAGE_HANDLER(GpuMsg_CloseChannel, OnCloseChannel) 49 IPC_MESSAGE_HANDLER(GpuMsg_CloseChannel, OnCloseChannel)
52 IPC_MESSAGE_HANDLER(GpuMsg_CreateViewCommandBuffer, 50 IPC_MESSAGE_HANDLER(GpuMsg_CreateViewCommandBuffer,
53 OnCreateViewCommandBuffer); 51 OnCreateViewCommandBuffer);
54 IPC_MESSAGE_HANDLER(GpuMsg_Synchronize, OnSynchronize) 52 IPC_MESSAGE_HANDLER(GpuMsg_Synchronize, OnSynchronize)
55 #if defined(OS_MACOSX) 53 #if defined(OS_MACOSX)
56 IPC_MESSAGE_HANDLER(GpuMsg_AcceleratedSurfaceBuffersSwappedACK, 54 IPC_MESSAGE_HANDLER(GpuMsg_AcceleratedSurfaceBuffersSwappedACK,
57 OnAcceleratedSurfaceBuffersSwappedACK) 55 OnAcceleratedSurfaceBuffersSwappedACK)
58 IPC_MESSAGE_HANDLER(GpuMsg_DestroyCommandBuffer, 56 IPC_MESSAGE_HANDLER(GpuMsg_DestroyCommandBuffer,
59 OnDestroyCommandBuffer) 57 OnDestroyCommandBuffer)
60 #endif 58 #endif
61 IPC_MESSAGE_UNHANDLED(handled = false) 59 IPC_MESSAGE_UNHANDLED(handled = false)
62 IPC_END_MESSAGE_MAP_EX() 60 IPC_END_MESSAGE_MAP_EX()
63 return handled; 61 return handled;
64 } 62 }
65 63
66 bool GpuRenderThread::Send(IPC::Message* msg) { 64 bool GpuChannelManager::Send(IPC::Message* msg) {
67 return browser_channel_->Send(msg); 65 return browser_channel_->Send(msg);
68 } 66 }
69 67
70 void GpuRenderThread::OnEstablishChannel(int renderer_id) { 68 void GpuChannelManager::OnEstablishChannel(int renderer_id) {
71 scoped_refptr<GpuChannel> channel; 69 scoped_refptr<GpuChannel> channel;
72 IPC::ChannelHandle channel_handle; 70 IPC::ChannelHandle channel_handle;
73 GPUInfo gpu_info; 71 GPUInfo gpu_info;
74 72
75 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id); 73 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id);
76 if (iter == gpu_channels_.end()) 74 if (iter == gpu_channels_.end())
77 channel = new GpuChannel(this, watchdog_thread_, renderer_id); 75 channel = new GpuChannel(this, watchdog_thread_, renderer_id);
78 else 76 else
79 channel = iter->second; 77 channel = iter->second;
80 78
(...skipping 10 matching lines...) Expand all
91 // On POSIX, pass the renderer-side FD. Also mark it as auto-close so 89 // On POSIX, pass the renderer-side FD. Also mark it as auto-close so
92 // that it gets closed after it has been sent. 90 // that it gets closed after it has been sent.
93 int renderer_fd = channel->GetRendererFileDescriptor(); 91 int renderer_fd = channel->GetRendererFileDescriptor();
94 channel_handle.socket = base::FileDescriptor(dup(renderer_fd), true); 92 channel_handle.socket = base::FileDescriptor(dup(renderer_fd), true);
95 #endif 93 #endif
96 } 94 }
97 95
98 Send(new GpuHostMsg_ChannelEstablished(channel_handle)); 96 Send(new GpuHostMsg_ChannelEstablished(channel_handle));
99 } 97 }
100 98
101 void GpuRenderThread::OnCloseChannel(const IPC::ChannelHandle& channel_handle) { 99 void GpuChannelManager::OnCloseChannel(
100 const IPC::ChannelHandle& channel_handle) {
102 for (GpuChannelMap::iterator iter = gpu_channels_.begin(); 101 for (GpuChannelMap::iterator iter = gpu_channels_.begin();
103 iter != gpu_channels_.end(); ++iter) { 102 iter != gpu_channels_.end(); ++iter) {
104 if (iter->second->GetChannelName() == channel_handle.name) { 103 if (iter->second->GetChannelName() == channel_handle.name) {
105 gpu_channels_.erase(iter); 104 gpu_channels_.erase(iter);
106 return; 105 return;
107 } 106 }
108 } 107 }
109 } 108 }
110 109
111 void GpuRenderThread::OnSynchronize() { 110 void GpuChannelManager::OnSynchronize() {
112 Send(new GpuHostMsg_SynchronizeReply()); 111 Send(new GpuHostMsg_SynchronizeReply());
113 } 112 }
114 113
115 void GpuRenderThread::OnCreateViewCommandBuffer( 114 void GpuChannelManager::OnCreateViewCommandBuffer(
116 gfx::PluginWindowHandle window, 115 gfx::PluginWindowHandle window,
117 int32 render_view_id, 116 int32 render_view_id,
118 int32 renderer_id, 117 int32 renderer_id,
119 const GPUCreateCommandBufferConfig& init_params) { 118 const GPUCreateCommandBufferConfig& init_params) {
120 int32 route_id = MSG_ROUTING_NONE; 119 int32 route_id = MSG_ROUTING_NONE;
121 120
122 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id); 121 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id);
123 if (iter != gpu_channels_.end()) { 122 if (iter != gpu_channels_.end()) {
124 iter->second->CreateViewCommandBuffer( 123 iter->second->CreateViewCommandBuffer(
125 window, render_view_id, init_params, &route_id); 124 window, render_view_id, init_params, &route_id);
126 } 125 }
127 126
128 Send(new GpuHostMsg_CommandBufferCreated(route_id)); 127 Send(new GpuHostMsg_CommandBufferCreated(route_id));
129 } 128 }
130 129
131 #if defined(OS_MACOSX) 130 #if defined(OS_MACOSX)
132 void GpuRenderThread::OnAcceleratedSurfaceBuffersSwappedACK( 131 void GpuChannelManager::OnAcceleratedSurfaceBuffersSwappedACK(
133 int renderer_id, int32 route_id, uint64 swap_buffers_count) { 132 int renderer_id, int32 route_id, uint64 swap_buffers_count) {
134 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id); 133 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id);
135 if (iter == gpu_channels_.end()) 134 if (iter == gpu_channels_.end())
136 return; 135 return;
137 scoped_refptr<GpuChannel> channel = iter->second; 136 scoped_refptr<GpuChannel> channel = iter->second;
138 channel->AcceleratedSurfaceBuffersSwapped(route_id, swap_buffers_count); 137 channel->AcceleratedSurfaceBuffersSwapped(route_id, swap_buffers_count);
139 } 138 }
140 void GpuRenderThread::OnDestroyCommandBuffer( 139 void GpuChannelManager::OnDestroyCommandBuffer(
141 int renderer_id, int32 renderer_view_id) { 140 int renderer_id, int32 renderer_view_id) {
142 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id); 141 GpuChannelMap::const_iterator iter = gpu_channels_.find(renderer_id);
143 if (iter == gpu_channels_.end()) 142 if (iter == gpu_channels_.end())
144 return; 143 return;
145 scoped_refptr<GpuChannel> channel = iter->second; 144 scoped_refptr<GpuChannel> channel = iter->second;
146 channel->DestroyCommandBufferByViewId(renderer_view_id); 145 channel->DestroyCommandBufferByViewId(renderer_view_id);
147 } 146 }
148 #endif 147 #endif
OLDNEW
« no previous file with comments | « content/common/gpu/gpu_channel_manager.h ('k') | content/common/gpu/gpu_command_buffer_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698