public List<VariablesDeclaration> getUniformDecls() { return getGlobalVariablesDeclarations() .stream() .filter(item -> item.getBaseType().hasQualifier(TypeQualifier.UNIFORM)) .collect(Collectors.toList()); }
private boolean hasOutQualifier(FunctionDefinition functionDefinition) { return functionDefinition.getPrototype().getParameters().stream() .map(item -> item.getType()) .anyMatch(item -> item.hasQualifier(TypeQualifier.OUT_PARAM) || item.hasQualifier(TypeQualifier.INOUT_PARAM)); }
@Override public void visitVariablesDeclaration(VariablesDeclaration variablesDeclaration) { if (variablesDeclaration.getBaseType().hasQualifier(TypeQualifier.UNIFORM)) { inUniformDecl = true; } super.visitVariablesDeclaration(variablesDeclaration); inUniformDecl = false; }
@Override public void visitVariableIdentifierExpr(VariableIdentifierExpr variableIdentifierExpr) { super.visitVariableIdentifierExpr(variableIdentifierExpr); if (!currentVariablesDeclaration.isPresent()) { return; } if (!nonConst(variableIdentifierExpr)) { return; } if (currentVariablesDeclaration.get().getBaseType().hasQualifier(TypeQualifier.CONST)) { ((QualifiedType) currentVariablesDeclaration.get().getBaseType()) .removeQualifier(TypeQualifier.CONST); if (atGlobalScope) { assert !globalsToBeReInitialized.contains(currentVariablesDeclaration.get()); globalsToBeReInitialized.add(currentVariablesDeclaration.get()); } } else if (shadingLanguageVersion.globalVariableInitializersMustBeConst() && atGlobalScope) { if (!globalsToBeReInitialized.contains(currentVariablesDeclaration.get())) { globalsToBeReInitialized.add(currentVariablesDeclaration.get()); } } }
boolean typeRefersToUniform(Type type) { if (type.hasQualifier(TypeQualifier.UNIFORM)) { return true; } if (!(type.getWithoutQualifiers() instanceof ArrayType)) { return false; } return typeRefersToUniform(((ArrayType) type.getWithoutQualifiers()).getBaseType()); }
private boolean nonConst(VariableIdentifierExpr variableIdentifierExpr) { final ScopeEntry se = currentScope.lookupScopeEntry(variableIdentifierExpr.getName()); return se != null && se.hasVariablesDeclaration() && !se.getVariablesDeclaration().getBaseType() .hasQualifier(TypeQualifier.CONST); }
.filter(item -> typer.prototypeMatches(item, (FunctionCallExpr) parent)) .collect(Collectors.toList())) { if (fp.getParameter(childIndex).getType().hasQualifier(TypeQualifier.OUT_PARAM) || fp.getParameter(childIndex).getType().hasQualifier(TypeQualifier.INOUT_PARAM)) { return false;
assert !((VariablesDeclaration) decl).getBaseType().hasQualifier(TypeQualifier.UNIFORM);
for (Declaration decl : tu.getTopLevelDeclarations()) { if (decl instanceof VariablesDeclaration && ((VariablesDeclaration) decl).getBaseType().hasQualifier(TypeQualifier.UNIFORM)) { final VariablesDeclaration variablesDeclaration = (VariablesDeclaration) decl; for (int i = 0; i < variablesDeclaration.getNumDecls(); i++) {
&& ((VariablesDeclaration) decl).getBaseType().hasQualifier(TypeQualifier.UNIFORM)) { final VariablesDeclaration variablesDeclaration = (VariablesDeclaration) decl; if (variablesDeclaration.getNumDecls() == 0) {
IRandom generator, ShadingLanguageVersion shadingLanguageVersion) { final boolean isConst = type.hasQualifier(TypeQualifier.CONST); try {
@Override public void visitVariableIdentifierExpr(VariableIdentifierExpr variableIdentifierExpr) { super.visitVariableIdentifierExpr(variableIdentifierExpr); final String name = variableIdentifierExpr.getName(); final ScopeEntry se = currentScope.lookupScopeEntry(name); if (se == null) { return; } if (se.getType() == null) { return; } if (!se.getType().hasQualifier(TypeQualifier.UNIFORM)) { return; } if (se.getType().getWithoutQualifiers() instanceof BasicType && uniformsInfo.containsKey(name)) { final BasicType basicType = (BasicType) se.getType().getWithoutQualifiers(); addOpportunity(new SimplifyExprReductionOpportunity( parentMap.getParent(variableIdentifierExpr), PruneUniforms.getBasicTypeLiteralExpr(basicType, uniformsInfo.getArgs(name)), variableIdentifierExpr, getVistitationDepth())); } }