Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 5 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
| 6 | 6 |
| 7 #include "third_party/khronos/GLES2/gl2.h" | 7 #include "third_party/khronos/GLES2/gl2.h" |
| 8 #ifndef GL_GLEXT_PROTOTYPES | 8 #ifndef GL_GLEXT_PROTOTYPES |
| 9 #define GL_GLEXT_PROTOTYPES 1 | 9 #define GL_GLEXT_PROTOTYPES 1 |
| 10 #endif | 10 #endif |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 << command_buffer_->GetLastError(); | 220 << command_buffer_->GetLastError(); |
| 221 // Initialize the command buffer. | 221 // Initialize the command buffer. |
| 222 bool result = command_buffer_->Initialize(); | 222 bool result = command_buffer_->Initialize(); |
| 223 LOG_IF(ERROR, !result) << "CommandBufferProxy::Initialize failed."; | 223 LOG_IF(ERROR, !result) << "CommandBufferProxy::Initialize failed."; |
| 224 return result; | 224 return result; |
| 225 } | 225 } |
| 226 | 226 |
| 227 bool WebGraphicsContext3DCommandBufferImpl::CreateContext(bool onscreen) { | 227 bool WebGraphicsContext3DCommandBufferImpl::CreateContext(bool onscreen) { |
| 228 TRACE_EVENT0("gpu", "WebGfxCtx3DCmdBfrImpl::CreateContext"); | 228 TRACE_EVENT0("gpu", "WebGfxCtx3DCmdBfrImpl::CreateContext"); |
| 229 // Ensure the gles2 library is initialized first in a thread safe way. | 229 // Ensure the gles2 library is initialized first in a thread safe way. |
| 230 g_gles2_initializer.Get(); | 230 g_gles2_initializer.Get(); |
|
piman
2014/08/15 17:47:34
If we move out the ::gles2::SetGLContext, then we
| |
| 231 | 231 |
| 232 scoped_refptr<gpu::gles2::ShareGroup> gles2_share_group; | 232 scoped_refptr<gpu::gles2::ShareGroup> gles2_share_group; |
| 233 | 233 |
| 234 scoped_ptr<base::AutoLock> share_group_lock; | 234 scoped_ptr<base::AutoLock> share_group_lock; |
| 235 bool add_to_share_group = false; | 235 bool add_to_share_group = false; |
| 236 if (!command_buffer_) { | 236 if (!command_buffer_) { |
| 237 WebGraphicsContext3DCommandBufferImpl* share_context = NULL; | 237 WebGraphicsContext3DCommandBufferImpl* share_context = NULL; |
| 238 | 238 |
| 239 share_group_lock.reset(new base::AutoLock(share_group_->lock())); | 239 share_group_lock.reset(new base::AutoLock(share_group_->lock())); |
| 240 share_context = share_group_->GetAnyContextLocked(); | 240 share_context = share_group_->GetAnyContextLocked(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 289 share_group_->AddContextLocked(this); | 289 share_group_->AddContextLocked(this); |
| 290 | 290 |
| 291 if (CommandLine::ForCurrentProcess()->HasSwitch( | 291 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 292 switches::kEnableGpuClientTracing)) { | 292 switches::kEnableGpuClientTracing)) { |
| 293 trace_gl_.reset(new gpu::gles2::GLES2TraceImplementation(GetGLInterface())); | 293 trace_gl_.reset(new gpu::gles2::GLES2TraceImplementation(GetGLInterface())); |
| 294 setGLInterface(trace_gl_.get()); | 294 setGLInterface(trace_gl_.get()); |
| 295 } | 295 } |
| 296 return true; | 296 return true; |
| 297 } | 297 } |
| 298 | 298 |
| 299 bool WebGraphicsContext3DCommandBufferImpl::makeContextCurrent() { | 299 bool WebGraphicsContext3DCommandBufferImpl::BindToCurrentThread() { |
| 300 if (!MaybeInitializeGL()) { | 300 if (!MaybeInitializeGL()) { |
| 301 DLOG(ERROR) << "Failed to initialize context."; | 301 DLOG(ERROR) << "Failed to initialize context."; |
| 302 return false; | 302 return false; |
| 303 } | 303 } |
| 304 gles2::SetGLContext(GetGLInterface()); | |
| 305 if (gpu::error::IsError(command_buffer_->GetLastError())) { | 304 if (gpu::error::IsError(command_buffer_->GetLastError())) { |
| 306 LOG(ERROR) << "Context dead on arrival. Last error: " | 305 LOG(ERROR) << "Context dead on arrival. Last error: " |
| 307 << command_buffer_->GetLastError(); | 306 << command_buffer_->GetLastError(); |
| 308 return false; | 307 return false; |
| 309 } | 308 } |
| 310 | 309 |
| 311 return true; | 310 return true; |
| 312 } | 311 } |
| 313 | 312 |
| 314 void WebGraphicsContext3DCommandBufferImpl::Destroy() { | 313 void WebGraphicsContext3DCommandBufferImpl::Destroy() { |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 422 share_group_->RemoveAllContexts(); | 421 share_group_->RemoveAllContexts(); |
| 423 | 422 |
| 424 DCHECK(host_.get()); | 423 DCHECK(host_.get()); |
| 425 { | 424 { |
| 426 base::AutoLock lock(g_default_share_groups_lock.Get()); | 425 base::AutoLock lock(g_default_share_groups_lock.Get()); |
| 427 g_default_share_groups.Get().erase(host_.get()); | 426 g_default_share_groups.Get().erase(host_.get()); |
| 428 } | 427 } |
| 429 } | 428 } |
| 430 | 429 |
| 431 } // namespace content | 430 } // namespace content |
| OLD | NEW |