| 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 "ui/gfx/gl/gl_context_cgl.h" | 5 #include "ui/gfx/gl/gl_context_cgl.h" |
| 6 | 6 |
| 7 #include <OpenGL/CGLRenderers.h> | 7 #include <OpenGL/CGLRenderers.h> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "ui/gfx/gl/gl_bindings.h" | 12 #include "ui/gfx/gl/gl_bindings.h" |
| 13 #include "ui/gfx/gl/gl_implementation.h" | 13 #include "ui/gfx/gl/gl_implementation.h" |
| 14 #include "ui/gfx/gl/gl_surface_cgl.h" | 14 #include "ui/gfx/gl/gl_surface_cgl.h" |
| 15 | 15 |
| 16 namespace gfx { | 16 namespace gfx { |
| 17 | 17 |
| 18 GLContextCGL::GLContextCGL(GLShareGroup* share_group) | 18 GLContextCGL::GLContextCGL(GLShareGroup* share_group) |
| 19 : GLContext(share_group), | 19 : GLContext(share_group), |
| 20 context_(NULL), | 20 context_(NULL), |
| 21 gpu_preference_(PreferIntegratedGpu) { | 21 gpu_preference_(PreferIntegratedGpu) { |
| 22 } | 22 } |
| 23 | 23 |
| 24 GLContextCGL::~GLContextCGL() { | 24 bool GLContextCGL::Initialize(GLSurface* compatible_surface, |
| 25 Destroy(); | 25 GpuPreference gpu_preference) { |
| 26 } | |
| 27 | |
| 28 bool GLContextCGL::Initialize( | |
| 29 GLSurface* compatible_surface, GpuPreference gpu_preference) { | |
| 30 DCHECK(compatible_surface); | 26 DCHECK(compatible_surface); |
| 31 | 27 |
| 32 GLContextCGL* share_context = share_group() ? | 28 GLContextCGL* share_context = share_group() ? |
| 33 static_cast<GLContextCGL*>(share_group()->GetContext()) : NULL; | 29 static_cast<GLContextCGL*>(share_group()->GetContext()) : NULL; |
| 34 if (SupportsDualGpus()) { | 30 if (SupportsDualGpus()) { |
| 35 // Ensure the GPU preference is compatible with contexts already in the | 31 // Ensure the GPU preference is compatible with contexts already in the |
| 36 // share group. | 32 // share group. |
| 37 if (share_context && gpu_preference != share_context->GetGpuPreference()) | 33 if (share_context && gpu_preference != share_context->GetGpuPreference()) |
| 38 return false; | 34 return false; |
| 39 } | 35 } |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 | 133 |
| 138 void* GLContextCGL::GetHandle() { | 134 void* GLContextCGL::GetHandle() { |
| 139 return context_; | 135 return context_; |
| 140 } | 136 } |
| 141 | 137 |
| 142 void GLContextCGL::SetSwapInterval(int interval) { | 138 void GLContextCGL::SetSwapInterval(int interval) { |
| 143 DCHECK(IsCurrent(NULL)); | 139 DCHECK(IsCurrent(NULL)); |
| 144 LOG(WARNING) << "GLContex: GLContextCGL::SetSwapInterval is ignored."; | 140 LOG(WARNING) << "GLContex: GLContextCGL::SetSwapInterval is ignored."; |
| 145 } | 141 } |
| 146 | 142 |
| 143 GLContextCGL::~GLContextCGL() { |
| 144 Destroy(); |
| 145 } |
| 146 |
| 147 GpuPreference GLContextCGL::GetGpuPreference() { | 147 GpuPreference GLContextCGL::GetGpuPreference() { |
| 148 return gpu_preference_; | 148 return gpu_preference_; |
| 149 } | 149 } |
| 150 | 150 |
| 151 void GLContextCGL::ForceUseOfDiscreteGPU() { | 151 void GLContextCGL::ForceUseOfDiscreteGPU() { |
| 152 static CGLPixelFormatObj format = NULL; | 152 static CGLPixelFormatObj format = NULL; |
| 153 if (format) | 153 if (format) |
| 154 return; | 154 return; |
| 155 CGLPixelFormatAttribute attribs[1]; | 155 CGLPixelFormatAttribute attribs[1]; |
| 156 attribs[0] = static_cast<CGLPixelFormatAttribute>(0); | 156 attribs[0] = static_cast<CGLPixelFormatAttribute>(0); |
| 157 GLint num_pixel_formats = 0; | 157 GLint num_pixel_formats = 0; |
| 158 CGLChoosePixelFormat(attribs, &format, &num_pixel_formats); | 158 CGLChoosePixelFormat(attribs, &format, &num_pixel_formats); |
| 159 // format is deliberately leaked. | 159 // format is deliberately leaked. |
| 160 } | 160 } |
| 161 | 161 |
| 162 } // namespace gfx | 162 } // namespace gfx |
| OLD | NEW |