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

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

Issue 685983005: gpu: Associate all GpuMemoryBuffers with unique IDs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: one more ozone build fix Created 6 years, 1 month 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
OLDNEW
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_manager.h" 5 #include "content/common/gpu/gpu_channel_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "content/common/gpu/gpu_channel.h" 9 #include "content/common/gpu/gpu_channel.h"
10 #include "content/common/gpu/gpu_memory_buffer_factory.h" 10 #include "content/common/gpu/gpu_memory_buffer_factory.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 IPC_BEGIN_MESSAGE_MAP(GpuChannelManagerMessageFilter, message) 47 IPC_BEGIN_MESSAGE_MAP(GpuChannelManagerMessageFilter, message)
48 IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBuffer, OnCreateGpuMemoryBuffer) 48 IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBuffer, OnCreateGpuMemoryBuffer)
49 IPC_MESSAGE_UNHANDLED(handled = false) 49 IPC_MESSAGE_UNHANDLED(handled = false)
50 IPC_END_MESSAGE_MAP() 50 IPC_END_MESSAGE_MAP()
51 return handled; 51 return handled;
52 } 52 }
53 53
54 protected: 54 protected:
55 ~GpuChannelManagerMessageFilter() override {} 55 ~GpuChannelManagerMessageFilter() override {}
56 56
57 void OnCreateGpuMemoryBuffer(const gfx::GpuMemoryBufferHandle& handle, 57 void OnCreateGpuMemoryBuffer(
58 const gfx::Size& size, 58 const GpuMsg_CreateGpuMemoryBuffer_Params& params) {
59 gfx::GpuMemoryBuffer::Format format,
60 gfx::GpuMemoryBuffer::Usage usage) {
61 TRACE_EVENT2("gpu", 59 TRACE_EVENT2("gpu",
62 "GpuChannelManagerMessageFilter::OnCreateGpuMemoryBuffer", 60 "GpuChannelManagerMessageFilter::OnCreateGpuMemoryBuffer",
63 "primary_id", 61 "id",
64 handle.global_id.primary_id, 62 params.id,
65 "secondary_id", 63 "client_id",
66 handle.global_id.secondary_id); 64 params.client_id);
67 sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated( 65 sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated(
68 gpu_memory_buffer_factory_->CreateGpuMemoryBuffer( 66 gpu_memory_buffer_factory_->CreateGpuMemoryBuffer(params.type,
69 handle, size, format, usage))); 67 params.id,
68 params.size,
69 params.format,
70 params.usage,
71 params.client_id)));
70 } 72 }
71 73
72 IPC::Sender* sender_; 74 IPC::Sender* sender_;
73 GpuMemoryBufferFactory* gpu_memory_buffer_factory_; 75 GpuMemoryBufferFactory* gpu_memory_buffer_factory_;
74 }; 76 };
75 77
76 } // namespace 78 } // namespace
77 79
78 GpuChannelManager::GpuChannelManager(MessageRouter* router, 80 GpuChannelManager::GpuChannelManager(MessageRouter* router,
79 GpuWatchdog* watchdog, 81 GpuWatchdog* watchdog,
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 CreateCommandBufferResult result = CREATE_COMMAND_BUFFER_FAILED; 230 CreateCommandBufferResult result = CREATE_COMMAND_BUFFER_FAILED;
229 231
230 GpuChannelMap::const_iterator iter = gpu_channels_.find(client_id); 232 GpuChannelMap::const_iterator iter = gpu_channels_.find(client_id);
231 if (iter != gpu_channels_.end()) { 233 if (iter != gpu_channels_.end()) {
232 result = iter->second->CreateViewCommandBuffer( 234 result = iter->second->CreateViewCommandBuffer(
233 window, surface_id, init_params, route_id); 235 window, surface_id, init_params, route_id);
234 } 236 }
235 237
236 Send(new GpuHostMsg_CommandBufferCreated(result)); 238 Send(new GpuHostMsg_CommandBufferCreated(result));
237 } 239 }
240
238 void GpuChannelManager::DestroyGpuMemoryBuffer( 241 void GpuChannelManager::DestroyGpuMemoryBuffer(
239 const gfx::GpuMemoryBufferHandle& handle) { 242 gfx::GpuMemoryBufferType type,
243 gfx::GpuMemoryBufferId id,
244 int client_id) {
240 io_message_loop_->PostTask( 245 io_message_loop_->PostTask(
241 FROM_HERE, 246 FROM_HERE,
242 base::Bind(&GpuChannelManager::DestroyGpuMemoryBufferOnIO, 247 base::Bind(&GpuChannelManager::DestroyGpuMemoryBufferOnIO,
243 base::Unretained(this), 248 base::Unretained(this),
244 handle)); 249 type,
250 id,
251 client_id));
245 } 252 }
246 253
247 void GpuChannelManager::DestroyGpuMemoryBufferOnIO( 254 void GpuChannelManager::DestroyGpuMemoryBufferOnIO(
248 const gfx::GpuMemoryBufferHandle& handle) { 255 gfx::GpuMemoryBufferType type,
249 gpu_memory_buffer_factory_->DestroyGpuMemoryBuffer(handle); 256 gfx::GpuMemoryBufferId id,
257 int client_id) {
258 gpu_memory_buffer_factory_->DestroyGpuMemoryBuffer(type, id, client_id);
250 } 259 }
251 260
252 void GpuChannelManager::OnDestroyGpuMemoryBuffer( 261 void GpuChannelManager::OnDestroyGpuMemoryBuffer(
253 const gfx::GpuMemoryBufferHandle& handle, 262 gfx::GpuMemoryBufferType type,
263 gfx::GpuMemoryBufferId id,
264 int client_id,
254 int32 sync_point) { 265 int32 sync_point) {
255 if (!sync_point) { 266 if (!sync_point) {
256 DestroyGpuMemoryBuffer(handle); 267 DestroyGpuMemoryBuffer(type, id, client_id);
257 } else { 268 } else {
258 sync_point_manager()->AddSyncPointCallback( 269 sync_point_manager()->AddSyncPointCallback(
259 sync_point, 270 sync_point,
260 base::Bind(&GpuChannelManager::DestroyGpuMemoryBuffer, 271 base::Bind(&GpuChannelManager::DestroyGpuMemoryBuffer,
261 base::Unretained(this), 272 base::Unretained(this),
262 handle)); 273 type,
274 id,
275 client_id));
263 } 276 }
264 } 277 }
265 278
266 void GpuChannelManager::OnLoadedShader(std::string program_proto) { 279 void GpuChannelManager::OnLoadedShader(std::string program_proto) {
267 if (program_cache()) 280 if (program_cache())
268 program_cache()->LoadProgram(program_proto); 281 program_cache()->LoadProgram(program_proto);
269 } 282 }
270 283
271 bool GpuChannelManager::HandleMessagesScheduled() { 284 bool GpuChannelManager::HandleMessagesScheduled() {
272 for (GpuChannelMap::iterator iter = gpu_channels_.begin(); 285 for (GpuChannelMap::iterator iter = gpu_channels_.begin();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 317
305 gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { 318 gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() {
306 if (!default_offscreen_surface_.get()) { 319 if (!default_offscreen_surface_.get()) {
307 default_offscreen_surface_ = 320 default_offscreen_surface_ =
308 gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); 321 gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size());
309 } 322 }
310 return default_offscreen_surface_.get(); 323 return default_offscreen_surface_.get();
311 } 324 }
312 325
313 } // namespace content 326 } // namespace content
OLDNEW
« no previous file with comments | « content/common/gpu/gpu_channel_manager.h ('k') | content/common/gpu/gpu_memory_buffer_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698