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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 | 83 |
84 private: | 84 private: |
85 SyncPointOrderData* order_data_; | 85 SyncPointOrderData* order_data_; |
86 uint32_t order_num_; | 86 uint32_t order_num_; |
87 }; | 87 }; |
88 | 88 |
89 struct GpuInProcessThreadHolder { | 89 struct GpuInProcessThreadHolder { |
90 GpuInProcessThreadHolder() | 90 GpuInProcessThreadHolder() |
91 : sync_point_manager(new SyncPointManager(false)), | 91 : sync_point_manager(new SyncPointManager(false)), |
92 gpu_thread(new GpuInProcessThread(sync_point_manager.get())) {} | 92 gpu_thread(new GpuInProcessThread(sync_point_manager.get())) {} |
93 scoped_ptr<SyncPointManager> sync_point_manager; | 93 std::unique_ptr<SyncPointManager> sync_point_manager; |
94 scoped_refptr<InProcessCommandBuffer::Service> gpu_thread; | 94 scoped_refptr<InProcessCommandBuffer::Service> gpu_thread; |
95 }; | 95 }; |
96 | 96 |
97 base::LazyInstance<GpuInProcessThreadHolder> g_default_service = | 97 base::LazyInstance<GpuInProcessThreadHolder> g_default_service = |
98 LAZY_INSTANCE_INITIALIZER; | 98 LAZY_INSTANCE_INITIALIZER; |
99 | 99 |
100 class ScopedEvent { | 100 class ScopedEvent { |
101 public: | 101 public: |
102 explicit ScopedEvent(base::WaitableEvent* event) : event_(event) {} | 102 explicit ScopedEvent(base::WaitableEvent* event) : event_(event) {} |
103 ~ScopedEvent() { event_->Signal(); } | 103 ~ScopedEvent() { event_->Signal(); } |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 const InitializeOnGpuThreadParams& params) { | 318 const InitializeOnGpuThreadParams& params) { |
319 CheckSequencedThread(); | 319 CheckSequencedThread(); |
320 gpu_thread_weak_ptr_ = gpu_thread_weak_ptr_factory_.GetWeakPtr(); | 320 gpu_thread_weak_ptr_ = gpu_thread_weak_ptr_factory_.GetWeakPtr(); |
321 | 321 |
322 DCHECK(params.size.width() >= 0 && params.size.height() >= 0); | 322 DCHECK(params.size.width() >= 0 && params.size.height() >= 0); |
323 | 323 |
324 TransferBufferManager* manager = new TransferBufferManager(nullptr); | 324 TransferBufferManager* manager = new TransferBufferManager(nullptr); |
325 transfer_buffer_manager_ = manager; | 325 transfer_buffer_manager_ = manager; |
326 manager->Initialize(); | 326 manager->Initialize(); |
327 | 327 |
328 scoped_ptr<CommandBufferService> command_buffer( | 328 std::unique_ptr<CommandBufferService> command_buffer( |
329 new CommandBufferService(transfer_buffer_manager_.get())); | 329 new CommandBufferService(transfer_buffer_manager_.get())); |
330 command_buffer->SetPutOffsetChangeCallback(base::Bind( | 330 command_buffer->SetPutOffsetChangeCallback(base::Bind( |
331 &InProcessCommandBuffer::PumpCommandsOnGpuThread, gpu_thread_weak_ptr_)); | 331 &InProcessCommandBuffer::PumpCommandsOnGpuThread, gpu_thread_weak_ptr_)); |
332 command_buffer->SetParseErrorCallback(base::Bind( | 332 command_buffer->SetParseErrorCallback(base::Bind( |
333 &InProcessCommandBuffer::OnContextLostOnGpuThread, gpu_thread_weak_ptr_)); | 333 &InProcessCommandBuffer::OnContextLostOnGpuThread, gpu_thread_weak_ptr_)); |
334 | 334 |
335 if (!command_buffer->Initialize()) { | 335 if (!command_buffer->Initialize()) { |
336 LOG(ERROR) << "Could not initialize command buffer."; | 336 LOG(ERROR) << "Could not initialize command buffer."; |
337 DestroyOnGpuThread(); | 337 DestroyOnGpuThread(); |
338 return false; | 338 return false; |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
835 } | 835 } |
836 | 836 |
837 int32_t InProcessCommandBuffer::CreateGpuMemoryBufferImage( | 837 int32_t InProcessCommandBuffer::CreateGpuMemoryBufferImage( |
838 size_t width, | 838 size_t width, |
839 size_t height, | 839 size_t height, |
840 unsigned internalformat, | 840 unsigned internalformat, |
841 unsigned usage) { | 841 unsigned usage) { |
842 CheckSequencedThread(); | 842 CheckSequencedThread(); |
843 | 843 |
844 DCHECK(gpu_memory_buffer_manager_); | 844 DCHECK(gpu_memory_buffer_manager_); |
845 scoped_ptr<gfx::GpuMemoryBuffer> buffer( | 845 std::unique_ptr<gfx::GpuMemoryBuffer> buffer( |
846 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( | 846 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( |
847 gfx::Size(width, height), | 847 gfx::Size(width, height), |
848 gpu::DefaultBufferFormatForImageFormat(internalformat), | 848 gpu::DefaultBufferFormatForImageFormat(internalformat), |
849 gfx::BufferUsage::SCANOUT, 0 /* surface_id */)); | 849 gfx::BufferUsage::SCANOUT, 0 /* surface_id */)); |
850 if (!buffer) | 850 if (!buffer) |
851 return -1; | 851 return -1; |
852 | 852 |
853 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); | 853 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); |
854 } | 854 } |
855 | 855 |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1020 const base::Closure& callback) { | 1020 const base::Closure& callback) { |
1021 // The task_runner.get() check is to support using InProcessCommandBuffer on | 1021 // The task_runner.get() check is to support using InProcessCommandBuffer on |
1022 // a thread without a message loop. | 1022 // a thread without a message loop. |
1023 if (task_runner.get() && !task_runner->BelongsToCurrentThread()) { | 1023 if (task_runner.get() && !task_runner->BelongsToCurrentThread()) { |
1024 task_runner->PostTask(FROM_HERE, callback); | 1024 task_runner->PostTask(FROM_HERE, callback); |
1025 } else { | 1025 } else { |
1026 callback.Run(); | 1026 callback.Run(); |
1027 } | 1027 } |
1028 } | 1028 } |
1029 | 1029 |
1030 void RunOnTargetThread(scoped_ptr<base::Closure> callback) { | 1030 void RunOnTargetThread(std::unique_ptr<base::Closure> callback) { |
1031 DCHECK(callback.get()); | 1031 DCHECK(callback.get()); |
1032 callback->Run(); | 1032 callback->Run(); |
1033 } | 1033 } |
1034 | 1034 |
1035 } // anonymous namespace | 1035 } // anonymous namespace |
1036 | 1036 |
1037 base::Closure InProcessCommandBuffer::WrapCallback( | 1037 base::Closure InProcessCommandBuffer::WrapCallback( |
1038 const base::Closure& callback) { | 1038 const base::Closure& callback) { |
1039 // Make sure the callback gets deleted on the target thread by passing | 1039 // Make sure the callback gets deleted on the target thread by passing |
1040 // ownership. | 1040 // ownership. |
1041 scoped_ptr<base::Closure> scoped_callback(new base::Closure(callback)); | 1041 std::unique_ptr<base::Closure> scoped_callback(new base::Closure(callback)); |
1042 base::Closure callback_on_client_thread = | 1042 base::Closure callback_on_client_thread = |
1043 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); | 1043 base::Bind(&RunOnTargetThread, base::Passed(&scoped_callback)); |
1044 base::Closure wrapped_callback = | 1044 base::Closure wrapped_callback = |
1045 base::Bind(&PostCallback, base::ThreadTaskRunnerHandle::IsSet() | 1045 base::Bind(&PostCallback, base::ThreadTaskRunnerHandle::IsSet() |
1046 ? base::ThreadTaskRunnerHandle::Get() | 1046 ? base::ThreadTaskRunnerHandle::Get() |
1047 : nullptr, | 1047 : nullptr, |
1048 callback_on_client_thread); | 1048 callback_on_client_thread); |
1049 return wrapped_callback; | 1049 return wrapped_callback; |
1050 } | 1050 } |
1051 | 1051 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1114 framebuffer_completeness_cache_ = | 1114 framebuffer_completeness_cache_ = |
1115 new gpu::gles2::FramebufferCompletenessCache; | 1115 new gpu::gles2::FramebufferCompletenessCache; |
1116 return framebuffer_completeness_cache_; | 1116 return framebuffer_completeness_cache_; |
1117 } | 1117 } |
1118 | 1118 |
1119 SyncPointManager* GpuInProcessThread::sync_point_manager() { | 1119 SyncPointManager* GpuInProcessThread::sync_point_manager() { |
1120 return sync_point_manager_; | 1120 return sync_point_manager_; |
1121 } | 1121 } |
1122 | 1122 |
1123 } // namespace gpu | 1123 } // namespace gpu |
OLD | NEW |