• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
getStatus()36     GLboolean getStatus() const { return mStatus; }
getCondition()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 
getCondition()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