| OLD | NEW | 
|    1 // Copyright 2013 The Chromium Authors. All rights reserved. |    1 // Copyright 2013 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 "mojo/services/gles2/command_buffer_impl.h" |    5 #include "mojo/services/gles2/command_buffer_impl.h" | 
|    6  |    6  | 
|    7 #include "base/bind.h" |    7 #include "base/bind.h" | 
|    8 #include "base/memory/shared_memory.h" |    8 #include "base/memory/shared_memory.h" | 
|    9  |    9  | 
|   10 #include "gpu/command_buffer/common/constants.h" |   10 #include "gpu/command_buffer/common/constants.h" | 
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  111  |  111  | 
|  112   command_buffer_->SetPutOffsetChangeCallback(base::Bind( |  112   command_buffer_->SetPutOffsetChangeCallback(base::Bind( | 
|  113       &gpu::GpuScheduler::PutChanged, base::Unretained(scheduler_.get()))); |  113       &gpu::GpuScheduler::PutChanged, base::Unretained(scheduler_.get()))); | 
|  114   command_buffer_->SetGetBufferChangeCallback(base::Bind( |  114   command_buffer_->SetGetBufferChangeCallback(base::Bind( | 
|  115       &gpu::GpuScheduler::SetGetBuffer, base::Unretained(scheduler_.get()))); |  115       &gpu::GpuScheduler::SetGetBuffer, base::Unretained(scheduler_.get()))); | 
|  116   command_buffer_->SetParseErrorCallback( |  116   command_buffer_->SetParseErrorCallback( | 
|  117       base::Bind(&CommandBufferImpl::OnParseError, base::Unretained(this))); |  117       base::Bind(&CommandBufferImpl::OnParseError, base::Unretained(this))); | 
|  118  |  118  | 
|  119   // TODO(piman): other callbacks |  119   // TODO(piman): other callbacks | 
|  120  |  120  | 
 |  121   const size_t kSize = sizeof(gpu::CommandBufferSharedState); | 
|  121   scoped_ptr<base::SharedMemory> shared_state_shm( |  122   scoped_ptr<base::SharedMemory> shared_state_shm( | 
|  122       new base::SharedMemory(shared_state, false)); |  123       new base::SharedMemory(shared_state, false)); | 
|  123   if (!command_buffer_->SetSharedStateBuffer(shared_state_shm.Pass())) |  124   if (!shared_state_shm->Map(kSize)) | 
|  124     return false; |  125     return false; | 
|  125  |  126  | 
 |  127   command_buffer_->SetSharedStateBuffer( | 
 |  128       gpu::MakeBackingFromSharedMemory(shared_state_shm.Pass(), kSize)); | 
