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 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 | 78 |
79 private: | 79 private: |
80 SyncPointOrderData* order_data_; | 80 SyncPointOrderData* order_data_; |
81 uint32_t order_num_; | 81 uint32_t order_num_; |
82 }; | 82 }; |
83 | 83 |
84 struct GpuInProcessThreadHolder { | 84 struct GpuInProcessThreadHolder { |
85 GpuInProcessThreadHolder() | 85 GpuInProcessThreadHolder() |
86 : sync_point_manager(new SyncPointManager(false)), | 86 : sync_point_manager(new SyncPointManager(false)), |
87 gpu_thread(new GpuInProcessThread(sync_point_manager.get())) {} | 87 gpu_thread(new GpuInProcessThread(sync_point_manager.get())) {} |
88 scoped_ptr<SyncPointManager> sync_point_manager; | 88 std::unique_ptr<SyncPointManager> sync_point_manager; |
89 scoped_refptr<InProcessCommandBuffer::Service> gpu_thread; | 89 scoped_refptr<InProcessCommandBuffer::Service> gpu_thread; |
90 }; | 90 }; |
91 | 91 |
92 base::LazyInstance<GpuInProcessThreadHolder> g_default_service = | 92 base::LazyInstance<GpuInProcessThreadHolder> g_default_service = |
93 LAZY_INSTANCE_INITIALIZER; | 93 LAZY_INSTANCE_INITIALIZER; |
94 | 94 |
95 class ScopedEvent { | 95 class ScopedEvent { |
96 public: | 96 public: |
97 explicit ScopedEvent(base::WaitableEvent* event) : event_(event) {} | 97 explicit ScopedEvent(base::WaitableEvent* event) : event_(event) {} |
98 ~ScopedEvent() { event_->Signal(); } | 98 ~ScopedEvent() { event_->Signal(); } |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 const InitializeOnGpuThreadParams& params) { | 320 const InitializeOnGpuThreadParams& params) { |
321 CheckSequencedThread(); | 321 CheckSequencedThread(); |
322 gpu_thread_weak_ptr_ = gpu_thread_weak_ptr_factory_.GetWeakPtr(); | 322 gpu_thread_weak_ptr_ = gpu_thread_weak_ptr_factory_.GetWeakPtr(); |
323 | 323 |
324 DCHECK(params.size.width() >= 0 && params.size.height() >= 0); | 324 DCHECK(params.size.width() >= 0 && params.size.height() >= 0); |
325 | 325 |
326 TransferBufferManager* manager = new TransferBufferManager(nullptr); | 326 TransferBufferManager* manager = new TransferBufferManager(nullptr); |
327 transfer_buffer_manager_ = manager; | 327 transfer_buffer_manager_ = manager; |
328 manager->Initialize(); | 328 manager->Initialize(); |
329 | 329 |
330 scoped_ptr<CommandBufferService> command_buffer( | 330 std::unique_ptr<CommandBufferService> command_buffer( |
331 new CommandBufferService(transfer_buffer_manager_.get())); | 331 new CommandBufferService(transfer_buffer_manager_.get())); |
332 command_buffer->SetPutOffsetChangeCallback(base::Bind( | 332 command_buffer->SetPutOffsetChangeCallback(base::Bind( |
333 &InProcessCommandBuffer::PumpCommandsOnGpuThread, gpu_thread_weak_ptr_)); | 333 &InProcessCommandBuffer::PumpCommandsOnGpuThread, gpu_thread_weak_ptr_)); |
334 command_buffer->SetParseErrorCallback(base::Bind( | 334 command_buffer->SetParseErrorCallback(base::Bind( |
335 &InProcessCommandBuffer::OnContextLostOnGpuThread, gpu_thread_weak_ptr_)); | 335 &InProcessCommandBuffer::OnContextLostOnGpuThread, gpu_thread_weak_ptr_)); |
336 | 336 |
337 if (!command_buffer->Initialize()) { | 337 if (!command_buffer->Initialize()) { |
338 LOG(ERROR) << "Could not initialize command buffer."; | 338 LOG(ERROR) << "Could not initialize command buffer."; |
339 DestroyOnGpuThread(); | 339 DestroyOnGpuThread(); |
340 return false; | 340 return false; |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
832 } | 832 } |
833 | 833 |
834 int32_t InProcessCommandBuffer::CreateGpuMemoryBufferImage( | 834 int32_t InProcessCommandBuffer::CreateGpuMemoryBufferImage( |
835 size_t width, | 835 size_t width, |
836 size_t height, | 836 size_t height, |
837 unsigned internalformat, | 837 unsigned internalformat, |
838 unsigned usage) { | 838 unsigned usage) { |
839 CheckSequencedThread(); | 839 CheckSequencedThread(); |
840 | 840 |
841 DCHECK(gpu_memory_buffer_manager_); | 841 DCHECK(gpu_memory_buffer_manager_); |
842 scoped_ptr<gfx::GpuMemoryBuffer> buffer( | 842 std::unique_ptr<gfx::GpuMemoryBuffer> buffer( |
843 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( | 843 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( |
844 gfx::Size(width, height), | 844 gfx::Size(width, height), |
845 gpu::DefaultBufferFormatForImageFormat(internalformat), | 845 gpu::DefaultBufferFormatForImageFormat(internalformat), |
846 gfx::BufferUsage::SCANOUT, 0 /* surface_id */)); | 846 gfx::BufferUsage::SCANOUT, 0 /* surface_id */)); |
847 if (!buffer) | 847 if (!buffer) |
848 return -1; | 848 return -1; |
849 | 849 |
850 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); | 850 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); |
851 } | 851 } |
852 | 852 |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 const base::Closure& callback) { | 1007 const base::Closure& callback) { |
1008 // The task_runner.get() check is to support using InProcessCommandBuffer on | 1008 // The task_runner.get() check is to support using InProcessCommandBuffer on |
1009 // a thread without a message loop. | 1009 // a thread without a message loop. |
1010 if (task_runner.get() && !task_runner->BelongsToCurrentThread()) { | 1010 if (task_runner.get() && !task_runner->BelongsToCurrentThread()) { |
1011 task_runner->PostTask(FROM_HERE, callback); | 1011 task_runner->PostTask(FROM_HERE, callback); |
1012 } else { | 1012 } else { |
1013 callback.Run(); | 1013 callback.Run(); |
1014 } | 1014 } |
1015 } | 1015 } |
1016 | 1016 |
1017 void RunOnTargetThread(scoped_ptr<base::Closure> callback) { | 1017 void RunOnTargetThread(std::unique_ptr<base::Closure> callback) { |
1018 DCHECK(callback.get()); | 1018 DCHECK(callback.get()); |
1019 callback->Run(); | 1019 callback->Run(); |
1020 } | 1020 } |
1021 | 1021 |
1022 } // anonymous namespace | 1022 } // anonymous namespace |
1023 | 1023 |
1024 base::Closure InProcessCommandBuffer::WrapCallback( | 1024 base::Closure InProcessCommandBuffer::WrapCallback( |
1025 const base::Closure& callback) { | 1025 const base::Closure& callback) { |
1026 // Make sure the callback gets deleted on the target thread by passing | 1026 // Make sure the callback gets deleted on the target thread by passing |
1027 // ownership. | 1027 // ownership. |
1028 scoped_ptr<base::Closure> scoped_callback(new base::Closure(callback)); | 1028 std::unique_ptr<base::Closure> scoped_callback(new base::Closure(callback)); |
1029 base::Closure callback_on_client_thread = | 1029 base::Closure callback_on_client_thread = |
1030 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); | 1030 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); |
1031 base::Closure wrapped_callback = | 1031 base::Closure wrapped_callback = |
1032 base::Bind(&PostCallback, base::ThreadTaskRunnerHandle::IsSet() | 1032 base::Bind(&PostCallback, base::ThreadTaskRunnerHandle::IsSet() |
1033 ? base::ThreadTaskRunnerHandle::Get() | 1033 ? base::ThreadTaskRunnerHandle::Get() |
1034 : nullptr, | 1034 : nullptr, |
1035 callback_on_client_thread); | 1035 callback_on_client_thread); |
1036 return wrapped_callback; | 1036 return wrapped_callback; |
1037 } | 1037 } |
1038 | 1038 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1081 framebuffer_completeness_cache_ = | 1081 framebuffer_completeness_cache_ = |
1082 new gpu::gles2::FramebufferCompletenessCache; | 1082 new gpu::gles2::FramebufferCompletenessCache; |
1083 return framebuffer_completeness_cache_; | 1083 return framebuffer_completeness_cache_; |
1084 } | 1084 } |
1085 | 1085 |
1086 SyncPointManager* GpuInProcessThread::sync_point_manager() { | 1086 SyncPointManager* GpuInProcessThread::sync_point_manager() { |
1087 return sync_point_manager_; | 1087 return sync_point_manager_; |
1088 } | 1088 } |
1089 | 1089 |
1090 } // namespace gpu | 1090 } // namespace gpu |
OLD | NEW |