#include "compiler/translator/tree_ops/glsl/ScalarizeVecAndMatConstructorArgs.h"
#include "angle_gl.h"
#include "common/angleutils.h"
#include "compiler/translator/Compiler.h"
#include "compiler/translator/tree_util/IntermNode_util.h"
#include "compiler/translator/tree_util/IntermTraverse.h"
namespace sh
{
namespace
{
const TType *GetHelperType(const TType &type, TQualifier qualifier)
{ … }
class ScalarizeTraverser : public TIntermTraverser
{ … };
bool ScalarizeTraverser::visitAggregate(Visit visit, TIntermAggregate *node)
{ … }
bool ScalarizeTraverser::shouldScalarize(TIntermTyped *typed)
{ … }
const TFunction *ScalarizeTraverser::createHelper(TIntermAggregate *node)
{ … }
TIntermTyped *ScalarizeTraverser::createHelperCall(TIntermAggregate *node, const TFunction *helper)
{ … }
void ScalarizeTraverser::addHelperDefinition(const TFunction *helper, TIntermBlock *body)
{ … }
TIntermTyped *ScalarizeTraverser::createConstructor(TIntermTyped *typed)
{ … }
void ScalarizeTraverser::extractComponents(const TFunction *helper,
size_t componentCount,
TIntermSequence *componentsOut)
{ … }
void ScalarizeTraverser::createConstructorVectorFromScalar(TIntermAggregate *node,
const TFunction *helper,
TIntermSequence *constructorArgsOut)
{ … }
void ScalarizeTraverser::createConstructorVectorFromMultiple(TIntermAggregate *node,
const TFunction *helper,
TIntermSequence *constructorArgsOut)
{ … }
void ScalarizeTraverser::createConstructorMatrixFromScalar(TIntermAggregate *node,
const TFunction *helper,
TIntermSequence *constructorArgsOut)
{ … }
void ScalarizeTraverser::createConstructorMatrixFromVectors(TIntermAggregate *node,
const TFunction *helper,
TIntermSequence *constructorArgsOut)
{ … }
void ScalarizeTraverser::createConstructorMatrixFromMatrix(TIntermAggregate *node,
const TFunction *helper,
TIntermSequence *constructorArgsOut)
{ … }
bool ScalarizeTraverser::update(TCompiler *compiler, TIntermBlock *root)
{ … }
}
bool ScalarizeVecAndMatConstructorArgs(TCompiler *compiler,
TIntermBlock *root,
TSymbolTable *symbolTable)
{ … }
}