|  126   return true; |  129   return true; | 
|  127 } |  130 } | 
|  128  |  131  | 
|  129 void CommandBufferImpl::SetGetBuffer(int32_t buffer) { |  132 void CommandBufferImpl::SetGetBuffer(int32_t buffer) { | 
|  130   command_buffer_->SetGetBuffer(buffer); |  133   command_buffer_->SetGetBuffer(buffer); | 
|  131 } |  134 } | 
|  132  |  135  | 
|  133 void CommandBufferImpl::Flush(int32_t put_offset) { |  136 void CommandBufferImpl::Flush(int32_t put_offset) { | 
|  134   command_buffer_->Flush(put_offset); |  137   command_buffer_->Flush(put_offset); | 
|  135 } |  138 } | 
|  136  |  139  | 
|  137 void CommandBufferImpl::MakeProgress(int32_t last_get_offset) { |  140 void CommandBufferImpl::MakeProgress(int32_t last_get_offset) { | 
|  138   // TODO(piman): handle out-of-order. |  141   // TODO(piman): handle out-of-order. | 
|  139   AllocationScope scope; |  142   AllocationScope scope; | 
|  140   sync_client_->DidMakeProgress(command_buffer_->GetState()); |  143   sync_client_->DidMakeProgress(command_buffer_->GetState()); | 
|  141 } |  144 } | 
|  142  |  145  | 
|  143 void CommandBufferImpl::RegisterTransferBuffer(int32_t id, |  146 void CommandBufferImpl::RegisterTransferBuffer(int32_t id, | 
|  144                                                const ShmHandle& transfer_buffer, |  147                                                const ShmHandle& transfer_buffer, | 
|  145                                                uint32_t size) { |  148                                                uint32_t size) { | 
|  146   // Take ownership of the memory and map it into this process. |  149   // Take ownership of the memory and map it into this process. | 
|  147   // This validates the size. |  150   // This validates the size. | 
|  148   scoped_ptr<base::SharedMemory> shared_memory( |  151   scoped_ptr<base::SharedMemory> shared_memory( | 
|  149       new base::SharedMemory(transfer_buffer, false)); |  152       new base::SharedMemory(transfer_buffer, false)); | 
|  150   if (!shared_memory->Map(size)) { |  153   if (!shared_memory->Map(size)) { | 
|  151     DVLOG(0) << "Failed to map shared memory."; |  154     DVLOG(0) << "Failed to map shared memory."; | 
|  152     return; |  155     return; | 
|  153   } |  156   } | 
|  154  |  157  | 
|  155   command_buffer_->RegisterTransferBuffer(id, shared_memory.Pass(), size); |  158   command_buffer_->RegisterTransferBuffer( | 
 |  159       id, gpu::MakeBackingFromSharedMemory(shared_memory.Pass(), size)); | 
|  156 } |  160 } | 
|  157  |  161  | 
|  158 void CommandBufferImpl::DestroyTransferBuffer(int32_t id) { |  162 void CommandBufferImpl::DestroyTransferBuffer(int32_t id) { | 
|  159   command_buffer_->DestroyTransferBuffer(id); |  163   command_buffer_->DestroyTransferBuffer(id); | 
|  160 } |  164 } | 
|  161  |  165  | 
|  162 void CommandBufferImpl::Echo(const Callback<void()>& callback) { |  166 void CommandBufferImpl::Echo(const Callback<void()>& callback) { | 
|  163   callback.Run(); |  167   callback.Run(); | 
|  164 } |  168 } | 
|  165  |  169  | 
|  166 void CommandBufferImpl::RequestAnimationFrames() { |  170 void CommandBufferImpl::RequestAnimationFrames() { | 
|  167   timer_.Start(FROM_HERE, |  171   timer_.Start(FROM_HERE, | 
|  168                base::TimeDelta::FromMilliseconds(16), |  172                base::TimeDelta::FromMilliseconds(16), | 
|  169                this, |  173                this, | 
|  170                &CommandBufferImpl::DrawAnimationFrame); |  174                &CommandBufferImpl::DrawAnimationFrame); | 
|  171 } |  175 } | 
|  172  |  176  | 
|  173 void CommandBufferImpl::CancelAnimationFrames() { timer_.Stop(); } |  177 void CommandBufferImpl::CancelAnimationFrames() { timer_.Stop(); } | 
|  174  |  178  | 
|  175 void CommandBufferImpl::OnParseError() { |  179 void CommandBufferImpl::OnParseError() { | 
|  176   gpu::CommandBuffer::State state = command_buffer_->GetState(); |  180   gpu::CommandBuffer::State state = command_buffer_->GetState(); | 
|  177   client_->LostContext(state.context_lost_reason); |  181   client_->LostContext(state.context_lost_reason); | 
|  178 } |  182 } | 
|  179  |  183  | 
|  180 void CommandBufferImpl::DrawAnimationFrame() { client_->DrawAnimationFrame(); } |  184 void CommandBufferImpl::DrawAnimationFrame() { client_->DrawAnimationFrame(); } | 
|  181  |  185  | 
|  182 }  // namespace services |  186 }  // namespace services | 
|  183 }  // namespace mojo |  187 }  // namespace mojo | 
| OLD | NEW |