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
3 // found in the LICENSE file.
5 #ifndef UI_GL_GL_FENCE_H_
6 #define UI_GL_GL_FENCE_H_
8 #include "base/basictypes.h"
9 #include "ui/gl/gl_export.h"
13 class GL_EXPORT GLFence
{
18 static GLFence
* Create();
20 // Creates a fence that is not guaranteed to signal until the current context
21 // is flushed. It is illegal to call Client/ServerWait() on a fence without
22 // having explicitly called glFlush() or glFinish() in the originating
24 static GLFence
* CreateWithoutFlush();
26 virtual bool HasCompleted() = 0;
27 virtual void ClientWait() = 0;
29 // Will block the server if supported, but might fall back to blocking the
31 virtual void ServerWait() = 0;
34 static bool IsContextLost();
37 DISALLOW_COPY_AND_ASSIGN(GLFence
);
42 #endif // UI_GL_GL_FENCE_H_