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 bool IsSupported();
19 static GLFence
* Create();
21 // Creates a fence that is not guaranteed to signal until the current context
22 // is flushed. It is illegal to call Client/ServerWait() on a fence without
23 // having explicitly called glFlush() or glFinish() in the originating
25 static GLFence
* CreateWithoutFlush();
27 virtual bool HasCompleted() = 0;
28 virtual void ClientWait() = 0;
30 // Will block the server if supported, but might fall back to blocking the
32 virtual void ServerWait() = 0;
35 DISALLOW_COPY_AND_ASSIGN(GLFence
);
40 #endif // UI_GL_GL_FENCE_H_