Commit bc918e7d by Jamie Madill Committed by Commit Bot

Return errors from gl::State::syncDirtyObjects.

This plumbs the front-end code, but doesn't implement Error handling for any objects yet. Framebuffers and VertexArrays will get error handling from their syncState methods. Bug: angleproject:2372 Change-Id: I226049e25ac7af2bdd3c4787b67a5d297c0b9c4b Reviewed-on: https://chromium-review.googlesource.com/954289 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarLuc Ferron <lucferron@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 5164b797
...@@ -1166,12 +1166,12 @@ class Context final : public ValidationContext ...@@ -1166,12 +1166,12 @@ class Context final : public ValidationContext
private: private:
Error prepareForDraw(); Error prepareForDraw();
void syncRendererState(); Error syncRendererState();
void syncRendererState(const State::DirtyBits &bitMask, const State::DirtyObjects &objectMask); Error syncRendererState(const State::DirtyBits &bitMask, const State::DirtyObjects &objectMask);
void syncStateForReadPixels(); Error syncStateForReadPixels();
void syncStateForTexImage(); Error syncStateForTexImage();
void syncStateForClear(); Error syncStateForClear();
void syncStateForBlit(); Error syncStateForBlit();
VertexArray *checkVertexArrayAllocation(GLuint vertexArrayHandle); VertexArray *checkVertexArrayAllocation(GLuint vertexArrayHandle);
TransformFeedback *checkTransformFeedbackAllocation(GLuint transformFeedback); TransformFeedback *checkTransformFeedbackAllocation(GLuint transformFeedback);
......
...@@ -2227,15 +2227,15 @@ bool State::hasMappedBuffer(BufferBinding target) const ...@@ -2227,15 +2227,15 @@ bool State::hasMappedBuffer(BufferBinding target) const
} }
} }
void State::syncDirtyObjects(const Context *context) Error State::syncDirtyObjects(const Context *context)
{ {
if (!mDirtyObjects.any()) if (!mDirtyObjects.any())
return; return NoError();
syncDirtyObjects(context, mDirtyObjects); return syncDirtyObjects(context, mDirtyObjects);
} }
void State::syncDirtyObjects(const Context *context, const DirtyObjects &bitset) Error State::syncDirtyObjects(const Context *context, const DirtyObjects &bitset)
{ {
for (auto dirtyObject : bitset) for (auto dirtyObject : bitset)
{ {
...@@ -2264,6 +2264,7 @@ void State::syncDirtyObjects(const Context *context, const DirtyObjects &bitset) ...@@ -2264,6 +2264,7 @@ void State::syncDirtyObjects(const Context *context, const DirtyObjects &bitset)
} }
mDirtyObjects &= ~bitset; mDirtyObjects &= ~bitset;
return NoError();
} }
void State::syncProgramTextures(const Context *context) void State::syncProgramTextures(const Context *context)
...@@ -2341,7 +2342,7 @@ void State::syncProgramTextures(const Context *context) ...@@ -2341,7 +2342,7 @@ void State::syncProgramTextures(const Context *context)
} }
} }
void State::syncDirtyObject(const Context *context, GLenum target) Error State::syncDirtyObject(const Context *context, GLenum target)
{ {
DirtyObjects localSet; DirtyObjects localSet;
...@@ -2367,7 +2368,7 @@ void State::syncDirtyObject(const Context *context, GLenum target) ...@@ -2367,7 +2368,7 @@ void State::syncDirtyObject(const Context *context, GLenum target)
break; break;
} }
syncDirtyObjects(context, localSet); return syncDirtyObjects(context, localSet);
} }
void State::setObjectDirty(GLenum target) void State::setObjectDirty(GLenum target)
......
...@@ -440,9 +440,9 @@ class State : public angle::ObserverInterface, angle::NonCopyable ...@@ -440,9 +440,9 @@ class State : public angle::ObserverInterface, angle::NonCopyable
using DirtyObjects = angle::BitSet<DIRTY_OBJECT_MAX>; using DirtyObjects = angle::BitSet<DIRTY_OBJECT_MAX>;
void clearDirtyObjects() { mDirtyObjects.reset(); } void clearDirtyObjects() { mDirtyObjects.reset(); }
void setAllDirtyObjects() { mDirtyObjects.set(); } void setAllDirtyObjects() { mDirtyObjects.set(); }
void syncDirtyObjects(const Context *context); Error syncDirtyObjects(const Context *context);
void syncDirtyObjects(const Context *context, const DirtyObjects &bitset); Error syncDirtyObjects(const Context *context, const DirtyObjects &bitset);
void syncDirtyObject(const Context *context, GLenum target); Error syncDirtyObject(const Context *context, GLenum target);
void setObjectDirty(GLenum target); void setObjectDirty(GLenum target);
void setFramebufferDirty(const Framebuffer *framebuffer) const; void setFramebufferDirty(const Framebuffer *framebuffer) const;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment