| Index: ui/gfx/gl/gl_context_cgl.cc
|
| diff --git a/ui/gfx/gl/gl_context_cgl.cc b/ui/gfx/gl/gl_context_cgl.cc
|
| deleted file mode 100644
|
| index 46bb7aba9927725f38d881d1c976377aab10a345..0000000000000000000000000000000000000000
|
| --- a/ui/gfx/gl/gl_context_cgl.cc
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ui/gfx/gl/gl_context_cgl.h"
|
| -
|
| -#include <OpenGL/CGLRenderers.h>
|
| -#include <vector>
|
| -
|
| -#include "base/debug/trace_event.h"
|
| -#include "base/logging.h"
|
| -#include "ui/gfx/gl/gl_bindings.h"
|
| -#include "ui/gfx/gl/gl_implementation.h"
|
| -#include "ui/gfx/gl/gl_surface_cgl.h"
|
| -
|
| -namespace gfx {
|
| -
|
| -GLContextCGL::GLContextCGL(GLShareGroup* share_group)
|
| - : GLContext(share_group),
|
| - context_(NULL),
|
| - gpu_preference_(PreferIntegratedGpu) {
|
| -}
|
| -
|
| -bool GLContextCGL::Initialize(GLSurface* compatible_surface,
|
| - GpuPreference gpu_preference) {
|
| - DCHECK(compatible_surface);
|
| -
|
| - GLContextCGL* share_context = share_group() ?
|
| - static_cast<GLContextCGL*>(share_group()->GetContext()) : NULL;
|
| - if (SupportsDualGpus()) {
|
| - // Ensure the GPU preference is compatible with contexts already in the
|
| - // share group.
|
| - if (share_context && gpu_preference != share_context->GetGpuPreference())
|
| - return false;
|
| - }
|
| -
|
| - std::vector<CGLPixelFormatAttribute> attribs;
|
| - bool using_offline_renderer =
|
| - SupportsDualGpus() && gpu_preference == PreferIntegratedGpu;
|
| - if (using_offline_renderer) {
|
| - attribs.push_back(kCGLPFAAllowOfflineRenderers);
|
| - }
|
| - if (GetGLImplementation() == kGLImplementationAppleGL) {
|
| - attribs.push_back(kCGLPFARendererID);
|
| - attribs.push_back((CGLPixelFormatAttribute) kCGLRendererGenericFloatID);
|
| - }
|
| - attribs.push_back((CGLPixelFormatAttribute) 0);
|
| -
|
| - CGLPixelFormatObj format;
|
| - GLint num_pixel_formats;
|
| - if (CGLChoosePixelFormat(&attribs.front(),
|
| - &format,
|
| - &num_pixel_formats) != kCGLNoError) {
|
| - LOG(ERROR) << "Error choosing pixel format.";
|
| - return false;
|
| - }
|
| - if (!format) {
|
| - LOG(ERROR) << "format == 0.";
|
| - return false;
|
| - }
|
| - DCHECK_NE(num_pixel_formats, 0);
|
| -
|
| - CGLError res = CGLCreateContext(
|
| - format,
|
| - share_context ?
|
| - static_cast<CGLContextObj>(share_context->GetHandle()) : NULL,
|
| - reinterpret_cast<CGLContextObj*>(&context_));
|
| - CGLReleasePixelFormat(format);
|
| - if (res != kCGLNoError) {
|
| - LOG(ERROR) << "Error creating context.";
|
| - Destroy();
|
| - return false;
|
| - }
|
| -
|
| - gpu_preference_ = gpu_preference;
|
| - return true;
|
| -}
|
| -
|
| -void GLContextCGL::Destroy() {
|
| - if (context_) {
|
| - CGLDestroyContext(static_cast<CGLContextObj>(context_));
|
| - context_ = NULL;
|
| - }
|
| -}
|
| -
|
| -bool GLContextCGL::MakeCurrent(GLSurface* surface) {
|
| - DCHECK(context_);
|
| - if (IsCurrent(surface))
|
| - return true;
|
| -
|
| - TRACE_EVENT0("gpu", "GLContextCGL::MakeCurrent");
|
| -
|
| - if (CGLSetCurrentContext(
|
| - static_cast<CGLContextObj>(context_)) != kCGLNoError) {
|
| - LOG(ERROR) << "Unable to make gl context current.";
|
| - return false;
|
| - }
|
| -
|
| - SetCurrent(this, surface);
|
| - if (!InitializeExtensionBindings()) {
|
| - ReleaseCurrent(surface);
|
| - return false;
|
| - }
|
| -
|
| - if (!surface->OnMakeCurrent(this)) {
|
| - LOG(ERROR) << "Unable to make gl context current.";
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void GLContextCGL::ReleaseCurrent(GLSurface* surface) {
|
| - if (!IsCurrent(surface))
|
| - return;
|
| -
|
| - SetCurrent(NULL, NULL);
|
| - CGLSetCurrentContext(NULL);
|
| -}
|
| -
|
| -bool GLContextCGL::IsCurrent(GLSurface* surface) {
|
| - bool native_context_is_current = CGLGetCurrentContext() == context_;
|
| -
|
| - // If our context is current then our notion of which GLContext is
|
| - // current must be correct. On the other hand, third-party code
|
| - // using OpenGL might change the current context.
|
| - DCHECK(!native_context_is_current || (GetCurrent() == this));
|
| -
|
| - if (!native_context_is_current)
|
| - return false;
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void* GLContextCGL::GetHandle() {
|
| - return context_;
|
| -}
|
| -
|
| -void GLContextCGL::SetSwapInterval(int interval) {
|
| - DCHECK(IsCurrent(NULL));
|
| - LOG(WARNING) << "GLContex: GLContextCGL::SetSwapInterval is ignored.";
|
| -}
|
| -
|
| -GLContextCGL::~GLContextCGL() {
|
| - Destroy();
|
| -}
|
| -
|
| -GpuPreference GLContextCGL::GetGpuPreference() {
|
| - return gpu_preference_;
|
| -}
|
| -
|
| -void GLContextCGL::ForceUseOfDiscreteGPU() {
|
| - static CGLPixelFormatObj format = NULL;
|
| - if (format)
|
| - return;
|
| - CGLPixelFormatAttribute attribs[1];
|
| - attribs[0] = static_cast<CGLPixelFormatAttribute>(0);
|
| - GLint num_pixel_formats = 0;
|
| - CGLChoosePixelFormat(attribs, &format, &num_pixel_formats);
|
| - // format is deliberately leaked.
|
| -}
|
| -
|
| -} // namespace gfx
|
|
|