| Index: ui/gfx/gl/gl_fence.cc
|
| diff --git a/ui/gfx/gl/gl_fence.cc b/ui/gfx/gl/gl_fence.cc
|
| deleted file mode 100644
|
| index ae09115b2c4c4bc3f2f9a3325d8a468f554915a7..0000000000000000000000000000000000000000
|
| --- a/ui/gfx/gl/gl_fence.cc
|
| +++ /dev/null
|
| @@ -1,108 +0,0 @@
|
| -// Copyright (c) 2011 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_fence.h"
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "ui/gfx/gl/gl_bindings.h"
|
| -#include "ui/gfx/gl/gl_context.h"
|
| -
|
| -namespace {
|
| -
|
| -class GLFenceNVFence: public gfx::GLFence {
|
| - public:
|
| - GLFenceNVFence() {
|
| - // What if either of these GL calls fails? TestFenceNV will return true.
|
| - // See spec:
|
| - // http://www.opengl.org/registry/specs/NV/fence.txt
|
| - //
|
| - // What should happen if TestFenceNV is called for a name before SetFenceNV
|
| - // is called?
|
| - // We generate an INVALID_OPERATION error, and return TRUE.
|
| - // This follows the semantics for texture object names before
|
| - // they are bound, in that they acquire their state upon binding.
|
| - // We will arbitrarily return TRUE for consistency.
|
| - glGenFencesNV(1, &fence_);
|
| - glSetFenceNV(fence_, GL_ALL_COMPLETED_NV);
|
| - glFlush();
|
| - }
|
| -
|
| - virtual bool HasCompleted() OVERRIDE {
|
| - return IsContextLost() || glTestFenceNV(fence_);
|
| - }
|
| -
|
| - private:
|
| - ~GLFenceNVFence() {
|
| - glDeleteFencesNV(1, &fence_);
|
| - }
|
| -
|
| - GLuint fence_;
|
| -};
|
| -
|
| -class GLFenceARBSync: public gfx::GLFence {
|
| - public:
|
| - GLFenceARBSync() {
|
| - sync_ = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
| - glFlush();
|
| - }
|
| -
|
| - virtual bool HasCompleted() OVERRIDE {
|
| - // Handle the case where FenceSync failed.
|
| - if (!sync_ || IsContextLost())
|
| - return true;
|
| -
|
| - GLsizei length = 0;
|
| - GLsizei value = 0;
|
| - glGetSynciv(sync_,
|
| - GL_SYNC_STATUS,
|
| - 1, // bufSize
|
| - &length,
|
| - &value);
|
| - return length == 1 && value == GL_SIGNALED;
|
| - }
|
| -
|
| - private:
|
| - ~GLFenceARBSync() {
|
| - glDeleteSync(sync_);
|
| - }
|
| -
|
| - GLsync sync_;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -namespace gfx {
|
| -
|
| -GLFence::GLFence() {
|
| -}
|
| -
|
| -GLFence::~GLFence() {
|
| -}
|
| -
|
| -// static
|
| -GLFence* GLFence::Create() {
|
| - if (gfx::g_GL_NV_fence) {
|
| - return new GLFenceNVFence();
|
| - } else if (gfx::g_GL_ARB_sync) {
|
| - return new GLFenceARBSync();
|
| - } else {
|
| - return NULL;
|
| - }
|
| -}
|
| -
|
| -// static
|
| -bool GLFence::IsContextLost() {
|
| - if (!gfx::g_GL_ARB_robustness)
|
| - return false;
|
| -
|
| - if (!gfx::GLContext::GetCurrent() ||
|
| - !gfx::GLContext::GetCurrent()->
|
| - WasAllocatedUsingARBRobustness())
|
| - return false;
|
| -
|
| - GLenum status = glGetGraphicsResetStatusARB();
|
| - return status != GL_NO_ERROR;
|
| -}
|
| -
|
| -} // namespace gfx
|
|
|