Framebuffer: syncState before internal format query.
Since querying the internal format of an attachment might need ot look
at the RenderTarget for some back-ends, or otherwise flush attachment
changes, we should call syncState internally. This means that we can't
mark these queries as const.
Bug: angleproject:2372
Change-Id: I9bfb43a472bcd7dfdd6ea7fab4751d494e1126bb
Reviewed-on: https://chromium-review.googlesource.com/948784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 86c898f..6ce0f21 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -5171,7 +5171,7 @@
return false;
}
- const Framebuffer *framebuffer = context->getGLState().getReadFramebuffer();
+ Framebuffer *framebuffer = context->getGLState().getReadFramebuffer();
ASSERT(framebuffer);
if (framebuffer->getReadBufferState() == GL_NONE)
@@ -5223,8 +5223,12 @@
}
}
- GLenum currentFormat = framebuffer->getImplementationColorReadFormat(context);
- GLenum currentType = framebuffer->getImplementationColorReadType(context);
+ GLenum currentFormat = GL_NONE;
+ ANGLE_VALIDATION_TRY(framebuffer->getImplementationColorReadFormat(context, ¤tFormat));
+
+ GLenum currentType = GL_NONE;
+ ANGLE_VALIDATION_TRY(framebuffer->getImplementationColorReadType(context, ¤tType));
+
GLenum currentComponentType = readBuffer->getFormat().info->componentType;
bool validFormatTypeCombination =