Home | History | Annotate | Download | only in gl
      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