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 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 } | 288 } |
289 | 289 |
290 // Always use IPC_MESSAGE_HANDLER_DELAY_REPLY for synchronous message handlers | 290 // Always use IPC_MESSAGE_HANDLER_DELAY_REPLY for synchronous message handlers |
291 // here. This is so the reply can be delayed if the scheduler is unscheduled. | 291 // here. This is so the reply can be delayed if the scheduler is unscheduled. |
292 bool handled = true; | 292 bool handled = true; |
293 IPC_BEGIN_MESSAGE_MAP(GpuCommandBufferStub, message) | 293 IPC_BEGIN_MESSAGE_MAP(GpuCommandBufferStub, message) |
294 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_Initialize, | 294 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_Initialize, |
295 OnInitialize); | 295 OnInitialize); |
296 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetGetBuffer, | 296 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_SetGetBuffer, |
297 OnSetGetBuffer); | 297 OnSetGetBuffer); |
298 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_ProduceFrontBuffer, | 298 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_TakeFrontBuffer, OnTakeFrontBuffer); |
299 OnProduceFrontBuffer); | 299 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_ReturnFrontBuffer, |
| 300 OnReturnFrontBuffer); |
300 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForTokenInRange, | 301 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForTokenInRange, |
301 OnWaitForTokenInRange); | 302 OnWaitForTokenInRange); |
302 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForGetOffsetInRange, | 303 IPC_MESSAGE_HANDLER_DELAY_REPLY(GpuCommandBufferMsg_WaitForGetOffsetInRange, |
303 OnWaitForGetOffsetInRange); | 304 OnWaitForGetOffsetInRange); |
304 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush); | 305 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_AsyncFlush, OnAsyncFlush); |
305 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_RegisterTransferBuffer, | 306 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_RegisterTransferBuffer, |
306 OnRegisterTransferBuffer); | 307 OnRegisterTransferBuffer); |
307 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyTransferBuffer, | 308 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyTransferBuffer, |
308 OnDestroyTransferBuffer); | 309 OnDestroyTransferBuffer); |
| 310 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_WaitSyncToken, |
| 311 OnWaitSyncToken) |
309 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalSyncToken, | 312 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalSyncToken, |
310 OnSignalSyncToken) | 313 OnSignalSyncToken) |
311 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalQuery, | 314 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_SignalQuery, |
312 OnSignalQuery) | 315 OnSignalQuery) |
313 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_CreateImage, OnCreateImage); | 316 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_CreateImage, OnCreateImage); |
314 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyImage, OnDestroyImage); | 317 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_DestroyImage, OnDestroyImage); |
315 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_CreateStreamTexture, | 318 IPC_MESSAGE_HANDLER(GpuCommandBufferMsg_CreateStreamTexture, |
316 OnCreateStreamTexture) | 319 OnCreateStreamTexture) |
317 IPC_MESSAGE_UNHANDLED(handled = false) | 320 IPC_MESSAGE_UNHANDLED(handled = false) |
318 IPC_END_MESSAGE_MAP() | 321 IPC_END_MESSAGE_MAP() |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
704 } | 707 } |
705 | 708 |
706 void GpuCommandBufferStub::OnSetGetBuffer(int32_t shm_id, | 709 void GpuCommandBufferStub::OnSetGetBuffer(int32_t shm_id, |
707 IPC::Message* reply_message) { | 710 IPC::Message* reply_message) { |
708 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnSetGetBuffer"); | 711 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnSetGetBuffer"); |
709 if (command_buffer_) | 712 if (command_buffer_) |
710 command_buffer_->SetGetBuffer(shm_id); | 713 command_buffer_->SetGetBuffer(shm_id); |
711 Send(reply_message); | 714 Send(reply_message); |
712 } | 715 } |
713 | 716 |
714 void GpuCommandBufferStub::OnProduceFrontBuffer(const Mailbox& mailbox) { | 717 void GpuCommandBufferStub::OnTakeFrontBuffer(const Mailbox& mailbox) { |
715 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnProduceFrontBuffer"); | 718 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnTakeFrontBuffer"); |
716 if (!decoder_) { | 719 if (!decoder_) { |
717 LOG(ERROR) << "Can't produce front buffer before initialization."; | 720 LOG(ERROR) << "Can't take front buffer before initialization."; |
718 return; | 721 return; |
719 } | 722 } |
720 | 723 |
721 decoder_->ProduceFrontBuffer(mailbox); | 724 decoder_->TakeFrontBuffer(mailbox); |
| 725 } |
| 726 |
| 727 void GpuCommandBufferStub::OnReturnFrontBuffer(const Mailbox& mailbox, |
| 728 bool is_lost) { |
| 729 decoder_->ReturnFrontBuffer(mailbox, is_lost); |
722 } | 730 } |
723 | 731 |
724 void GpuCommandBufferStub::OnParseError() { | 732 void GpuCommandBufferStub::OnParseError() { |
725 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnParseError"); | 733 TRACE_EVENT0("gpu", "GpuCommandBufferStub::OnParseError"); |
726 DCHECK(command_buffer_.get()); | 734 DCHECK(command_buffer_.get()); |
727 CommandBuffer::State state = command_buffer_->GetLastState(); | 735 CommandBuffer::State state = command_buffer_->GetLastState(); |
728 IPC::Message* msg = new GpuCommandBufferMsg_Destroyed( | 736 IPC::Message* msg = new GpuCommandBufferMsg_Destroyed( |
729 route_id_, state.context_lost_reason, state.error); | 737 route_id_, state.context_lost_reason, state.error); |
730 msg->set_unblock(true); | 738 msg->set_unblock(true); |
731 Send(msg); | 739 Send(msg); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 CommandBufferId command_buffer_id, | 884 CommandBufferId command_buffer_id, |
877 uint32_t release) { | 885 uint32_t release) { |
878 gles2::MailboxManager* mailbox_manager = | 886 gles2::MailboxManager* mailbox_manager = |
879 context_group_->mailbox_manager(); | 887 context_group_->mailbox_manager(); |
880 if (mailbox_manager->UsesSync() && MakeCurrent()) { | 888 if (mailbox_manager->UsesSync() && MakeCurrent()) { |
881 SyncToken sync_token(namespace_id, 0, command_buffer_id, release); | 889 SyncToken sync_token(namespace_id, 0, command_buffer_id, release); |
882 mailbox_manager->PullTextureUpdates(sync_token); | 890 mailbox_manager->PullTextureUpdates(sync_token); |
883 } | 891 } |
884 } | 892 } |
885 | 893 |
| 894 void GpuCommandBufferStub::OnWaitSyncToken(const SyncToken& sync_token) { |
| 895 OnWaitFenceSync(sync_token.namespace_id(), sync_token.command_buffer_id(), |
| 896 sync_token.release_count()); |
| 897 } |
| 898 |
886 void GpuCommandBufferStub::OnSignalSyncToken(const SyncToken& sync_token, | 899 void GpuCommandBufferStub::OnSignalSyncToken(const SyncToken& sync_token, |
887 uint32_t id) { | 900 uint32_t id) { |
888 scoped_refptr<SyncPointClientState> release_state = | 901 scoped_refptr<SyncPointClientState> release_state = |
889 sync_point_manager_->GetSyncPointClientState( | 902 sync_point_manager_->GetSyncPointClientState( |
890 sync_token.namespace_id(), sync_token.command_buffer_id()); | 903 sync_token.namespace_id(), sync_token.command_buffer_id()); |
891 | 904 |
892 if (release_state) { | 905 if (release_state) { |
893 sync_point_client_->Wait(release_state.get(), sync_token.release_count(), | 906 sync_point_client_->Wait(release_state.get(), sync_token.release_count(), |
894 base::Bind(&GpuCommandBufferStub::OnSignalAck, | 907 base::Bind(&GpuCommandBufferStub::OnSignalAck, |
895 this->AsWeakPtr(), id)); | 908 this->AsWeakPtr(), id)); |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 result)); | 1145 result)); |
1133 } | 1146 } |
1134 | 1147 |
1135 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, | 1148 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, |
1136 base::TimeDelta interval) { | 1149 base::TimeDelta interval) { |
1137 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, | 1150 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, |
1138 interval)); | 1151 interval)); |
1139 } | 1152 } |
1140 | 1153 |
1141 } // namespace gpu | 1154 } // namespace gpu |
OLD | NEW |