void TranslatorHLSL::translate(TIntermNode *root) { TParseContext& parseContext = *GetGlobalParseContext(); sh::OutputHLSL outputHLSL(parseContext); outputHLSL.output(); }
void TranslatorHLSL::translate(TIntermNode *root) { TParseContext& parseContext = *GetGlobalParseContext(); sh::OutputHLSL outputHLSL(parseContext, getResources(), mOutputType); outputHLSL.output(); mActiveUniforms = outputHLSL.getUniforms(); }
bool ValidateLimitations::validateFunctionCall(TIntermAggregate *node) { ASSERT(node->getOp() == EOpFunctionCall); // If not within loop body, there is nothing to check. if (!withinLoopBody()) return true; // List of param indices for which loop indices are used as argument. typedef std::vector<size_t> ParamIndex; ParamIndex pIndex; TIntermSequence *params = node->getSequence(); for (TIntermSequence::size_type i = 0; i < params->size(); ++i) { TIntermSymbol *symbol = (*params)[i]->getAsSymbolNode(); if (symbol && isLoopIndex(symbol)) pIndex.push_back(i); } // If none of the loop indices are used as arguments, // there is nothing to check. if (pIndex.empty()) return true; bool valid = true; TSymbolTable& symbolTable = GetGlobalParseContext()->symbolTable; TSymbol *symbol = symbolTable.find(node->getFunctionSymbolInfo()->getName(), GetGlobalParseContext()->getShaderVersion()); ASSERT(symbol && symbol->isFunction()); TFunction *function = static_cast<TFunction *>(symbol); for (ParamIndex::const_iterator i = pIndex.begin(); i != pIndex.end(); ++i) { const TConstParameter ¶m = function->getParam(*i); TQualifier qual = param.type->getQualifier(); if ((qual == EvqOut) || (qual == EvqInOut)) { error((*params)[*i]->getLine(), "Loop index cannot be used as argument to a function out or inout parameter", (*params)[*i]->getAsSymbolNode()->getSymbol().c_str()); valid = false; } } return valid; }
bool TranslatorHLSL::compile(TIntermNode *root) { TParseContext& parseContext = *GetGlobalParseContext(); sh::OutputHLSL outputHLSL(parseContext); outputHLSL.output(); return true; }
void TranslatorHLSL::translate(TIntermNode *root) { TParseContext& parseContext = *GetGlobalParseContext(); sh::OutputHLSL outputHLSL(parseContext, getResources(), getOutputType()); outputHLSL.output(); mActiveUniforms = outputHLSL.getUniforms(); mActiveInterfaceBlocks = outputHLSL.getInterfaceBlocks(); mActiveOutputVariables = outputHLSL.getOutputVariables(); mActiveAttributes = outputHLSL.getAttributes(); mActiveVaryings = outputHLSL.getVaryings(); }
void Trace(const char *format, ...) { if (!format) return; TParseContext* parseContext = GetGlobalParseContext(); if (parseContext) { char buf[kTraceBufferLen]; va_list args; va_start(args, format); vsnprintf(buf, kTraceBufferLen, format, args); va_end(args); parseContext->trace(buf); } }