Minor inlining optimization to Context draw calls.
Reduces draw call overhead by up to 3%.
Bug: angleproject:2966
Change-Id: Ie7ddb61b905fefe59a06a1528f0a3fde4accaf74
Reviewed-on: https://chromium-review.googlesource.com/c/1333608
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 1a092e2..7af3e66 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -3523,6 +3523,27 @@
return (instanceCount == 0) || noopDraw(mode, count);
}
+ANGLE_INLINE angle::Result Context::syncDirtyBits()
+{
+ const State::DirtyBits &dirtyBits = mGLState.getDirtyBits();
+ ANGLE_TRY(mImplementation->syncState(this, dirtyBits, mAllDirtyBits));
+ mGLState.clearDirtyBits();
+ return angle::Result::Continue();
+}
+
+ANGLE_INLINE angle::Result Context::syncDirtyBits(const State::DirtyBits &bitMask)
+{
+ const State::DirtyBits &dirtyBits = (mGLState.getDirtyBits() & bitMask);
+ ANGLE_TRY(mImplementation->syncState(this, dirtyBits, bitMask));
+ mGLState.clearDirtyBits(dirtyBits);
+ return angle::Result::Continue();
+}
+
+ANGLE_INLINE angle::Result Context::syncDirtyObjects(const State::DirtyObjects &objectMask)
+{
+ return mGLState.syncDirtyObjects(this, objectMask);
+}
+
angle::Result Context::prepareForDraw(PrimitiveMode mode)
{
if (mGLES1Renderer)
@@ -3538,8 +3559,7 @@
ANGLE_TRY(mGLState.getDrawFramebuffer()->ensureDrawAttachmentsInitialized(this));
}
- ANGLE_TRY(syncDirtyBits());
- return angle::Result::Continue();
+ return syncDirtyBits();
}
Error Context::prepareForClear(GLbitfield mask)
@@ -3566,27 +3586,6 @@
return NoError();
}
-angle::Result Context::syncDirtyBits()
-{
- const State::DirtyBits &dirtyBits = mGLState.getDirtyBits();
- ANGLE_TRY(mImplementation->syncState(this, dirtyBits, mAllDirtyBits));
- mGLState.clearDirtyBits();
- return angle::Result::Continue();
-}
-
-angle::Result Context::syncDirtyBits(const State::DirtyBits &bitMask)
-{
- const State::DirtyBits &dirtyBits = (mGLState.getDirtyBits() & bitMask);
- ANGLE_TRY(mImplementation->syncState(this, dirtyBits, bitMask));
- mGLState.clearDirtyBits(dirtyBits);
- return angle::Result::Continue();
-}
-
-angle::Result Context::syncDirtyObjects(const State::DirtyObjects &objectMask)
-{
- return mGLState.syncDirtyObjects(this, objectMask);
-}
-
void Context::blitFramebuffer(GLint srcX0,
GLint srcY0,
GLint srcX1,