Home | History | Annotate | Download | only in libGLESv2
      1 //
      2 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
      3 // Use of this source code is governed by a BSD-style license that can be
      4 // found in the LICENSE file.
      5 //
      6 
      7 // Fence.h: Defines the gl::Fence class, which supports the GL_NV_fence extension.
      8 
      9 #ifndef LIBGLESV2_FENCE_H_
     10 #define LIBGLESV2_FENCE_H_
     11 
     12 #include "common/angleutils.h"
     13 #include "common/RefCountObject.h"
     14 
     15 namespace rx
     16 {
     17 class Renderer;
     18 class FenceImpl;
     19 }
     20 
     21 namespace gl
     22 {
     23 
     24 class FenceNV
     25 {
     26   public:
     27     explicit FenceNV(rx::Renderer *renderer);
     28     virtual ~FenceNV();
     29 
     30     GLboolean isFence() const;
     31     void setFence(GLenum condition);
     32     GLboolean testFence();
     33     void finishFence();
     34     GLint getFencei(GLenum pname);
     35 
     36     GLboolean getStatus() const { return mStatus; }
     37     GLuint getCondition() const { return mCondition; }
     38 
     39   private:
     40     DISALLOW_COPY_AND_ASSIGN(FenceNV);
     41 
     42     rx::FenceImpl *mFence;
     43 
     44     GLboolean mStatus;
     45     GLenum mCondition;
     46 };
     47 
     48 class FenceSync : public RefCountObject
     49 {
     50   public:
     51     explicit FenceSync(rx::Renderer *renderer, GLuint id);
     52     virtual ~FenceSync();
     53 
     54     void set(GLenum condition);
     55     GLenum clientWait(GLbitfield flags, GLuint64 timeout);
     56     void serverWait();
     57     GLenum getStatus() const;
     58 
     59     GLuint getCondition() const { return mCondition; }
     60 
     61   private:
     62     DISALLOW_COPY_AND_ASSIGN(FenceSync);
     63 
     64     rx::FenceImpl *mFence;
     65     LONGLONG mCounterFrequency;
     66 
     67     GLenum mCondition;
     68 };
     69 
     70 }
     71 
     72 #endif   // LIBGLESV2_FENCE_H_
     73