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 |