Extension behavior is now reset between each shader translation unit.
The extension behavior was being shared between translation units,
this was causing states to be cached between shader compilers. This
has been fixed now by adding a new ResetExtensionBehavior() function.
A unit test has also been added for testing extensions when compiling
shaders. A test has been included which tests that the internal state
of the extension behavior is being reset properly.
BUG=453543
Change-Id: Icb2a07019b5db972dc75cdbbdece4b7e9757c682
Reviewed-on: https://chromium-review.googlesource.com/245522
Tested-by: David Yen <dyen@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
diff --git a/src/compiler/translator/Initialize.cpp b/src/compiler/translator/Initialize.cpp
index e4cced4..9f94cb9 100644
--- a/src/compiler/translator/Initialize.cpp
+++ b/src/compiler/translator/Initialize.cpp
@@ -930,3 +930,13 @@
if (resources.ARM_shader_framebuffer_fetch)
extBehavior["GL_ARM_shader_framebuffer_fetch"] = EBhUndefined;
}
+
+void ResetExtensionBehavior(TExtensionBehavior &extBehavior)
+{
+ for (auto ext_iter = extBehavior.begin();
+ ext_iter != extBehavior.end();
+ ++ext_iter)
+ {
+ ext_iter->second = EBhUndefined;
+ }
+}