Put in infrastructure for tessellation, geometry, and compute stages, and partially flesh out with built-in functions.
Added the built-in functions EmitVertex(), EndPrimitive(), barrier(), memoryBarrier(), memoryBarrierAtomicCounter(), memoryBarrierBuffer(), memoryBarrierImage(), memoryBarrierShared(), and groupMemoryBarrier(). Have not added any new built-in variables. Also changed the linear performance relateToOperator() to a high-performance version. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@22659 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
317f1af217
commit
c027579631
28 changed files with 520 additions and 299 deletions
|
|
@ -264,7 +264,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermNode* childNode,
|
|||
return node;
|
||||
}
|
||||
|
||||
TIntermTyped* TIntermediate::addBuiltInFunctionCall(TOperator op, bool unary, TIntermNode* childNode, const TType& returnType)
|
||||
TIntermTyped* TIntermediate::addBuiltInFunctionCall(TSourceLoc loc, TOperator op, bool unary, TIntermNode* childNode, const TType& returnType)
|
||||
{
|
||||
if (unary) {
|
||||
//
|
||||
|
|
@ -279,9 +279,11 @@ TIntermTyped* TIntermediate::addBuiltInFunctionCall(TOperator op, bool unary, TI
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (child->getAsConstantUnion())
|
||||
|
||||
return child->getAsConstantUnion()->fold(op, returnType, infoSink);
|
||||
if (child->getAsConstantUnion()) {
|
||||
TIntermTyped* folded = child->getAsConstantUnion()->fold(op, returnType, infoSink);
|
||||
if (folded)
|
||||
return folded;
|
||||
}
|
||||
|
||||
TIntermUnary* node = new TIntermUnary(op);
|
||||
node->setLoc(child->getLoc());
|
||||
|
|
@ -299,7 +301,7 @@ TIntermTyped* TIntermediate::addBuiltInFunctionCall(TOperator op, bool unary, TI
|
|||
return node;
|
||||
} else {
|
||||
// setAggregateOperater() calls fold() for constant folding
|
||||
TIntermTyped* node = setAggregateOperator(childNode, op, returnType, childNode->getLoc());
|
||||
TIntermTyped* node = setAggregateOperator(childNode, op, returnType, loc);
|
||||
|
||||
TPrecisionQualifier correctPrecision = returnType.getQualifier().precision;
|
||||
if (correctPrecision == EpqNone && profile == EEsProfile) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue