| 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 "gpu/command_buffer/service/in_process_command_buffer.h" | 5 #include "gpu/command_buffer/service/in_process_command_buffer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 | 81 |
| 82 private: | 82 private: |
| 83 SyncPointOrderData* order_data_; | 83 SyncPointOrderData* order_data_; |
| 84 uint32_t order_num_; | 84 uint32_t order_num_; |
| 85 }; | 85 }; |
| 86 | 86 |
| 87 struct GpuInProcessThreadHolder { | 87 struct GpuInProcessThreadHolder { |
| 88 GpuInProcessThreadHolder() | 88 GpuInProcessThreadHolder() |
| 89 : sync_point_manager(new SyncPointManager(false)), | 89 : sync_point_manager(new SyncPointManager(false)), |
| 90 gpu_thread(new GpuInProcessThread(sync_point_manager.get())) {} | 90 gpu_thread(new GpuInProcessThread(sync_point_manager.get())) {} |
| 91 scoped_ptr<SyncPointManager> sync_point_manager; | 91 std::unique_ptr<SyncPointManager> sync_point_manager; |
| 92 scoped_refptr<InProcessCommandBuffer::Service> gpu_thread; | 92 scoped_refptr<InProcessCommandBuffer::Service> gpu_thread; |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 base::LazyInstance<GpuInProcessThreadHolder> g_default_service = | 95 base::LazyInstance<GpuInProcessThreadHolder> g_default_service = |
| 96 LAZY_INSTANCE_INITIALIZER; | 96 LAZY_INSTANCE_INITIALIZER; |
| 97 | 97 |
| 98 class ScopedEvent { | 98 class ScopedEvent { |
| 99 public: | 99 public: |
| 100 explicit ScopedEvent(base::WaitableEvent* event) : event_(event) {} | 100 explicit ScopedEvent(base::WaitableEvent* event) : event_(event) {} |
| 101 ~ScopedEvent() { event_->Signal(); } | 101 ~ScopedEvent() { event_->Signal(); } |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 const InitializeOnGpuThreadParams& params) { | 313 const InitializeOnGpuThreadParams& params) { |
| 314 CheckSequencedThread(); | 314 CheckSequencedThread(); |
| 315 gpu_thread_weak_ptr_ = gpu_thread_weak_ptr_factory_.GetWeakPtr(); | 315 gpu_thread_weak_ptr_ = gpu_thread_weak_ptr_factory_.GetWeakPtr(); |
| 316 | 316 |
| 317 DCHECK(params.size.width() >= 0 && params.size.height() >= 0); | 317 DCHECK(params.size.width() >= 0 && params.size.height() >= 0); |
| 318 | 318 |
| 319 TransferBufferManager* manager = new TransferBufferManager(nullptr); | 319 TransferBufferManager* manager = new TransferBufferManager(nullptr); |
| 320 transfer_buffer_manager_ = manager; | 320 transfer_buffer_manager_ = manager; |
| 321 manager->Initialize(); | 321 manager->Initialize(); |
| 322 | 322 |
| 323 scoped_ptr<CommandBufferService> command_buffer( | 323 std::unique_ptr<CommandBufferService> command_buffer( |
| 324 new CommandBufferService(transfer_buffer_manager_.get())); | 324 new CommandBufferService(transfer_buffer_manager_.get())); |
| 325 command_buffer->SetPutOffsetChangeCallback(base::Bind( | 325 command_buffer->SetPutOffsetChangeCallback(base::Bind( |
| 326 &InProcessCommandBuffer::PumpCommands, gpu_thread_weak_ptr_)); | 326 &InProcessCommandBuffer::PumpCommands, gpu_thread_weak_ptr_)); |
| 327 command_buffer->SetParseErrorCallback(base::Bind( | 327 command_buffer->SetParseErrorCallback(base::Bind( |
| 328 &InProcessCommandBuffer::OnContextLost, gpu_thread_weak_ptr_)); | 328 &InProcessCommandBuffer::OnContextLost, gpu_thread_weak_ptr_)); |
| 329 | 329 |
| 330 if (!command_buffer->Initialize()) { | 330 if (!command_buffer->Initialize()) { |
| 331 LOG(ERROR) << "Could not initialize command buffer."; | 331 LOG(ERROR) << "Could not initialize command buffer."; |
| 332 DestroyOnGpuThread(); | 332 DestroyOnGpuThread(); |
| 333 return false; | 333 return false; |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 } | 814 } |
| 815 | 815 |
| 816 int32_t InProcessCommandBuffer::CreateGpuMemoryBufferImage( | 816 int32_t InProcessCommandBuffer::CreateGpuMemoryBufferImage( |
| 817 size_t width, | 817 size_t width, |
| 818 size_t height, | 818 size_t height, |
| 819 unsigned internalformat, | 819 unsigned internalformat, |
| 820 unsigned usage) { | 820 unsigned usage) { |
| 821 CheckSequencedThread(); | 821 CheckSequencedThread(); |
| 822 | 822 |
| 823 DCHECK(gpu_memory_buffer_manager_); | 823 DCHECK(gpu_memory_buffer_manager_); |
| 824 scoped_ptr<gfx::GpuMemoryBuffer> buffer( | 824 std::unique_ptr<gfx::GpuMemoryBuffer> buffer( |
| 825 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( | 825 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( |
| 826 gfx::Size(width, height), | 826 gfx::Size(width, height), |
| 827 gpu::ImageFactory::DefaultBufferFormatForImageFormat(internalformat), | 827 gpu::ImageFactory::DefaultBufferFormatForImageFormat(internalformat), |
| 828 gfx::BufferUsage::SCANOUT)); | 828 gfx::BufferUsage::SCANOUT)); |
| 829 if (!buffer) | 829 if (!buffer) |
| 830 return -1; | 830 return -1; |
| 831 | 831 |
| 832 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); | 832 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); |
| 833 } | 833 } |
| 834 | 834 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 997 const base::Closure& callback) { | 997 const base::Closure& callback) { |
| 998 // The task_runner.get() check is to support using InProcessCommandBuffer on | 998 // The task_runner.get() check is to support using InProcessCommandBuffer on |
| 999 // a thread without a message loop. | 999 // a thread without a message loop. |
| 1000 if (task_runner.get() && !task_runner->BelongsToCurrentThread()) { | 1000 if (task_runner.get() && !task_runner->BelongsToCurrentThread()) { |
| 1001 task_runner->PostTask(FROM_HERE, callback); | 1001 task_runner->PostTask(FROM_HERE, callback); |
| 1002 } else { | 1002 } else { |
| 1003 callback.Run(); | 1003 callback.Run(); |
| 1004 } | 1004 } |
| 1005 } | 1005 } |
| 1006 | 1006 |
| 1007 void RunOnTargetThread(scoped_ptr<base::Closure> callback) { | 1007 void RunOnTargetThread(std::unique_ptr<base::Closure> callback) { |
| 1008 DCHECK(callback.get()); | 1008 DCHECK(callback.get()); |
| 1009 callback->Run(); | 1009 callback->Run(); |
| 1010 } | 1010 } |
| 1011 | 1011 |
| 1012 } // anonymous namespace | 1012 } // anonymous namespace |
| 1013 | 1013 |
| 1014 base::Closure InProcessCommandBuffer::WrapCallback( | 1014 base::Closure InProcessCommandBuffer::WrapCallback( |
| 1015 const base::Closure& callback) { | 1015 const base::Closure& callback) { |
| 1016 // Make sure the callback gets deleted on the target thread by passing | 1016 // Make sure the callback gets deleted on the target thread by passing |
| 1017 // ownership. | 1017 // ownership. |
| 1018 scoped_ptr<base::Closure> scoped_callback(new base::Closure(callback)); | 1018 std::unique_ptr<base::Closure> scoped_callback(new base::Closure(callback)); |
| 1019 base::Closure callback_on_client_thread = | 1019 base::Closure callback_on_client_thread = |
| 1020 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); | 1020 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); |
| 1021 base::Closure wrapped_callback = | 1021 base::Closure wrapped_callback = |
| 1022 base::Bind(&PostCallback, base::ThreadTaskRunnerHandle::IsSet() | 1022 base::Bind(&PostCallback, base::ThreadTaskRunnerHandle::IsSet() |
| 1023 ? base::ThreadTaskRunnerHandle::Get() | 1023 ? base::ThreadTaskRunnerHandle::Get() |
| 1024 : nullptr, | 1024 : nullptr, |
| 1025 callback_on_client_thread); | 1025 callback_on_client_thread); |
| 1026 return wrapped_callback; | 1026 return wrapped_callback; |
| 1027 } | 1027 } |
| 1028 | 1028 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1091 framebuffer_completeness_cache_ = | 1091 framebuffer_completeness_cache_ = |
| 1092 new gpu::gles2::FramebufferCompletenessCache; | 1092 new gpu::gles2::FramebufferCompletenessCache; |
| 1093 return framebuffer_completeness_cache_; | 1093 return framebuffer_completeness_cache_; |
| 1094 } | 1094 } |
| 1095 | 1095 |
| 1096 SyncPointManager* GpuInProcessThread::sync_point_manager() { | 1096 SyncPointManager* GpuInProcessThread::sync_point_manager() { |
| 1097 return sync_point_manager_; | 1097 return sync_point_manager_; |
| 1098 } | 1098 } |
| 1099 | 1099 |
| 1100 } // namespace gpu | 1100 } // namespace gpu |
| OLD | NEW |