Hash :
71c88b31
Author :
Date :
2017-09-14T22:20:29
Enable [[nodiscard]] for gl::Error. This forces all return values to be checked for gl::Error. Requires quite a bit of minor refactoring. I also added a macro to swallow an error without returning from a function. We could look at storing the errors in the Context at some point, since almost always when we're generating errors that we need to discard we have access to the Context as a parameter. BUG=angleproject:2150 Change-Id: I457e48a30c002eda0993acbcd3180ba87bf169fb Reviewed-on: https://chromium-review.googlesource.com/665173 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
//
// 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::Sync 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 SyncImpl;
}
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 Sync final : public RefCountObject, public LabeledObject
{
public:
Sync(rx::SyncImpl *impl, GLuint id);
virtual ~Sync();
Error onDestroy(const Context *context) override { return NoError(); }
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::SyncImpl *mFence;
std::string mLabel;
GLenum mCondition;
GLbitfield mFlags;
};
} // namespace gl
#endif // LIBANGLE_FENCE_H_