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. 4 5 #ifndef UI_GL_GL_FENCE_H_ 6 #define UI_GL_GL_FENCE_H_ 7 8 #include "base/basictypes.h" 9 #include "ui/gl/gl_export.h" 10 11 namespace gfx { 12 13 class GL_EXPORT GLFence { 14 public: 15 GLFence(); 16 virtual ~GLFence(); 17 18 static bool IsSupported(); 19 static GLFence* Create(); 20 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(); 26 27 virtual bool HasCompleted() = 0; 28 virtual void ClientWait() = 0; 29 30 // Will block the server if supported, but might fall back to blocking the 31 // client. 32 virtual void ServerWait() = 0; 33 34 private: 35 DISALLOW_COPY_AND_ASSIGN(GLFence); 36 }; 37 38 } // namespace gfx 39 40 #endif // UI_GL_GL_FENCE_H_ 41