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 |