Clean up TCompiler members and style
Some dead code and duplicate data are cleaned up from the compiler.
Several parameters can be accessed directly from ShBuiltInResources
instead of creating a copy in TCompiler.
This also encapsulates some TCompiler member functions as private and
changes the remaining unprefixed TCompiler member variable names to
start with the m prefix.
BUG=angleproject:2068
TEST=angle_unittests
Change-Id: I6690aaf538b17e0f45460660272a21f82f1808a0
Reviewed-on: https://chromium-review.googlesource.com/c/1267503
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 665c1d7..e93e80f 100644
--- a/src/compiler/translator/Compiler.cpp
+++ b/src/compiler/translator/Compiler.cpp
@@ -281,19 +281,13 @@
}
TCompiler::TCompiler(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output)
- : variablesCollected(false),
+ : mVariablesCollected(false),
mGLPositionInitialized(false),
- shaderType(type),
- shaderSpec(spec),
- outputType(output),
- maxUniformVectors(0),
- maxExpressionComplexity(0),
- maxCallStackDepth(0),
- maxFunctionParameters(0),
- fragmentPrecisionHigh(false),
- clampingStrategy(SH_CLAMP_WITH_CLAMP_INTRINSIC),
- builtInFunctionEmulator(),
- mDiagnostics(infoSink.info),
+ mShaderType(type),
+ mShaderSpec(spec),
+ mOutputType(output),
+ mBuiltInFunctionEmulator(),
+ mDiagnostics(mInfoSink.info),
mSourcePath(nullptr),
mComputeShaderLocalSizeDeclared(false),
mComputeShaderLocalSize(1),
@@ -313,33 +307,23 @@
// If compiling an ESSL 1.00 shader for WebGL, or if its been requested through the API,
// validate loop and indexing as well (to verify that the shader only uses minimal functionality
// of ESSL 1.00 as in Appendix A of the spec).
- return (IsWebGLBasedSpec(shaderSpec) && shaderVersion == 100) ||
+ return (IsWebGLBasedSpec(mShaderSpec) && mShaderVersion == 100) ||
(compileOptions & SH_VALIDATE_LOOP_INDEXING);
}
bool TCompiler::Init(const ShBuiltInResources &resources)
{
- shaderVersion = 100;
-
- maxUniformVectors = GetMaxUniformVectorsForShaderType(shaderType, resources);
-
- maxExpressionComplexity = resources.MaxExpressionComplexity;
- maxCallStackDepth = resources.MaxCallStackDepth;
- maxFunctionParameters = resources.MaxFunctionParameters;
-
SetGlobalPoolAllocator(&allocator);
// Generate built-in symbol table.
- if (!InitBuiltInSymbolTable(resources))
+ if (!initBuiltInSymbolTable(resources))
return false;
- InitExtensionBehavior(resources, extensionBehavior);
- fragmentPrecisionHigh = resources.FragmentPrecisionHigh == 1;
- arrayBoundsClamper.SetClampingStrategy(resources.ArrayIndexClampingStrategy);
- clampingStrategy = resources.ArrayIndexClampingStrategy;
+ mResources = resources;
+ setResourceString();
- hashFunction = resources.HashFunction;
-
+ InitExtensionBehavior(resources, mExtensionBehavior);
+ mArrayBoundsClamper.SetClampingStrategy(resources.ArrayIndexClampingStrategy);
return true;
}
@@ -360,7 +344,7 @@
ASSERT(GetGlobalPoolAllocator());
// Reset the extension behavior for each compilation unit.
- ResetExtensionBehavior(extensionBehavior);
+ ResetExtensionBehavior(mExtensionBehavior);
// First string is path of source file if flag is set. The actual source follows.
size_t firstSource = 0;
@@ -370,15 +354,15 @@
++firstSource;
}
- TParseContext parseContext(symbolTable, extensionBehavior, shaderType, shaderSpec,
+ TParseContext parseContext(mSymbolTable, mExtensionBehavior, mShaderType, mShaderSpec,
compileOptions, true, &mDiagnostics, getResources());
- parseContext.setFragmentPrecisionHighOnESSL1(fragmentPrecisionHigh);
+ parseContext.setFragmentPrecisionHighOnESSL1(mResources.FragmentPrecisionHigh == 1);
// We preserve symbols at the built-in level from compile-to-compile.
// Start pushing the user-defined symbols at global level.
- TScopedSymbolTableLevel globalLevel(&symbolTable);
- ASSERT(symbolTable.atGlobalLevel());
+ TScopedSymbolTableLevel globalLevel(&mSymbolTable);
+ ASSERT(mSymbolTable.atGlobalLevel());
// Parse shader.
if (PaParseStrings(numStrings - firstSource, &shaderStrings[firstSource], nullptr,
@@ -410,17 +394,17 @@
bool TCompiler::checkShaderVersion(TParseContext *parseContext)
{
- if (MapSpecToShaderVersion(shaderSpec) < shaderVersion)
+ if (MapSpecToShaderVersion(mShaderSpec) < mShaderVersion)
{
mDiagnostics.globalError("unsupported shader version");
return false;
}
ASSERT(parseContext);
- switch (shaderType)
+ switch (mShaderType)
{
case GL_COMPUTE_SHADER:
- if (shaderVersion < 310)
+ if (mShaderVersion < 310)
{
mDiagnostics.globalError("Compute shader is not supported in this shader version.");
return false;
@@ -428,7 +412,7 @@
break;
case GL_GEOMETRY_SHADER_EXT:
- if (shaderVersion < 310)
+ if (mShaderVersion < 310)
{
mDiagnostics.globalError(
"Geometry shader is not supported in this shader version.");
@@ -436,7 +420,7 @@
}
else
{
- ASSERT(shaderVersion == 310);
+ ASSERT(mShaderVersion == 310);
if (!parseContext->checkCanUseExtension(sh::TSourceLoc(),
TExtension::EXT_geometry_shader))
{
@@ -454,20 +438,17 @@
void TCompiler::setASTMetadata(const TParseContext &parseContext)
{
- shaderVersion = parseContext.getShaderVersion();
+ mShaderVersion = parseContext.getShaderVersion();
mPragma = parseContext.pragma();
- symbolTable.setGlobalInvariant(mPragma.stdgl.invariantAll);
+ mSymbolTable.setGlobalInvariant(mPragma.stdgl.invariantAll);
mComputeShaderLocalSizeDeclared = parseContext.isComputeShaderLocalSizeDeclared();
mComputeShaderLocalSize = parseContext.getComputeShaderLocalSize();
mNumViews = parseContext.getNumViews();
- // Highp might have been auto-enabled based on shader version
- fragmentPrecisionHigh = parseContext.getFragmentPrecisionHigh();
-
- if (shaderType == GL_GEOMETRY_SHADER_EXT)
+ if (mShaderType == GL_GEOMETRY_SHADER_EXT)
{
mGeometryShaderInputPrimitiveType = parseContext.getGeometryShaderInputPrimitiveType();
mGeometryShaderOutputPrimitiveType = parseContext.getGeometryShaderOutputPrimitiveType();
@@ -487,12 +468,12 @@
}
if (shouldRunLoopAndIndexingValidation(compileOptions) &&
- !ValidateLimitations(root, shaderType, &symbolTable, &mDiagnostics))
+ !ValidateLimitations(root, mShaderType, &mSymbolTable, &mDiagnostics))
{
return false;
}
- if (!ValidateFragColorAndFragData(shaderType, shaderVersion, symbolTable, &mDiagnostics))
+ if (!ValidateFragColorAndFragData(mShaderType, mShaderVersion, mSymbolTable, &mDiagnostics))
{
return false;
}
@@ -510,7 +491,7 @@
// for float, so float literal statements would end up with no precision which is
// invalid ESSL.
// After this empty declarations are not allowed in the AST.
- PruneNoOps(root, &symbolTable);
+ PruneNoOps(root, &mSymbolTable);
// Create the function DAG and check there is no recursion
if (!initCallDag(root))
@@ -524,8 +505,8 @@
}
// Checks which functions are used and if "main" exists
- functionMetadata.clear();
- functionMetadata.resize(mCallDag.size());
+ mFunctionMetadata.clear();
+ mFunctionMetadata.resize(mCallDag.size());
if (!tagUsedFunctions())
{
return false;
@@ -536,21 +517,20 @@
pruneUnusedFunctions(root);
}
- if (shaderVersion >= 310 && !ValidateVaryingLocations(root, &mDiagnostics, shaderType))
+ if (mShaderVersion >= 310 && !ValidateVaryingLocations(root, &mDiagnostics, mShaderType))
{
return false;
}
- if (shaderVersion >= 300 && shaderType == GL_FRAGMENT_SHADER &&
- !ValidateOutputs(root, getExtensionBehavior(), compileResources.MaxDrawBuffers,
- &mDiagnostics))
+ if (mShaderVersion >= 300 && mShaderType == GL_FRAGMENT_SHADER &&
+ !ValidateOutputs(root, getExtensionBehavior(), mResources.MaxDrawBuffers, &mDiagnostics))
{
return false;
}
// Fail compilation if precision emulation not supported.
if (getResources().WEBGL_debug_shader_precision && getPragma().debugShaderPrecision &&
- !EmulatePrecision::SupportedInLanguage(outputType))
+ !EmulatePrecision::SupportedInLanguage(mOutputType))
{
mDiagnostics.globalError("Precision emulation not supported for this output type.");
return false;
@@ -559,20 +539,20 @@
// Clamping uniform array bounds needs to happen after validateLimitations pass.
if (compileOptions & SH_CLAMP_INDIRECT_ARRAY_BOUNDS)
{
- arrayBoundsClamper.MarkIndirectArrayBoundsForClamping(root);
+ mArrayBoundsClamper.MarkIndirectArrayBoundsForClamping(root);
}
if ((compileOptions & SH_INITIALIZE_BUILTINS_FOR_INSTANCED_MULTIVIEW) &&
parseContext.isExtensionEnabled(TExtension::OVR_multiview) &&
getShaderType() != GL_COMPUTE_SHADER)
{
- DeclareAndInitBuiltinsForInstancedMultiview(root, mNumViews, shaderType, compileOptions,
- outputType, &symbolTable);
+ DeclareAndInitBuiltinsForInstancedMultiview(root, mNumViews, mShaderType, compileOptions,
+ mOutputType, &mSymbolTable);
}
// This pass might emit short circuits so keep it before the short circuit unfolding
if (compileOptions & SH_REWRITE_DO_WHILE_LOOPS)
- RewriteDoWhile(root, &symbolTable);
+ RewriteDoWhile(root, &mSymbolTable);
if (compileOptions & SH_ADD_AND_TRUE_TO_LOOP_CONDITION)
AddAndTrueToLoopCondition(root);
@@ -584,21 +564,21 @@
if (compileOptions & SH_REMOVE_POW_WITH_CONSTANT_EXPONENT)
{
- RemovePow(root, &symbolTable);
+ RemovePow(root, &mSymbolTable);
}
if (compileOptions & SH_REGENERATE_STRUCT_NAMES)
{
- RegenerateStructNames gen(&symbolTable);
+ RegenerateStructNames gen(&mSymbolTable);
root->traverse(&gen);
}
- if (shaderType == GL_FRAGMENT_SHADER && shaderVersion == 100 &&
- compileResources.EXT_draw_buffers && compileResources.MaxDrawBuffers > 1 &&
- IsExtensionEnabled(extensionBehavior, TExtension::EXT_draw_buffers))
+ if (mShaderType == GL_FRAGMENT_SHADER && mShaderVersion == 100 && mResources.EXT_draw_buffers &&
+ mResources.MaxDrawBuffers > 1 &&
+ IsExtensionEnabled(mExtensionBehavior, TExtension::EXT_draw_buffers))
{
- EmulateGLFragColorBroadcast(root, compileResources.MaxDrawBuffers, &outputVariables,
- &symbolTable, shaderVersion);
+ EmulateGLFragColorBroadcast(root, mResources.MaxDrawBuffers, &mOutputVariables,
+ &mSymbolTable, mShaderVersion);
}
int simplifyScalarized = (compileOptions & SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS)
@@ -622,7 +602,7 @@
RemoveArrayLengthMethod(root);
- RemoveUnreferencedVariables(root, &symbolTable);
+ RemoveUnreferencedVariables(root, &mSymbolTable);
// In case the last case inside a switch statement is a certain type of no-op, GLSL compilers in
// drivers may not accept it. In this case we clean up the dead code from the end of switch
@@ -635,38 +615,41 @@
// Built-in function emulation needs to happen after validateLimitations pass.
// TODO(jmadill): Remove global pool allocator.
GetGlobalPoolAllocator()->lock();
- initBuiltInFunctionEmulator(&builtInFunctionEmulator, compileOptions);
+ initBuiltInFunctionEmulator(&mBuiltInFunctionEmulator, compileOptions);
GetGlobalPoolAllocator()->unlock();
- builtInFunctionEmulator.markBuiltInFunctionsForEmulation(root);
+ mBuiltInFunctionEmulator.markBuiltInFunctionsForEmulation(root);
+ bool highPrecisionSupported = mShaderVersion > 100 || mShaderType != GL_FRAGMENT_SHADER ||
+ mResources.FragmentPrecisionHigh == 1;
if (compileOptions & SH_SCALARIZE_VEC_AND_MAT_CONSTRUCTOR_ARGS)
{
- ScalarizeVecAndMatConstructorArgs(root, shaderType, fragmentPrecisionHigh, &symbolTable);
+ ScalarizeVecAndMatConstructorArgs(root, mShaderType, highPrecisionSupported, &mSymbolTable);
}
if (shouldCollectVariables(compileOptions))
{
- ASSERT(!variablesCollected);
- CollectVariables(root, &attributes, &outputVariables, &uniforms, &inputVaryings,
- &outputVaryings, &uniformBlocks, &shaderStorageBlocks, &inBlocks,
- hashFunction, &symbolTable, shaderType, extensionBehavior);
+ ASSERT(!mVariablesCollected);
+ CollectVariables(root, &mAttributes, &mOutputVariables, &mUniforms, &mInputVaryings,
+ &mOutputVaryings, &mUniformBlocks, &mShaderStorageBlocks, &mInBlocks,
+ mResources.HashFunction, &mSymbolTable, mShaderType, mExtensionBehavior);
collectInterfaceBlocks();
- variablesCollected = true;
+ mVariablesCollected = true;
if (compileOptions & SH_USE_UNUSED_STANDARD_SHARED_BLOCKS)
{
useAllMembersInUnusedStandardAndSharedBlocks(root);
}
if (compileOptions & SH_ENFORCE_PACKING_RESTRICTIONS)
{
+ int maxUniformVectors = GetMaxUniformVectorsForShaderType(mShaderType, mResources);
// Returns true if, after applying the packing rules in the GLSL ES 1.00.17 spec
// Appendix A, section 7, the shader does not use too many uniforms.
- if (!CheckVariablesInPackingLimits(maxUniformVectors, uniforms))
+ if (!CheckVariablesInPackingLimits(maxUniformVectors, mUniforms))
{
mDiagnostics.globalError("too many uniforms");
return false;
}
}
- if ((compileOptions & SH_INIT_OUTPUT_VARIABLES) && (shaderType != GL_COMPUTE_SHADER))
+ if ((compileOptions & SH_INIT_OUTPUT_VARIABLES) && (mShaderType != GL_COMPUTE_SHADER))
{
initializeOutputVariables(root);
}
@@ -674,7 +657,7 @@
// Removing invariant declarations must be done after collecting variables.
// Otherwise, built-in invariant declarations don't apply.
- if (RemoveInvariant(shaderType, shaderVersion, outputType, compileOptions))
+ if (RemoveInvariant(mShaderType, mShaderVersion, mOutputType, compileOptions))
{
RemoveInvariantDeclaration(root);
}
@@ -682,8 +665,8 @@
// gl_Position is always written in compatibility output mode.
// It may have been already initialized among other output variables, in that case we don't
// need to initialize it twice.
- if (shaderType == GL_VERTEX_SHADER && !mGLPositionInitialized &&
- ((compileOptions & SH_INIT_GL_POSITION) || (outputType == SH_GLSL_COMPATIBILITY_OUTPUT)))
+ if (mShaderType == GL_VERTEX_SHADER && !mGLPositionInitialized &&
+ ((compileOptions & SH_INIT_GL_POSITION) || (mOutputType == SH_GLSL_COMPATIBILITY_OUTPUT)))
{
initializeGLPosition(root);
mGLPositionInitialized = true;
@@ -696,10 +679,8 @@
bool initializeLocalsAndGlobals =
(compileOptions & SH_INITIALIZE_UNINITIALIZED_LOCALS) && !IsOutputHLSL(getOutputType());
bool canUseLoopsToInitialize = !(compileOptions & SH_DONT_USE_LOOPS_TO_INITIALIZE_VARIABLES);
- bool highPrecisionSupported =
- shaderType != GL_FRAGMENT_SHADER || compileResources.FragmentPrecisionHigh;
DeferGlobalInitializers(root, initializeLocalsAndGlobals, canUseLoopsToInitialize,
- highPrecisionSupported, &symbolTable);
+ highPrecisionSupported, &mSymbolTable);
if (initializeLocalsAndGlobals)
{
@@ -725,7 +706,7 @@
if (getShaderType() == GL_VERTEX_SHADER && (compileOptions & SH_CLAMP_POINT_SIZE))
{
- ClampPointSize(root, compileResources.MaxPointSize, &getSymbolTable());
+ ClampPointSize(root, mResources.MaxPointSize, &getSymbolTable());
}
if (getShaderType() == GL_FRAGMENT_SHADER && (compileOptions & SH_CLAMP_FRAG_DEPTH))
@@ -751,7 +732,8 @@
ShCompileOptions compileOptionsIn)
{
#if defined(ANGLE_ENABLE_FUZZER_CORPUS_OUTPUT)
- DumpFuzzerCase(shaderStrings, numStrings, shaderType, shaderSpec, outputType, compileOptionsIn);
+ DumpFuzzerCase(shaderStrings, numStrings, mShaderType, mShaderSpec, mOutputType,
+ compileOptionsIn);
#endif // defined(ANGLE_ENABLE_FUZZER_CORPUS_OUTPUT)
if (numStrings == 0)
@@ -772,7 +754,7 @@
if (root)
{
if (compileOptions & SH_INTERMEDIATE_TREE)
- OutputTree(root, infoSink.info);
+ OutputTree(root, mInfoSink.info);
if (compileOptions & SH_OBJECT_CODE)
{
@@ -787,7 +769,7 @@
return false;
}
-bool TCompiler::InitBuiltInSymbolTable(const ShBuiltInResources &resources)
+bool TCompiler::initBuiltInSymbolTable(const ShBuiltInResources &resources)
{
if (resources.MaxDrawBuffers < 1)
{
@@ -798,10 +780,7 @@
return false;
}
- compileResources = resources;
- setResourceString();
-
- symbolTable.initializeBuiltIns(shaderType, shaderSpec, resources);
+ mSymbolTable.initializeBuiltIns(mShaderType, mShaderSpec, resources);
return true;
}
@@ -811,112 +790,113 @@
std::ostringstream strstream;
// clang-format off
- strstream << ":MaxVertexAttribs:" << compileResources.MaxVertexAttribs
- << ":MaxVertexUniformVectors:" << compileResources.MaxVertexUniformVectors
- << ":MaxVaryingVectors:" << compileResources.MaxVaryingVectors
- << ":MaxVertexTextureImageUnits:" << compileResources.MaxVertexTextureImageUnits
- << ":MaxCombinedTextureImageUnits:" << compileResources.MaxCombinedTextureImageUnits
- << ":MaxTextureImageUnits:" << compileResources.MaxTextureImageUnits
- << ":MaxFragmentUniformVectors:" << compileResources.MaxFragmentUniformVectors
- << ":MaxDrawBuffers:" << compileResources.MaxDrawBuffers
- << ":OES_standard_derivatives:" << compileResources.OES_standard_derivatives
- << ":OES_EGL_image_external:" << compileResources.OES_EGL_image_external
- << ":OES_EGL_image_external_essl3:" << compileResources.OES_EGL_image_external_essl3
- << ":NV_EGL_stream_consumer_external:" << compileResources.NV_EGL_stream_consumer_external
- << ":ARB_texture_rectangle:" << compileResources.ARB_texture_rectangle
- << ":EXT_draw_buffers:" << compileResources.EXT_draw_buffers
- << ":FragmentPrecisionHigh:" << compileResources.FragmentPrecisionHigh
- << ":MaxExpressionComplexity:" << compileResources.MaxExpressionComplexity
- << ":MaxCallStackDepth:" << compileResources.MaxCallStackDepth
- << ":MaxFunctionParameters:" << compileResources.MaxFunctionParameters
- << ":EXT_blend_func_extended:" << compileResources.EXT_blend_func_extended
- << ":EXT_frag_depth:" << compileResources.EXT_frag_depth
- << ":EXT_shader_texture_lod:" << compileResources.EXT_shader_texture_lod
- << ":EXT_shader_framebuffer_fetch:" << compileResources.EXT_shader_framebuffer_fetch
- << ":NV_shader_framebuffer_fetch:" << compileResources.NV_shader_framebuffer_fetch
- << ":ARM_shader_framebuffer_fetch:" << compileResources.ARM_shader_framebuffer_fetch
- << ":OVR_multiview:" << compileResources.OVR_multiview
- << ":EXT_YUV_target:" << compileResources.EXT_YUV_target
- << ":EXT_geometry_shader:" << compileResources.EXT_geometry_shader
- << ":MaxVertexOutputVectors:" << compileResources.MaxVertexOutputVectors
- << ":MaxFragmentInputVectors:" << compileResources.MaxFragmentInputVectors
- << ":MinProgramTexelOffset:" << compileResources.MinProgramTexelOffset
- << ":MaxProgramTexelOffset:" << compileResources.MaxProgramTexelOffset
- << ":MaxDualSourceDrawBuffers:" << compileResources.MaxDualSourceDrawBuffers
- << ":MaxViewsOVR:" << compileResources.MaxViewsOVR
- << ":NV_draw_buffers:" << compileResources.NV_draw_buffers
- << ":WEBGL_debug_shader_precision:" << compileResources.WEBGL_debug_shader_precision
- << ":MinProgramTextureGatherOffset:" << compileResources.MinProgramTextureGatherOffset
- << ":MaxProgramTextureGatherOffset:" << compileResources.MaxProgramTextureGatherOffset
- << ":MaxImageUnits:" << compileResources.MaxImageUnits
- << ":MaxVertexImageUniforms:" << compileResources.MaxVertexImageUniforms
- << ":MaxFragmentImageUniforms:" << compileResources.MaxFragmentImageUniforms
- << ":MaxComputeImageUniforms:" << compileResources.MaxComputeImageUniforms
- << ":MaxCombinedImageUniforms:" << compileResources.MaxCombinedImageUniforms
- << ":MaxCombinedShaderOutputResources:" << compileResources.MaxCombinedShaderOutputResources
- << ":MaxComputeWorkGroupCountX:" << compileResources.MaxComputeWorkGroupCount[0]
- << ":MaxComputeWorkGroupCountY:" << compileResources.MaxComputeWorkGroupCount[1]
- << ":MaxComputeWorkGroupCountZ:" << compileResources.MaxComputeWorkGroupCount[2]
- << ":MaxComputeWorkGroupSizeX:" << compileResources.MaxComputeWorkGroupSize[0]
- << ":MaxComputeWorkGroupSizeY:" << compileResources.MaxComputeWorkGroupSize[1]
- << ":MaxComputeWorkGroupSizeZ:" << compileResources.MaxComputeWorkGroupSize[2]
- << ":MaxComputeUniformComponents:" << compileResources.MaxComputeUniformComponents
- << ":MaxComputeTextureImageUnits:" << compileResources.MaxComputeTextureImageUnits
- << ":MaxComputeAtomicCounters:" << compileResources.MaxComputeAtomicCounters
- << ":MaxComputeAtomicCounterBuffers:" << compileResources.MaxComputeAtomicCounterBuffers
- << ":MaxVertexAtomicCounters:" << compileResources.MaxVertexAtomicCounters
- << ":MaxFragmentAtomicCounters:" << compileResources.MaxFragmentAtomicCounters
- << ":MaxCombinedAtomicCounters:" << compileResources.MaxCombinedAtomicCounters
- << ":MaxAtomicCounterBindings:" << compileResources.MaxAtomicCounterBindings
- << ":MaxVertexAtomicCounterBuffers:" << compileResources.MaxVertexAtomicCounterBuffers
- << ":MaxFragmentAtomicCounterBuffers:" << compileResources.MaxFragmentAtomicCounterBuffers
- << ":MaxCombinedAtomicCounterBuffers:" << compileResources.MaxCombinedAtomicCounterBuffers
- << ":MaxAtomicCounterBufferSize:" << compileResources.MaxAtomicCounterBufferSize
- << ":MaxGeometryUniformComponents:" << compileResources.MaxGeometryUniformComponents
- << ":MaxGeometryUniformBlocks:" << compileResources.MaxGeometryUniformBlocks
- << ":MaxGeometryInputComponents:" << compileResources.MaxGeometryInputComponents
- << ":MaxGeometryOutputComponents:" << compileResources.MaxGeometryOutputComponents
- << ":MaxGeometryOutputVertices:" << compileResources.MaxGeometryOutputVertices
- << ":MaxGeometryTotalOutputComponents:" << compileResources.MaxGeometryTotalOutputComponents
- << ":MaxGeometryTextureImageUnits:" << compileResources.MaxGeometryTextureImageUnits
- << ":MaxGeometryAtomicCounterBuffers:" << compileResources.MaxGeometryAtomicCounterBuffers
- << ":MaxGeometryAtomicCounters:" << compileResources.MaxGeometryAtomicCounters
- << ":MaxGeometryShaderStorageBlocks:" << compileResources.MaxGeometryShaderStorageBlocks
- << ":MaxGeometryShaderInvocations:" << compileResources.MaxGeometryShaderInvocations
- << ":MaxGeometryImageUniforms:" << compileResources.MaxGeometryImageUniforms;
+ strstream << ":MaxVertexAttribs:" << mResources.MaxVertexAttribs
+ << ":MaxVertexUniformVectors:" << mResources.MaxVertexUniformVectors
+ << ":MaxVaryingVectors:" << mResources.MaxVaryingVectors
+ << ":MaxVertexTextureImageUnits:" << mResources.MaxVertexTextureImageUnits
+ << ":MaxCombinedTextureImageUnits:" << mResources.MaxCombinedTextureImageUnits
+ << ":MaxTextureImageUnits:" << mResources.MaxTextureImageUnits
+ << ":MaxFragmentUniformVectors:" << mResources.MaxFragmentUniformVectors
+ << ":MaxDrawBuffers:" << mResources.MaxDrawBuffers
+ << ":OES_standard_derivatives:" << mResources.OES_standard_derivatives
+ << ":OES_EGL_image_external:" << mResources.OES_EGL_image_external
+ << ":OES_EGL_image_external_essl3:" << mResources.OES_EGL_image_external_essl3
+ << ":NV_EGL_stream_consumer_external:" << mResources.NV_EGL_stream_consumer_external
+ << ":ARB_texture_rectangle:" << mResources.ARB_texture_rectangle
+ << ":EXT_draw_buffers:" << mResources.EXT_draw_buffers
+ << ":FragmentPrecisionHigh:" << mResources.FragmentPrecisionHigh
+ << ":MaxExpressionComplexity:" << mResources.MaxExpressionComplexity
+ << ":MaxCallStackDepth:" << mResources.MaxCallStackDepth
+ << ":MaxFunctionParameters:" << mResources.MaxFunctionParameters
+ << ":EXT_blend_func_extended:" << mResources.EXT_blend_func_extended
+ << ":EXT_frag_depth:" << mResources.EXT_frag_depth
+ << ":EXT_shader_texture_lod:" << mResources.EXT_shader_texture_lod
+ << ":EXT_shader_framebuffer_fetch:" << mResources.EXT_shader_framebuffer_fetch
+ << ":NV_shader_framebuffer_fetch:" << mResources.NV_shader_framebuffer_fetch
+ << ":ARM_shader_framebuffer_fetch:" << mResources.ARM_shader_framebuffer_fetch
+ << ":OVR_multiview:" << mResources.OVR_multiview
+ << ":EXT_YUV_target:" << mResources.EXT_YUV_target
+ << ":EXT_geometry_shader:" << mResources.EXT_geometry_shader
+ << ":MaxVertexOutputVectors:" << mResources.MaxVertexOutputVectors
+ << ":MaxFragmentInputVectors:" << mResources.MaxFragmentInputVectors
+ << ":MinProgramTexelOffset:" << mResources.MinProgramTexelOffset
+ << ":MaxProgramTexelOffset:" << mResources.MaxProgramTexelOffset
+ << ":MaxDualSourceDrawBuffers:" << mResources.MaxDualSourceDrawBuffers
+ << ":MaxViewsOVR:" << mResources.MaxViewsOVR
+ << ":NV_draw_buffers:" << mResources.NV_draw_buffers
+ << ":WEBGL_debug_shader_precision:" << mResources.WEBGL_debug_shader_precision
+ << ":MinProgramTextureGatherOffset:" << mResources.MinProgramTextureGatherOffset
+ << ":MaxProgramTextureGatherOffset:" << mResources.MaxProgramTextureGatherOffset
+ << ":MaxImageUnits:" << mResources.MaxImageUnits
+ << ":MaxVertexImageUniforms:" << mResources.MaxVertexImageUniforms
+ << ":MaxFragmentImageUniforms:" << mResources.MaxFragmentImageUniforms
+ << ":MaxComputeImageUniforms:" << mResources.MaxComputeImageUniforms
+ << ":MaxCombinedImageUniforms:" << mResources.MaxCombinedImageUniforms
+ << ":MaxCombinedShaderOutputResources:" << mResources.MaxCombinedShaderOutputResources
+ << ":MaxComputeWorkGroupCountX:" << mResources.MaxComputeWorkGroupCount[0]
+ << ":MaxComputeWorkGroupCountY:" << mResources.MaxComputeWorkGroupCount[1]
+ << ":MaxComputeWorkGroupCountZ:" << mResources.MaxComputeWorkGroupCount[2]
+ << ":MaxComputeWorkGroupSizeX:" << mResources.MaxComputeWorkGroupSize[0]
+ << ":MaxComputeWorkGroupSizeY:" << mResources.MaxComputeWorkGroupSize[1]
+ << ":MaxComputeWorkGroupSizeZ:" << mResources.MaxComputeWorkGroupSize[2]
+ << ":MaxComputeUniformComponents:" << mResources.MaxComputeUniformComponents
+ << ":MaxComputeTextureImageUnits:" << mResources.MaxComputeTextureImageUnits
+ << ":MaxComputeAtomicCounters:" << mResources.MaxComputeAtomicCounters
+ << ":MaxComputeAtomicCounterBuffers:" << mResources.MaxComputeAtomicCounterBuffers
+ << ":MaxVertexAtomicCounters:" << mResources.MaxVertexAtomicCounters
+ << ":MaxFragmentAtomicCounters:" << mResources.MaxFragmentAtomicCounters
+ << ":MaxCombinedAtomicCounters:" << mResources.MaxCombinedAtomicCounters
+ << ":MaxAtomicCounterBindings:" << mResources.MaxAtomicCounterBindings
+ << ":MaxVertexAtomicCounterBuffers:" << mResources.MaxVertexAtomicCounterBuffers
+ << ":MaxFragmentAtomicCounterBuffers:" << mResources.MaxFragmentAtomicCounterBuffers
+ << ":MaxCombinedAtomicCounterBuffers:" << mResources.MaxCombinedAtomicCounterBuffers
+ << ":MaxAtomicCounterBufferSize:" << mResources.MaxAtomicCounterBufferSize
+ << ":MaxGeometryUniformComponents:" << mResources.MaxGeometryUniformComponents
+ << ":MaxGeometryUniformBlocks:" << mResources.MaxGeometryUniformBlocks
+ << ":MaxGeometryInputComponents:" << mResources.MaxGeometryInputComponents
+ << ":MaxGeometryOutputComponents:" << mResources.MaxGeometryOutputComponents
+ << ":MaxGeometryOutputVertices:" << mResources.MaxGeometryOutputVertices
+ << ":MaxGeometryTotalOutputComponents:" << mResources.MaxGeometryTotalOutputComponents
+ << ":MaxGeometryTextureImageUnits:" << mResources.MaxGeometryTextureImageUnits
+ << ":MaxGeometryAtomicCounterBuffers:" << mResources.MaxGeometryAtomicCounterBuffers
+ << ":MaxGeometryAtomicCounters:" << mResources.MaxGeometryAtomicCounters
+ << ":MaxGeometryShaderStorageBlocks:" << mResources.MaxGeometryShaderStorageBlocks
+ << ":MaxGeometryShaderInvocations:" << mResources.MaxGeometryShaderInvocations
+ << ":MaxGeometryImageUniforms:" << mResources.MaxGeometryImageUniforms;
// clang-format on
- builtInResourcesString = strstream.str();
+ mBuiltInResourcesString = strstream.str();
}
void TCompiler::collectInterfaceBlocks()
{
- ASSERT(interfaceBlocks.empty());
- interfaceBlocks.reserve(uniformBlocks.size() + shaderStorageBlocks.size() + inBlocks.size());
- interfaceBlocks.insert(interfaceBlocks.end(), uniformBlocks.begin(), uniformBlocks.end());
- interfaceBlocks.insert(interfaceBlocks.end(), shaderStorageBlocks.begin(),
- shaderStorageBlocks.end());
- interfaceBlocks.insert(interfaceBlocks.end(), inBlocks.begin(), inBlocks.end());
+ ASSERT(mInterfaceBlocks.empty());
+ mInterfaceBlocks.reserve(mUniformBlocks.size() + mShaderStorageBlocks.size() +
+ mInBlocks.size());
+ mInterfaceBlocks.insert(mInterfaceBlocks.end(), mUniformBlocks.begin(), mUniformBlocks.end());
+ mInterfaceBlocks.insert(mInterfaceBlocks.end(), mShaderStorageBlocks.begin(),
+ mShaderStorageBlocks.end());
+ mInterfaceBlocks.insert(mInterfaceBlocks.end(), mInBlocks.begin(), mInBlocks.end());
}
void TCompiler::clearResults()
{
- arrayBoundsClamper.Cleanup();
- infoSink.info.erase();
- infoSink.obj.erase();
- infoSink.debug.erase();
+ mArrayBoundsClamper.Cleanup();
+ mInfoSink.info.erase();
+ mInfoSink.obj.erase();
+ mInfoSink.debug.erase();
mDiagnostics.resetErrorCount();
- attributes.clear();
- outputVariables.clear();
- uniforms.clear();
- inputVaryings.clear();
- outputVaryings.clear();
- interfaceBlocks.clear();
- uniformBlocks.clear();
- shaderStorageBlocks.clear();
- inBlocks.clear();
- variablesCollected = false;
+ mAttributes.clear();
+ mOutputVariables.clear();
+ mUniforms.clear();
+ mInputVaryings.clear();
+ mOutputVaryings.clear();
+ mInterfaceBlocks.clear();
+ mUniformBlocks.clear();
+ mShaderStorageBlocks.clear();
+ mInBlocks.clear();
+ mVariablesCollected = false;
mGLPositionInitialized = false;
mNumViews = -1;
@@ -926,13 +906,13 @@
mGeometryShaderInvocations = 0;
mGeometryShaderMaxVertices = -1;
- builtInFunctionEmulator.cleanup();
+ mBuiltInFunctionEmulator.cleanup();
- nameMap.clear();
+ mNameMap.clear();
mSourcePath = nullptr;
- symbolTable.clearCompilationResults();
+ mSymbolTable.clearCompilationResults();
}
bool TCompiler::initCallDag(TIntermNode *root)
@@ -970,11 +950,11 @@
depths[i] = depth;
- if (depth >= maxCallStackDepth)
+ if (depth >= mResources.MaxCallStackDepth)
{
// Trace back the function chain to have a meaningful info log.
std::stringstream errorStream;
- errorStream << "Call stack too deep (larger than " << maxCallStackDepth
+ errorStream << "Call stack too deep (larger than " << mResources.MaxCallStackDepth
<< ") with the following call chain: "
<< record.node->getFunction()->name();
@@ -1028,12 +1008,12 @@
void TCompiler::internalTagUsedFunction(size_t index)
{
- if (functionMetadata[index].used)
+ if (mFunctionMetadata[index].used)
{
return;
}
- functionMetadata[index].used = true;
+ mFunctionMetadata[index].used = true;
for (int calleeIndex : mCallDag.getRecordFromIndex(index).callees)
{
@@ -1089,7 +1069,7 @@
void TCompiler::pruneUnusedFunctions(TIntermBlock *root)
{
- UnusedPredicate isUnused(&mCallDag, &functionMetadata);
+ UnusedPredicate isUnused(&mCallDag, &mFunctionMetadata);
TIntermSequence *sequence = root->getSequence();
if (!sequence->empty())
@@ -1101,13 +1081,13 @@
bool TCompiler::limitExpressionComplexity(TIntermBlock *root)
{
- if (!IsASTDepthBelowLimit(root, maxExpressionComplexity))
+ if (!IsASTDepthBelowLimit(root, mResources.MaxExpressionComplexity))
{
mDiagnostics.globalError("Expression too complex.");
return false;
}
- if (!ValidateMaxParameters(root, maxFunctionParameters))
+ if (!ValidateMaxParameters(root, mResources.MaxFunctionParameters))
{
mDiagnostics.globalError("Function has too many parameters.");
return false;
@@ -1123,7 +1103,7 @@
bool TCompiler::wereVariablesCollected() const
{
- return variablesCollected;
+ return mVariablesCollected;
}
void TCompiler::initializeGLPosition(TIntermBlock *root)
@@ -1132,14 +1112,15 @@
sh::ShaderVariable var(GL_FLOAT_VEC4);
var.name = "gl_Position";
list.push_back(var);
- InitializeVariables(root, list, &symbolTable, shaderVersion, extensionBehavior, false, false);
+ InitializeVariables(root, list, &mSymbolTable, mShaderVersion, mExtensionBehavior, false,
+ false);
}
void TCompiler::useAllMembersInUnusedStandardAndSharedBlocks(TIntermBlock *root)
{
sh::InterfaceBlockList list;
- for (auto block : uniformBlocks)
+ for (auto block : mUniformBlocks)
{
if (!block.staticUse &&
(block.layout == sh::BLOCKLAYOUT_STD140 || block.layout == sh::BLOCKLAYOUT_SHARED))
@@ -1148,15 +1129,15 @@
}
}
- sh::UseInterfaceBlockFields(root, list, symbolTable);
+ sh::UseInterfaceBlockFields(root, list, mSymbolTable);
}
void TCompiler::initializeOutputVariables(TIntermBlock *root)
{
InitVariableList list;
- if (shaderType == GL_VERTEX_SHADER || shaderType == GL_GEOMETRY_SHADER_EXT)
+ if (mShaderType == GL_VERTEX_SHADER || mShaderType == GL_GEOMETRY_SHADER_EXT)
{
- for (auto var : outputVaryings)
+ for (auto var : mOutputVaryings)
{
list.push_back(var);
if (var.name == "gl_Position")
@@ -1168,18 +1149,19 @@
}
else
{
- ASSERT(shaderType == GL_FRAGMENT_SHADER);
- for (auto var : outputVariables)
+ ASSERT(mShaderType == GL_FRAGMENT_SHADER);
+ for (auto var : mOutputVariables)
{
list.push_back(var);
}
}
- InitializeVariables(root, list, &symbolTable, shaderVersion, extensionBehavior, false, false);
+ InitializeVariables(root, list, &mSymbolTable, mShaderVersion, mExtensionBehavior, false,
+ false);
}
const TExtensionBehavior &TCompiler::getExtensionBehavior() const
{
- return extensionBehavior;
+ return mExtensionBehavior;
}
const char *TCompiler::getSourcePath() const
@@ -1189,29 +1171,29 @@
const ShBuiltInResources &TCompiler::getResources() const
{
- return compileResources;
+ return mResources;
}
const ArrayBoundsClamper &TCompiler::getArrayBoundsClamper() const
{
- return arrayBoundsClamper;
+ return mArrayBoundsClamper;
}
ShArrayIndexClampingStrategy TCompiler::getArrayIndexClampingStrategy() const
{
- return clampingStrategy;
+ return mResources.ArrayIndexClampingStrategy;
}
const BuiltInFunctionEmulator &TCompiler::getBuiltInFunctionEmulator() const
{
- return builtInFunctionEmulator;
+ return mBuiltInFunctionEmulator;
}
void TCompiler::writePragma(ShCompileOptions compileOptions)
{
if (!(compileOptions & SH_FLATTEN_PRAGMA_STDGL_INVARIANT_ALL))
{
- TInfoSinkBase &sink = infoSink.obj;
+ TInfoSinkBase &sink = mInfoSink.obj;
if (mPragma.stdgl.invariantAll)
sink << "#pragma STDGL invariant(all)\n";
}
@@ -1219,17 +1201,17 @@
bool TCompiler::isVaryingDefined(const char *varyingName)
{
- ASSERT(variablesCollected);
- for (size_t ii = 0; ii < inputVaryings.size(); ++ii)
+ ASSERT(mVariablesCollected);
+ for (size_t ii = 0; ii < mInputVaryings.size(); ++ii)
{
- if (inputVaryings[ii].name == varyingName)
+ if (mInputVaryings[ii].name == varyingName)
{
return true;
}
}
- for (size_t ii = 0; ii < outputVaryings.size(); ++ii)
+ for (size_t ii = 0; ii < mOutputVaryings.size(); ++ii)
{
- if (outputVaryings[ii].name == varyingName)
+ if (mOutputVaryings[ii].name == varyingName)
{
return true;
}
diff --git a/src/compiler/translator/Compiler.h b/src/compiler/translator/Compiler.h
index 2dc0fe6..2eef387 100644
--- a/src/compiler/translator/Compiler.h
+++ b/src/compiler/translator/Compiler.h
@@ -94,8 +94,8 @@
ShCompileOptions compileOptions);
// Get results of the last compilation.
- int getShaderVersion() const { return shaderVersion; }
- TInfoSink &getInfoSink() { return infoSink; }
+ int getShaderVersion() const { return mShaderVersion; }
+ TInfoSink &getInfoSink() { return mInfoSink; }
bool isComputeShaderLocalSizeDeclared() const { return mComputeShaderLocalSizeDeclared; }
const sh::WorkGroupSize &getComputeShaderLocalSize() const { return mComputeShaderLocalSize; }
@@ -104,25 +104,25 @@
// Clears the results from the previous compilation.
void clearResults();
- const std::vector<sh::Attribute> &getAttributes() const { return attributes; }
- const std::vector<sh::OutputVariable> &getOutputVariables() const { return outputVariables; }
- const std::vector<sh::Uniform> &getUniforms() const { return uniforms; }
- const std::vector<sh::Varying> &getInputVaryings() const { return inputVaryings; }
- const std::vector<sh::Varying> &getOutputVaryings() const { return outputVaryings; }
- const std::vector<sh::InterfaceBlock> &getInterfaceBlocks() const { return interfaceBlocks; }
- const std::vector<sh::InterfaceBlock> &getUniformBlocks() const { return uniformBlocks; }
+ const std::vector<sh::Attribute> &getAttributes() const { return mAttributes; }
+ const std::vector<sh::OutputVariable> &getOutputVariables() const { return mOutputVariables; }
+ const std::vector<sh::Uniform> &getUniforms() const { return mUniforms; }
+ const std::vector<sh::Varying> &getInputVaryings() const { return mInputVaryings; }
+ const std::vector<sh::Varying> &getOutputVaryings() const { return mOutputVaryings; }
+ const std::vector<sh::InterfaceBlock> &getInterfaceBlocks() const { return mInterfaceBlocks; }
+ const std::vector<sh::InterfaceBlock> &getUniformBlocks() const { return mUniformBlocks; }
const std::vector<sh::InterfaceBlock> &getShaderStorageBlocks() const
{
- return shaderStorageBlocks;
+ return mShaderStorageBlocks;
}
- const std::vector<sh::InterfaceBlock> &getInBlocks() const { return inBlocks; }
+ const std::vector<sh::InterfaceBlock> &getInBlocks() const { return mInBlocks; }
- ShHashFunction64 getHashFunction() const { return hashFunction; }
- NameMap &getNameMap() { return nameMap; }
- TSymbolTable &getSymbolTable() { return symbolTable; }
- ShShaderSpec getShaderSpec() const { return shaderSpec; }
- ShShaderOutput getOutputType() const { return outputType; }
- const std::string &getBuiltInResourcesString() const { return builtInResourcesString; }
+ ShHashFunction64 getHashFunction() const { return mResources.HashFunction; }
+ NameMap &getNameMap() { return mNameMap; }
+ TSymbolTable &getSymbolTable() { return mSymbolTable; }
+ ShShaderSpec getShaderSpec() const { return mShaderSpec; }
+ ShShaderOutput getOutputType() const { return mOutputType; }
+ const std::string &getBuiltInResourcesString() const { return mBuiltInResourcesString; }
bool shouldRunLoopAndIndexingValidation(ShCompileOptions compileOptions) const;
@@ -140,15 +140,9 @@
return mGeometryShaderOutputPrimitiveType;
}
- sh::GLenum getShaderType() const { return shaderType; }
+ sh::GLenum getShaderType() const { return mShaderType; }
protected:
- // Initialize symbol-table with built-in symbols.
- bool InitBuiltInSymbolTable(const ShBuiltInResources &resources);
- // Compute the string representation of the built-in resources
- void setResourceString();
- // Return false if the call depth is exceeded.
- bool checkCallDepth();
// Add emulated functions to the built-in function emulator.
virtual void initBuiltInFunctionEmulator(BuiltInFunctionEmulator *emu,
ShCompileOptions compileOptions){};
@@ -156,20 +150,6 @@
virtual void translate(TIntermBlock *root,
ShCompileOptions compileOptions,
PerformanceDiagnostics *perfDiagnostics) = 0;
- // Insert statements to reference all members in unused uniform blocks with standard and shared
- // layout. This is to work around a Mac driver that treats unused standard/shared
- // uniform blocks as inactive.
- void useAllMembersInUnusedStandardAndSharedBlocks(TIntermBlock *root);
- // Insert statements to initialize output variables in the beginning of main().
- // This is to avoid undefined behaviors.
- void initializeOutputVariables(TIntermBlock *root);
- // Insert gl_Position = vec4(0,0,0,0) to the beginning of main().
- // It is to work around a Linux driver bug where missing this causes compile failure
- // while spec says it is allowed.
- // This function should only be applied to vertex shaders.
- void initializeGLPosition(TIntermBlock *root);
- // Return true if the maximum expression complexity is below the limit.
- bool limitExpressionComplexity(TIntermBlock *root);
// Get built-in extensions with default behavior.
const TExtensionBehavior &getExtensionBehavior() const;
const char *getSourcePath() const;
@@ -186,28 +166,46 @@
virtual bool shouldCollectVariables(ShCompileOptions compileOptions);
bool wereVariablesCollected() const;
- std::vector<sh::Attribute> attributes;
- std::vector<sh::OutputVariable> outputVariables;
- std::vector<sh::Uniform> uniforms;
- std::vector<sh::Varying> inputVaryings;
- std::vector<sh::Varying> outputVaryings;
- std::vector<sh::InterfaceBlock> interfaceBlocks;
- std::vector<sh::InterfaceBlock> uniformBlocks;
- std::vector<sh::InterfaceBlock> shaderStorageBlocks;
- std::vector<sh::InterfaceBlock> inBlocks;
+ std::vector<sh::Attribute> mAttributes;
+ std::vector<sh::OutputVariable> mOutputVariables;
+ std::vector<sh::Uniform> mUniforms;
+ std::vector<sh::Varying> mInputVaryings;
+ std::vector<sh::Varying> mOutputVaryings;
+ std::vector<sh::InterfaceBlock> mInterfaceBlocks;
+ std::vector<sh::InterfaceBlock> mUniformBlocks;
+ std::vector<sh::InterfaceBlock> mShaderStorageBlocks;
+ std::vector<sh::InterfaceBlock> mInBlocks;
private:
+ // Initialize symbol-table with built-in symbols.
+ bool initBuiltInSymbolTable(const ShBuiltInResources &resources);
+ // Compute the string representation of the built-in resources
+ void setResourceString();
+ // Return false if the call depth is exceeded.
+ bool checkCallDepth();
+ // Insert statements to reference all members in unused uniform blocks with standard and shared
+ // layout. This is to work around a Mac driver that treats unused standard/shared
+ // uniform blocks as inactive.
+ void useAllMembersInUnusedStandardAndSharedBlocks(TIntermBlock *root);
+ // Insert statements to initialize output variables in the beginning of main().
+ // This is to avoid undefined behaviors.
+ void initializeOutputVariables(TIntermBlock *root);
+ // Insert gl_Position = vec4(0,0,0,0) to the beginning of main().
+ // It is to work around a Linux driver bug where missing this causes compile failure
+ // while spec says it is allowed.
+ // This function should only be applied to vertex shaders.
+ void initializeGLPosition(TIntermBlock *root);
+ // Return true if the maximum expression complexity is below the limit.
+ bool limitExpressionComplexity(TIntermBlock *root);
// Creates the function call DAG for further analysis, returning false if there is a recursion
bool initCallDag(TIntermNode *root);
// Return false if "main" doesn't exist
bool tagUsedFunctions();
void internalTagUsedFunction(size_t index);
- void initSamplerDefaultPrecision(TBasicType samplerType);
-
void collectInterfaceBlocks();
- bool variablesCollected;
+ bool mVariablesCollected;
bool mGLPositionInitialized;
@@ -231,9 +229,9 @@
const TParseContext &parseContext,
ShCompileOptions compileOptions);
- sh::GLenum shaderType;
- ShShaderSpec shaderSpec;
- ShShaderOutput outputType;
+ sh::GLenum mShaderType;
+ ShShaderSpec mShaderSpec;
+ ShShaderOutput mOutputType;
struct FunctionMetadata
{
@@ -242,30 +240,23 @@
};
CallDAG mCallDag;
- std::vector<FunctionMetadata> functionMetadata;
+ std::vector<FunctionMetadata> mFunctionMetadata;
- int maxUniformVectors;
- int maxExpressionComplexity;
- int maxCallStackDepth;
- int maxFunctionParameters;
-
- ShBuiltInResources compileResources;
- std::string builtInResourcesString;
+ ShBuiltInResources mResources;
+ std::string mBuiltInResourcesString;
// Built-in symbol table for the given language, spec, and resources.
// It is preserved from compile-to-compile.
- TSymbolTable symbolTable;
+ TSymbolTable mSymbolTable;
// Built-in extensions with default behavior.
- TExtensionBehavior extensionBehavior;
- bool fragmentPrecisionHigh;
+ TExtensionBehavior mExtensionBehavior;
- ArrayBoundsClamper arrayBoundsClamper;
- ShArrayIndexClampingStrategy clampingStrategy;
- BuiltInFunctionEmulator builtInFunctionEmulator;
+ ArrayBoundsClamper mArrayBoundsClamper;
+ BuiltInFunctionEmulator mBuiltInFunctionEmulator;
// Results of compilation.
- int shaderVersion;
- TInfoSink infoSink; // Output sink.
+ int mShaderVersion;
+ TInfoSink mInfoSink; // Output sink.
TDiagnostics mDiagnostics;
const char *mSourcePath; // Path of source file or NULL
@@ -283,8 +274,7 @@
TLayoutPrimitiveType mGeometryShaderOutputPrimitiveType;
// name hashing.
- ShHashFunction64 hashFunction;
- NameMap nameMap;
+ NameMap mNameMap;
TPragma mPragma;
};
diff --git a/src/compiler/translator/TranslatorGLSL.cpp b/src/compiler/translator/TranslatorGLSL.cpp
index a253578..23141ba 100644
--- a/src/compiler/translator/TranslatorGLSL.cpp
+++ b/src/compiler/translator/TranslatorGLSL.cpp
@@ -141,7 +141,7 @@
bool hasGLSecondaryFragColor = false;
bool hasGLSecondaryFragData = false;
- for (const auto &outputVar : outputVariables)
+ for (const auto &outputVar : mOutputVariables)
{
if (declareGLFragmentOutputs)
{
diff --git a/src/compiler/translator/TranslatorVulkan.cpp b/src/compiler/translator/TranslatorVulkan.cpp
index 230cc12..add2069 100644
--- a/src/compiler/translator/TranslatorVulkan.cpp
+++ b/src/compiler/translator/TranslatorVulkan.cpp
@@ -686,7 +686,7 @@
bool usesFragCoord = false;
// Search for the gl_PointCoord usage, if its used, we need to flip the y coordinate.
- for (const Varying &inputVarying : inputVaryings)
+ for (const Varying &inputVarying : mInputVaryings)
{
if (!inputVarying.isBuiltIn())
{
@@ -712,7 +712,7 @@
bool hasGLFragColor = false;
bool hasGLFragData = false;
- for (const OutputVariable &outputVar : outputVariables)
+ for (const OutputVariable &outputVar : mOutputVariables)
{
if (outputVar.name == "gl_FragColor")
{