Cleanups to ResourceSerial.
Allow for "empty" bindings, which are valid but represent when no
object is bound.
BUG=angleproject:2052
Change-Id: I0a41d1f0db3f5736e9e8f8ca3a74f41b748fd2d2
Reviewed-on: https://chromium-review.googlesource.com/659225
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/renderer_utils.h b/src/libANGLE/renderer/renderer_utils.h
index 1e41191..37ca1de 100644
--- a/src/libANGLE/renderer/renderer_utils.h
+++ b/src/libANGLE/renderer/renderer_utils.h
@@ -41,14 +41,19 @@
{
public:
constexpr ResourceSerial() : mValue(kDirty) {}
- constexpr ResourceSerial(uintptr_t value) : mValue(value) {}
+ explicit constexpr ResourceSerial(uintptr_t value) : mValue(value) {}
constexpr bool operator==(ResourceSerial other) const { return mValue == other.mValue; }
constexpr bool operator!=(ResourceSerial other) const { return mValue != other.mValue; }
void dirty() { mValue = kDirty; }
+ void clear() { mValue = kEmpty; }
+
+ constexpr bool valid() const { return mValue != kEmpty && mValue != kDirty; }
+ constexpr bool empty() const { return mValue == kEmpty; }
private:
constexpr static uintptr_t kDirty = std::numeric_limits<uintptr_t>::max();
+ constexpr static uintptr_t kEmpty = 0;
uintptr_t mValue;
};