| 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> |
| 11 #include <set> | 11 #include <set> |
| 12 #include <utility> | 12 #include <utility> |
| 13 | 13 |
| 14 #include "base/bind.h" | 14 #include "base/bind.h" |
| 15 #include "base/bind_helpers.h" | 15 #include "base/bind_helpers.h" |
| 16 #include "base/command_line.h" | 16 #include "base/command_line.h" |
| 17 #include "base/lazy_instance.h" | 17 #include "base/lazy_instance.h" |
| 18 #include "base/location.h" | 18 #include "base/location.h" |
| 19 #include "base/logging.h" | 19 #include "base/logging.h" |
| 20 #include "base/memory/weak_ptr.h" | 20 #include "base/memory/weak_ptr.h" |
| 21 #include "base/numerics/safe_conversions.h" | 21 #include "base/numerics/safe_conversions.h" |
| 22 #include "base/sequence_checker.h" | 22 #include "base/sequence_checker.h" |
| 23 #include "base/single_thread_task_runner.h" | 23 #include "base/single_thread_task_runner.h" |
| 24 #include "base/thread_task_runner_handle.h" | 24 #include "base/thread_task_runner_handle.h" |
| 25 #include "gpu/command_buffer/client/gpu_control_client.h" | 25 #include "gpu/command_buffer/client/gpu_control_client.h" |
| 26 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" | 26 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" |
| 27 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h" | 27 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h" |
| 28 #include "gpu/command_buffer/common/sync_token.h" | 28 #include "gpu/command_buffer/common/sync_token.h" |
| 29 #include "gpu/command_buffer/common/value_state.h" | |
| 30 #include "gpu/command_buffer/service/command_buffer_service.h" | 29 #include "gpu/command_buffer/service/command_buffer_service.h" |
| 31 #include "gpu/command_buffer/service/command_executor.h" | 30 #include "gpu/command_buffer/service/command_executor.h" |
| 32 #include "gpu/command_buffer/service/context_group.h" | 31 #include "gpu/command_buffer/service/context_group.h" |
| 33 #include "gpu/command_buffer/service/gl_context_virtual.h" | 32 #include "gpu/command_buffer/service/gl_context_virtual.h" |
| 34 #include "gpu/command_buffer/service/gpu_preferences.h" | 33 #include "gpu/command_buffer/service/gpu_preferences.h" |
| 35 #include "gpu/command_buffer/service/image_factory.h" | 34 #include "gpu/command_buffer/service/image_factory.h" |
| 36 #include "gpu/command_buffer/service/image_manager.h" | 35 #include "gpu/command_buffer/service/image_manager.h" |
| 37 #include "gpu/command_buffer/service/mailbox_manager.h" | 36 #include "gpu/command_buffer/service/mailbox_manager.h" |
| 38 #include "gpu/command_buffer/service/memory_program_cache.h" | 37 #include "gpu/command_buffer/service/memory_program_cache.h" |
| 39 #include "gpu/command_buffer/service/memory_tracking.h" | 38 #include "gpu/command_buffer/service/memory_tracking.h" |
| 40 #include "gpu/command_buffer/service/query_manager.h" | 39 #include "gpu/command_buffer/service/query_manager.h" |
| 41 #include "gpu/command_buffer/service/sync_point_manager.h" | 40 #include "gpu/command_buffer/service/sync_point_manager.h" |
| 42 #include "gpu/command_buffer/service/transfer_buffer_manager.h" | 41 #include "gpu/command_buffer/service/transfer_buffer_manager.h" |
| 43 #include "gpu/command_buffer/service/valuebuffer_manager.h" | |
| 44 #include "ui/gfx/geometry/size.h" | 42 #include "ui/gfx/geometry/size.h" |
| 45 #include "ui/gl/gl_context.h" | 43 #include "ui/gl/gl_context.h" |
| 46 #include "ui/gl/gl_image.h" | 44 #include "ui/gl/gl_image.h" |
| 47 #include "ui/gl/gl_image_shared_memory.h" | 45 #include "ui/gl/gl_image_shared_memory.h" |
| 48 #include "ui/gl/gl_share_group.h" | 46 #include "ui/gl/gl_share_group.h" |
| 49 | 47 |
| 50 #if defined(OS_WIN) | 48 #if defined(OS_WIN) |
| 51 #include <windows.h> | 49 #include <windows.h> |
| 52 #include "base/process/process_handle.h" | 50 #include "base/process/process_handle.h" |
| 53 #endif | 51 #endif |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 } | 172 } |
| 175 | 173 |
| 176 scoped_refptr<gles2::MailboxManager> | 174 scoped_refptr<gles2::MailboxManager> |
| 177 InProcessCommandBuffer::Service::mailbox_manager() { | 175 InProcessCommandBuffer::Service::mailbox_manager() { |
| 178 if (!mailbox_manager_.get()) { | 176 if (!mailbox_manager_.get()) { |
| 179 mailbox_manager_ = gles2::MailboxManager::Create(gpu_preferences()); | 177 mailbox_manager_ = gles2::MailboxManager::Create(gpu_preferences()); |
| 180 } | 178 } |
| 181 return mailbox_manager_; | 179 return mailbox_manager_; |
| 182 } | 180 } |
| 183 | 181 |
| 184 scoped_refptr<gles2::SubscriptionRefSet> | |
| 185 InProcessCommandBuffer::Service::subscription_ref_set() { | |
| 186 if (!subscription_ref_set_.get()) { | |
| 187 subscription_ref_set_ = new gles2::SubscriptionRefSet(); | |
| 188 } | |
| 189 return subscription_ref_set_; | |
| 190 } | |
| 191 | |
| 192 scoped_refptr<ValueStateMap> | |
| 193 InProcessCommandBuffer::Service::pending_valuebuffer_state() { | |
| 194 if (!pending_valuebuffer_state_.get()) { | |
| 195 pending_valuebuffer_state_ = new ValueStateMap(); | |
| 196 } | |
| 197 return pending_valuebuffer_state_; | |
| 198 } | |
| 199 | |
| 200 gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() { | 182 gpu::gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() { |
| 201 if (!program_cache_.get() && | 183 if (!program_cache_.get() && |
| 202 (gfx::g_driver_gl.ext.b_GL_ARB_get_program_binary || | 184 (gfx::g_driver_gl.ext.b_GL_ARB_get_program_binary || |
| 203 gfx::g_driver_gl.ext.b_GL_OES_get_program_binary) && | 185 gfx::g_driver_gl.ext.b_GL_OES_get_program_binary) && |
| 204 !gpu_preferences().disable_gpu_program_cache) { | 186 !gpu_preferences().disable_gpu_program_cache) { |
| 205 program_cache_.reset(new gpu::gles2::MemoryProgramCache( | 187 program_cache_.reset(new gpu::gles2::MemoryProgramCache( |
| 206 gpu_preferences().gpu_program_cache_size, | 188 gpu_preferences().gpu_program_cache_size, |
| 207 gpu_preferences().disable_gpu_shader_disk_cache)); | 189 gpu_preferences().disable_gpu_shader_disk_cache)); |
| 208 } | 190 } |
| 209 return program_cache_.get(); | 191 return program_cache_.get(); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 bool bind_generates_resource = false; | 329 bool bind_generates_resource = false; |
| 348 scoped_refptr<gles2::FeatureInfo> feature_info = | 330 scoped_refptr<gles2::FeatureInfo> feature_info = |
| 349 new gles2::FeatureInfo(service_->gpu_driver_bug_workarounds()); | 331 new gles2::FeatureInfo(service_->gpu_driver_bug_workarounds()); |
| 350 decoder_.reset(gles2::GLES2Decoder::Create( | 332 decoder_.reset(gles2::GLES2Decoder::Create( |
| 351 params.context_group | 333 params.context_group |
| 352 ? params.context_group->decoder_->GetContextGroup() | 334 ? params.context_group->decoder_->GetContextGroup() |
| 353 : new gles2::ContextGroup( | 335 : new gles2::ContextGroup( |
| 354 service_->gpu_preferences(), service_->mailbox_manager(), NULL, | 336 service_->gpu_preferences(), service_->mailbox_manager(), NULL, |
| 355 service_->shader_translator_cache(), | 337 service_->shader_translator_cache(), |
| 356 service_->framebuffer_completeness_cache(), feature_info, | 338 service_->framebuffer_completeness_cache(), feature_info, |
| 357 service_->subscription_ref_set(), | |
| 358 service_->pending_valuebuffer_state(), | |
| 359 bind_generates_resource))); | 339 bind_generates_resource))); |
| 360 | 340 |
| 361 executor_.reset(new CommandExecutor(command_buffer.get(), decoder_.get(), | 341 executor_.reset(new CommandExecutor(command_buffer.get(), decoder_.get(), |
| 362 decoder_.get())); | 342 decoder_.get())); |
| 363 command_buffer->SetGetBufferChangeCallback(base::Bind( | 343 command_buffer->SetGetBufferChangeCallback(base::Bind( |
| 364 &CommandExecutor::SetGetBuffer, base::Unretained(executor_.get()))); | 344 &CommandExecutor::SetGetBuffer, base::Unretained(executor_.get()))); |
| 365 command_buffer_ = std::move(command_buffer); | 345 command_buffer_ = std::move(command_buffer); |
| 366 | 346 |
| 367 decoder_->set_engine(executor_.get()); | 347 decoder_->set_engine(executor_.get()); |
| 368 | 348 |
| (...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 framebuffer_completeness_cache_ = | 1061 framebuffer_completeness_cache_ = |
| 1082 new gpu::gles2::FramebufferCompletenessCache; | 1062 new gpu::gles2::FramebufferCompletenessCache; |
| 1083 return framebuffer_completeness_cache_; | 1063 return framebuffer_completeness_cache_; |
| 1084 } | 1064 } |
| 1085 | 1065 |
| 1086 SyncPointManager* GpuInProcessThread::sync_point_manager() { | 1066 SyncPointManager* GpuInProcessThread::sync_point_manager() { |
| 1087 return sync_point_manager_; | 1067 return sync_point_manager_; |
| 1088 } | 1068 } |
| 1089 | 1069 |
| 1090 } // namespace gpu | 1070 } // namespace gpu |
| OLD | NEW |