diff options
Diffstat (limited to 'gfx/angle/src/libANGLE/Fence.h')
-rwxr-xr-x | gfx/angle/src/libANGLE/Fence.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/Fence.h b/gfx/angle/src/libANGLE/Fence.h new file mode 100755 index 000000000..b2daed6f0 --- /dev/null +++ b/gfx/angle/src/libANGLE/Fence.h @@ -0,0 +1,79 @@ +// +// Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// Fence.h: Defines the gl::FenceNV and gl::FenceSync classes, which support the GL_NV_fence +// extension and GLES3 sync objects. + +#ifndef LIBANGLE_FENCE_H_ +#define LIBANGLE_FENCE_H_ + +#include "libANGLE/Debug.h" +#include "libANGLE/Error.h" +#include "libANGLE/RefCountObject.h" + +#include "common/angleutils.h" + +namespace rx +{ +class FenceNVImpl; +class FenceSyncImpl; +} + +namespace gl +{ + +class FenceNV final : angle::NonCopyable +{ + public: + explicit FenceNV(rx::FenceNVImpl *impl); + virtual ~FenceNV(); + + Error set(GLenum condition); + Error test(GLboolean *outResult); + Error finish(); + + bool isSet() const { return mIsSet; } + GLboolean getStatus() const { return mStatus; } + GLenum getCondition() const { return mCondition; } + + private: + rx::FenceNVImpl *mFence; + + bool mIsSet; + + GLboolean mStatus; + GLenum mCondition; +}; + +class FenceSync final : public RefCountObject, public LabeledObject +{ + public: + FenceSync(rx::FenceSyncImpl *impl, GLuint id); + virtual ~FenceSync(); + + void setLabel(const std::string &label) override; + const std::string &getLabel() const override; + + Error set(GLenum condition, GLbitfield flags); + Error clientWait(GLbitfield flags, GLuint64 timeout, GLenum *outResult); + Error serverWait(GLbitfield flags, GLuint64 timeout); + Error getStatus(GLint *outResult) const; + + GLenum getCondition() const { return mCondition; } + GLbitfield getFlags() const { return mFlags; } + + private: + rx::FenceSyncImpl *mFence; + + std::string mLabel; + + GLenum mCondition; + GLbitfield mFlags; +}; + +} + +#endif // LIBANGLE_FENCE_H_ |