Set proper precision on loop index for variable init
Previously the index variable was missing a precision. This may have
been behind loop-based init failing on some Android platforms.
BUG=chromium:735497
TEST=angle_unittests
Change-Id: I0307891dfb2edf6c52efd5b495f602b380263d65
Reviewed-on: https://chromium-review.googlesource.com/822413
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/compiler/translator/Compiler.cpp b/src/compiler/translator/Compiler.cpp
index abb60cc..e4559aa 100644
--- a/src/compiler/translator/Compiler.cpp
+++ b/src/compiler/translator/Compiler.cpp
@@ -602,7 +602,10 @@
bool initializeLocalsAndGlobals =
(compileOptions & SH_INITIALIZE_UNINITIALIZED_LOCALS) && !IsOutputHLSL(getOutputType());
bool canUseLoopsToInitialize = !(compileOptions & SH_DONT_USE_LOOPS_TO_INITIALIZE_VARIABLES);
- DeferGlobalInitializers(root, initializeLocalsAndGlobals, canUseLoopsToInitialize, &symbolTable);
+ bool highPrecisionSupported =
+ shaderType != GL_FRAGMENT_SHADER || compileResources.FragmentPrecisionHigh;
+ DeferGlobalInitializers(root, initializeLocalsAndGlobals, canUseLoopsToInitialize,
+ highPrecisionSupported, &symbolTable);
if (initializeLocalsAndGlobals)
{
@@ -623,7 +626,7 @@
}
InitializeUninitializedLocals(root, getShaderVersion(), canUseLoopsToInitialize,
- &getSymbolTable());
+ highPrecisionSupported, &getSymbolTable());
}
if (getShaderType() == GL_VERTEX_SHADER && (compileOptions & SH_CLAMP_POINT_SIZE))
@@ -1067,7 +1070,7 @@
sh::ShaderVariable var(GL_FLOAT_VEC4);
var.name = "gl_Position";
list.push_back(var);
- InitializeVariables(root, list, &symbolTable, shaderVersion, extensionBehavior, false);
+ InitializeVariables(root, list, &symbolTable, shaderVersion, extensionBehavior, false, false);
}
void TCompiler::useAllMembersInUnusedStandardAndSharedBlocks(TIntermBlock *root)
@@ -1109,7 +1112,7 @@
list.push_back(var);
}
}
- InitializeVariables(root, list, &symbolTable, shaderVersion, extensionBehavior, false);
+ InitializeVariables(root, list, &symbolTable, shaderVersion, extensionBehavior, false, false);
}
const TExtensionBehavior &TCompiler::getExtensionBehavior() const