Updating trunk VERSION from 2139.0 to 2140.0
[chromium-blink-merge.git] / ui / gl / gl_fence.h
blob5af253ddd16798165316a44dc593b847b36fb102
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"
11 namespace gfx {
13 class GL_EXPORT GLFence {
14 public:
15 GLFence();
16 virtual ~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
24 // context.
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
31 // client.
32 virtual void ServerWait() = 0;
34 private:
35 DISALLOW_COPY_AND_ASSIGN(GLFence);
38 } // namespace gfx
40 #endif // UI_GL_GL_FENCE_H_