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 "gpu/ipc/service/gpu_command_buffer_stub.h" | 5 #include "gpu/ipc/service/gpu_command_buffer_stub.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 } | 291 } |
292 | 292 |
293 // Always use IPC_MESSAGE_HANDLER_DELAY_REPLY for synchronous message handlers | 293 // Always use IPC_MESSAGE_HANDLER_DELAY_REPLY for synchronous message handlers |
294 // here. This is so the reply can be delayed if the scheduler is unscheduled. | 294 // here. This is so the reply can be delayed if the scheduler is unscheduled. |
295 bool handled = true; | 295 bool handled = true; |
296 IPC_BEGIN_MESSAGE_MAP(GpuCommandBufferStub, message) | 296 IPC_BEGIN_MESSAGE_MAP(GpuCommandBufferStub, message) |
297 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_Initialize, | 297 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_Initialize, |
298 OnInitialize); | 298 OnInitialize); |
299 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetGetBuffer, | 299 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetGetBuffer, |
300 OnSetGetBuffer); | 300 OnSetGetBuffer); |
301 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_ProduceFrontBuffer, | 301 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_TakeFrontBuffer, OnTakeFrontBuffer); |
302 OnProduceFrontBuffer); | 302 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_ReturnFrontBuffer, |
| 303 OnReturnFrontBuffer); |
303 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForTokenInRange, | 304 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForTokenInRange, |
304 OnWaitForTokenInRange); | 305 OnWaitForTokenInRange); |
305 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForGetOffsetInRange, | 306 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForGetOffsetInRange, |
306 OnWaitForGetOffsetInRange); | 307 OnWaitForGetOffsetInRange); |
307 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush); | 308 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush); |
308 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_RegisterTransferBuffer, | 309 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_RegisterTransferBuffer, |
309 OnRegisterTransferBuffer); | 310 OnRegisterTransferBuffer); |
310 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyTransferBuffer, | 311 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyTransferBuffer, |
311 OnDestroyTransferBuffer); | 312 OnDestroyTransferBuffer); |
312 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalSyncToken, | 313 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalSyncToken, |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 } | 705 } |
705 | 706 |
706 void GpuCommandBufferStub::OnSetGetBuffer(int32_t shm_id, | 707 void GpuCommandBufferStub::OnSetGetBuffer(int32_t shm_id, |
707 IPC::Message* reply_message) { | 708 IPC::Message* reply_message) { |
708 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnSetGetBuffer"); | 709 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnSetGetBuffer"); |
709 if (command_buffer_) | 710 if (command_buffer_) |
710 command_buffer_->SetGetBuffer(shm_id); | 711 command_buffer_->SetGetBuffer(shm_id); |
711 Send(reply_message); | 712 Send(reply_message); |
712 } | 713 } |
713 | 714 |
714 void GpuCommandBufferStub::OnProduceFrontBuffer(const Mailbox& mailbox) { | 715 void GpuCommandBufferStub::OnTakeFrontBuffer(const Mailbox& mailbox) { |
715 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnProduceFrontBuffer"); | 716 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnTakeFrontBuffer"); |
716 if (!decoder_) { | 717 if (!decoder_) { |
717 LOG(ERROR) << "Can't produce front buffer before initialization."; | 718 LOG(ERROR) << "Can't take front buffer before initialization."; |
718 return; | 719 return; |
719 } | 720 } |
720 | 721 |
721 decoder_->ProduceFrontBuffer(mailbox); | 722 decoder_->TakeFrontBuffer(mailbox); |
| 723 } |
| 724 |
| 725 void GpuCommandBufferStub::OnReturnFrontBuffer(const Mailbox& mailbox, |
| 726 const SyncToken& sync_token, |
| 727 bool is_lost) { |
| 728 OnWaitFenceSync(sync_token.namespace_id(), sync_token.command_buffer_id(), |
| 729 sync_token.release_count()); |
| 730 decoder_->ReturnFrontBuffer(mailbox, is_lost); |
722 } | 731 } |
723 | 732 |
724 void GpuCommandBufferStub::OnParseError() { | 733 void GpuCommandBufferStub::OnParseError() { |
725 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnParseError"); | 734 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnParseError"); |
726 DCHECK(command_buffer_.get()); | 735 DCHECK(command_buffer_.get()); |
727 CommandBuffer::State state = command_buffer_->GetLastState(); | 736 CommandBuffer::State state = command_buffer_->GetLastState(); |
728 IPC::Message* msg = new GpuCommandBufferMsg_Destroyed( | 737 IPC::Message* msg = new GpuCommandBufferMsg_Destroyed( |
729 route_id_, state.context_lost_reason, state.error); | 738 route_id_, state.context_lost_reason, state.error); |
730 msg->set_unblock(true); | 739 msg->set_unblock(true); |
731 Send(msg); | 740 Send(msg); |
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1130 result)); | 1139 result)); |
1131 } | 1140 } |
1132 | 1141 |
1133 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, | 1142 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, |
1134 base::TimeDelta interval) { | 1143 base::TimeDelta interval) { |
1135 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, | 1144 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, |
1136 interval)); | 1145 interval)); |
1137 } | 1146 } |
1138 | 1147 |
1139 } // namespace gpu | 1148 } // namespace gpu |
OLD | NEW |