| 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 #if defined(ENABLE_GPU) | 5 #if defined(ENABLE_GPU) |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 } | 92 } |
| 93 | 93 |
| 94 // Always use IPC_MESSAGE_HANDLER_DELAY_REPLY for synchronous message handlers | 94 // Always use IPC_MESSAGE_HANDLER_DELAY_REPLY for synchronous message handlers |
| 95 // here. This is so the reply can be delayed if the scheduler is unscheduled. | 95 // here. This is so the reply can be delayed if the scheduler is unscheduled. |
| 96 bool handled = true; | 96 bool handled = true; |
| 97 IPC_BEGIN_MESSAGE_MAP(GpuCommandBufferStub, message) | 97 IPC_BEGIN_MESSAGE_MAP(GpuCommandBufferStub, message) |
| 98 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_Initialize, | 98 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_Initialize, |
| 99 OnInitialize); | 99 OnInitialize); |
| 100 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetGetBuffer, | 100 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetGetBuffer, |
| 101 OnSetGetBuffer); | 101 OnSetGetBuffer); |
| 102 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetSharedStateBuffer, |
| 103 OnSetSharedStateBuffer); |
| 102 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetParent, | 104 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetParent, |
| 103 OnSetParent); | 105 OnSetParent); |
| 104 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_GetState, OnGetState); | 106 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_GetState, OnGetState); |
| 105 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_GetStateFast, | 107 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_GetStateFast, |
| 106 OnGetStateFast); | 108 OnGetStateFast); |
| 107 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush); | 109 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush); |
| 108 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_Rescheduled, OnRescheduled); | 110 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_Rescheduled, OnRescheduled); |
| 109 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_CreateTransferBuffer, | 111 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_CreateTransferBuffer, |
| 110 OnCreateTransferBuffer); | 112 OnCreateTransferBuffer); |
| 111 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_RegisterTransferBuffer, | 113 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_RegisterTransferBuffer, |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 int32 shm_id, IPC::Message* reply_message) { | 299 int32 shm_id, IPC::Message* reply_message) { |
| 298 if (command_buffer_.get()) { | 300 if (command_buffer_.get()) { |
| 299 command_buffer_->SetGetBuffer(shm_id); | 301 command_buffer_->SetGetBuffer(shm_id); |
| 300 } else { | 302 } else { |
| 301 DLOG(ERROR) << "no command_buffer."; | 303 DLOG(ERROR) << "no command_buffer."; |
| 302 reply_message->set_reply_error(); | 304 reply_message->set_reply_error(); |
| 303 } | 305 } |
| 304 Send(reply_message); | 306 Send(reply_message); |
| 305 } | 307 } |
| 306 | 308 |
| 309 void GpuCommandBufferStub::OnSetSharedStateBuffer( |
| 310 int32 shm_id, IPC::Message* reply_message) { |
| 311 if (command_buffer_.get()) { |
| 312 command_buffer_->SetSharedStateBuffer(shm_id); |
| 313 } else { |
| 314 DLOG(ERROR) << "no command_buffer."; |
| 315 reply_message->set_reply_error(); |
| 316 } |
| 317 Send(reply_message); |
| 318 } |
| 319 |
| 307 void GpuCommandBufferStub::OnSetParent(int32 parent_route_id, | 320 void GpuCommandBufferStub::OnSetParent(int32 parent_route_id, |
| 308 uint32 parent_texture_id, | 321 uint32 parent_texture_id, |
| 309 IPC::Message* reply_message) { | 322 IPC::Message* reply_message) { |
| 310 GpuCommandBufferStub* parent_stub = NULL; | 323 GpuCommandBufferStub* parent_stub = NULL; |
| 311 if (parent_route_id != MSG_ROUTING_NONE) { | 324 if (parent_route_id != MSG_ROUTING_NONE) { |
| 312 parent_stub = channel_->LookupCommandBuffer(parent_route_id); | 325 parent_stub = channel_->LookupCommandBuffer(parent_route_id); |
| 313 } | 326 } |
| 314 | 327 |
| 315 bool result = true; | 328 bool result = true; |
| 316 if (scheduler_.get()) { | 329 if (scheduler_.get()) { |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 if (watchdog_) | 492 if (watchdog_) |
| 480 watchdog_->CheckArmed(); | 493 watchdog_->CheckArmed(); |
| 481 } | 494 } |
| 482 | 495 |
| 483 void GpuCommandBufferStub::ReportState() { | 496 void GpuCommandBufferStub::ReportState() { |
| 484 gpu::CommandBuffer::State state = command_buffer_->GetState(); | 497 gpu::CommandBuffer::State state = command_buffer_->GetState(); |
| 485 if (state.error == gpu::error::kLostContext && | 498 if (state.error == gpu::error::kLostContext && |
| 486 gfx::GLContext::LosesAllContextsOnContextLost()) { | 499 gfx::GLContext::LosesAllContextsOnContextLost()) { |
| 487 channel_->LoseAllContexts(); | 500 channel_->LoseAllContexts(); |
| 488 } else { | 501 } else { |
| 489 IPC::Message* msg = new GpuCommandBufferMsg_UpdateState(route_id_, state); | 502 command_buffer_->UpdateState(); |
| 490 msg->set_unblock(true); | |
| 491 Send(msg); | |
| 492 } | 503 } |
| 493 } | 504 } |
| 494 | 505 |
| 495 void GpuCommandBufferStub::OnCreateVideoDecoder( | 506 void GpuCommandBufferStub::OnCreateVideoDecoder( |
| 496 media::VideoDecodeAccelerator::Profile profile, | 507 media::VideoDecodeAccelerator::Profile profile, |
| 497 IPC::Message* reply_message) { | 508 IPC::Message* reply_message) { |
| 498 int decoder_route_id = channel_->GenerateRouteID(); | 509 int decoder_route_id = channel_->GenerateRouteID(); |
| 499 GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams( | 510 GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams( |
| 500 reply_message, decoder_route_id); | 511 reply_message, decoder_route_id); |
| 501 GpuVideoDecodeAccelerator* decoder = | 512 GpuVideoDecodeAccelerator* decoder = |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 DCHECK(has_surface_state()); | 551 DCHECK(has_surface_state()); |
| 541 return *surface_state_.get(); | 552 return *surface_state_.get(); |
| 542 } | 553 } |
| 543 | 554 |
| 544 void GpuCommandBufferStub::SendMemoryAllocationToProxy( | 555 void GpuCommandBufferStub::SendMemoryAllocationToProxy( |
| 545 const GpuMemoryAllocation& allocation) { | 556 const GpuMemoryAllocation& allocation) { |
| 546 // TODO(mmocny): Send callback once gl extensions are added. | 557 // TODO(mmocny): Send callback once gl extensions are added. |
| 547 } | 558 } |
| 548 | 559 |
| 549 #endif // defined(ENABLE_GPU) | 560 #endif // defined(ENABLE_GPU) |
| OLD | NEW |