| 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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1130 Send(new GpuCommandBufferMsg_SwapBuffersCompleted(route_id_, params)); | 1143 Send(new GpuCommandBufferMsg_SwapBuffersCompleted(route_id_, params)); |
| 1131 } | 1144 } |
| 1132 | 1145 |
| 1133 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, | 1146 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, |
| 1134 base::TimeDelta interval) { | 1147 base::TimeDelta interval) { |
| 1135 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, | 1148 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, |
| 1136 interval)); | 1149 interval)); |
| 1137 } | 1150 } |
| 1138 | 1151 |
| 1139 } // namespace gpu | 1152 } // namespace gpu |
| OLD | NEW |