Lines Matching defs:const
124 TGlslangToSpvTraverser(unsigned int spvVersion, const glslang::TIntermediate*, spv::SpvBuildLogger* logger,
145 spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier);
146 spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier);
147 spv::Decoration TranslateNonUniformDecoration(const glslang::TQualifier& qualifier);
148 spv::Decoration TranslateNonUniformDecoration(const spv::Builder::AccessChain::CoherentFlags& coherentFlags);
149 spv::Builder::AccessChain::CoherentFlags TranslateCoherent(const glslang::TType& type);
150 spv::MemoryAccessMask TranslateMemoryAccess(const spv::Builder::AccessChain::CoherentFlags &coherentFlags);
151 spv::ImageOperandsMask TranslateImageOperands(const spv::Builder::AccessChain::CoherentFlags &coherentFlags);
152 spv::Scope TranslateMemoryScope(const spv::Builder::AccessChain::CoherentFlags &coherentFlags);
154 spv::ImageFormat TranslateImageFormat(const glslang::TType& type);
155 spv::SelectionControlMask TranslateSelectionControl(const glslang::TIntermSelection&) const;
156 spv::SelectionControlMask TranslateSwitchControl(const glslang::TIntermSwitch&) const;
157 spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector<unsigned int>& operands) const;
158 spv::StorageClass TranslateStorageClass(const glslang::TType&);
159 void TranslateLiterals(const glslang::TVector<const glslang::TIntermConstantUnion*>&, std::vector<unsigned>&) const;
160 void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType);
161 spv::Id createSpvVariable(const glslang::TIntermSymbol*, spv::Id forcedType);
162 spv::Id getSampledType(const glslang::TSampler&);
163 spv::Id getInvertedSwizzleType(const glslang::TIntermTyped&);
164 spv::Id createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped&, spv::Id parentResult);
165 void convertSwizzle(const glslang::TIntermAggregate&, std::vector<unsigned>& swizzle);
166 spv::Id convertGlslangToSpvType(const glslang::TType& type, bool forwardReferenceOnly = false);
167 spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&,
169 void applySpirvDecorate(const glslang::TType& type, spv::Id id, std::optional<int> member);
170 bool filterMember(const glslang::TType& member);
171 spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct,
172 glslang::TLayoutPacking, const glslang::TQualifier&);
174 void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking,
175 const glslang::TQualifier&, spv::Id, const std::vector<spv::Id>& spvMembers);
176 spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim, bool allowZero = false);
177 spv::Id accessChainLoad(const glslang::TType& type);
178 void accessChainStore(const glslang::TType& type, spv::Id rvalue);
179 void multiTypeStore(const glslang::TType&, spv::Id rValue);
180 spv::Id convertLoadedBoolInUniformToUint(const glslang::TType& type, spv::Id nominalTypeId, spv::Id loadedId);
181 glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const;
182 int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
183 int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
184 void updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType, int& currentOffset,
186 void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember);
188 bool isShaderEntryPoint(const glslang::TIntermAggregate* node);
189 bool writableParam(glslang::TStorageQualifier) const;
190 bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam);
191 void makeFunctions(const glslang::TIntermSequence&);
192 void makeGlobalInitializers(const glslang::TIntermSequence&);
194 void visitFunctions(const glslang::TIntermSequence&);
195 void handleFunctionEntry(const glslang::TIntermAggregate* node);
196 void translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
200 spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*);
207 const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
216 const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags);
226 spv::Id getSymbolId(const glslang::TIntermSymbol* node);
227 void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier);
229 spv::Id createSpvConstant(const glslang::TIntermTyped&);
230 spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&,
232 bool isTrivialLeaf(const glslang::TIntermTyped* node);
233 bool isTrivial(const glslang::TIntermTyped* node);
235 spv::Id getExtBuiltins(const char* name);
236 std::pair<spv::Id, spv::Id> getForcedType(glslang::TBuiltInVariable builtIn, const glslang::TType&);
255 const glslang::TIntermediate* glslangIntermediate;
266 std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount];
270 std::unordered_map<const glslang::TTypeList*, long long> glslangTypeToIdMap;
272 std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator;
274 std::map<const glslang::TType *, spv::Id> forwardPointers;
336 spv::Dim TranslateDimensionality(const glslang::TSampler& sampler)
365 spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type)
371 spv::Decoration TranslateBlockDecoration(const glslang::TStorageQualifier storage, bool useStorageBuffer)
394 void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector<spv::Decoration>& memory,
414 spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::TLayoutMatrix matrixLayout)
472 spv::Decoration TGlslangToSpvTraverser::TranslateInterpolationDecoration(const glslang::TQualifier& qualifier)
492 spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier)
507 spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifier)
516 spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qualifier)
525 spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glslang::TQualifier& qualifier)
537 const spv::Builder::AccessChain::CoherentFlags& coherentFlags)
548 const spv::Builder::AccessChain::CoherentFlags &coherentFlags)
574 const spv::Builder::AccessChain::CoherentFlags &coherentFlags)
599 spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCoherent(const glslang::TType& type)
621 const spv::Builder::AccessChain::CoherentFlags &coherentFlags)
1125 spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TType& type)
1219 const glslang::TIntermSelection& selectionNode) const
1228 spv::SelectionControlMask TGlslangToSpvTraverser::TranslateSwitchControl(const glslang::TIntermSwitch& switchNode)
1229 const
1239 spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang::TIntermLoop& loopNode,
1240 std::vector<unsigned int>& operands) const
1281 spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type)
1353 void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVector<const glslang::TIntermConstantUnion*>& constants,
1354 std::vector<unsigned>& literals) const
1401 void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TType& baseType,
1402 const glslang::TType& indexType)
1443 bool IsDescriptorResource(const glslang::TType& type)
1463 void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& parent)
1516 bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier)
1534 const glslang::TIntermediate* glslangIntermediate,
1568 const std::vector<std::string>& processes = glslangIntermediate->getProcesses();
1582 const std::map<std::string, std::string>& include_txt = glslangIntermediate->getIncludeText();
1619 const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
1932 const glslang::TSpirvRequirement& spirvRequirement = glslangIntermediate->getSpirvRequirement();
1947 const glslang::TSpirvExecutionMode spirvExecutionMode = glslangIntermediate->getSpirvExecutionMode();
2215 const int glslangIndex = node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst();
2381 spv::Id TGlslangToSpvTraverser::convertLoadedBoolInUniformToUint(const glslang::TType& type,
2428 const glslang::TType& glslangType)
2467 const auto forceIt = forceType.find(object);
2607 const auto hitObjectOpsWithLvalue = [](glslang::TOperator op) {
2678 const auto& spirvInst = node->getSpirvInstruction();
2684 glslang::TVector<const glslang::TIntermConstantUnion*> constants;
2937 const auto& loc = node->getLoc();
2938 const char* sourceFileName = loc.getFilename();
3083 const glslang::TType& texType = node->getSequence()[0]->getAsTyped()->getType();
3625 const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0;
3626 const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst();
3636 const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst();
3637 const int set = 2;
3744 const auto& spirvInst = node->getSpirvInstruction();
3751 glslang::TVector<const glslang::TIntermConstantUnion*> constants;
3832 const auto isOpSelectable = [&]() {
3849 const auto bothSidesPolicy = [&]() -> bool {
3869 const auto operandOkay = [](glslang::TIntermTyped* node) {
3883 const auto executeBothSides = [&]() -> void {
3933 const spv::SelectionControlMask control = TranslateSelectionControl(*node);
3958 const auto executeOneSide = [&]() {
3966 const spv::SelectionControlMask control = TranslateSelectionControl(*node);
4024 const spv::SelectionControlMask control = TranslateSwitchControl(*node);
4090 const spv::LoopControlMask control = TranslateLoopControl(*node, operands);
4187 const glslang::TType& glslangReturnType = node->getExpression()->getType();
4225 spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* node, spv::Id forcedType)
4241 const bool contains16BitType = node->getType().contains16BitFloat() ||
4298 const char* name = node->getName().c_str();
4318 spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler)
4345 spv::Id TGlslangToSpvTraverser::getInvertedSwizzleType(const glslang::TIntermTyped& node)
4356 spv::Id TGlslangToSpvTraverser::createInvertedSwizzle(spv::Decoration precision, const glslang::TIntermTyped& node,
4365 void TGlslangToSpvTraverser::convertSwizzle(const glslang::TIntermAggregate& node, std::vector<unsigned>& swizzle)
4367 const glslang::TIntermSequence& swizzleSequence = node.getSequence();
4375 spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type, bool forwardReferenceOnly)
4393 spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& type,
4394 glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier,
4500 const glslang::TSampler& sampler = type.getSampler();
4521 const glslang::TTypeList* glslangMembers = type.getStruct();
4548 const auto& spirvType = type.getSpirvType();
4549 const auto& spirvInst = spirvType.spirvInst;
4552 for (const auto& typeParam : spirvType.typeParams) {
4713 void TGlslangToSpvTraverser::applySpirvDecorate(const glslang::TType& type, spv::Id id, std::optional<int> member)
4717 const glslang::TSpirvDecorate& spirvDecorate = type.getQualifier().getSpirvDecorate();
4756 std::vector<const char*> strings;
4759 const char* string = extraOperand->getConstArray()[0].getSConst()->c_str();
4773 bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
4808 spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TType& type,
4809 const glslang::TTypeList* glslangMembers,
4811 const glslang::TQualifier& qualifier)
4852 auto const spvMember = convertGlslangToSpvType(*glslangMember.type, explicitLayout, memberQualifier, lastBufferBlockMember,
4891 void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
4892 const glslang::TTypeList* glslangMembers,
4894 const glslang::TQualifier& qualifier,
4896 const std::vector<spv::Id>& spvMembers)
5014 const auto basicType = type.getBasicType();
5015 const auto typeStorageQualifier = type.getQualifier().storage;
5019 const auto hasRuntimeArray = !spvMembers.empty() && builder.getOpCode(spvMembers.back()) == spv::OpTypeRuntimeArray;
5033 spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arraySizes, int dim, bool allowZero)
5059 spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type)
5099 void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::Id rvalue)
5153 void TGlslangToSpvTraverser::multiTypeStore(const glslang::TType& type, spv::Id rValue)
5209 const glslang::TTypeList& members = *type.getStruct();
5211 const glslang::TType& glslangMemberType = *members[m].type;
5232 glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang::TType& type) const
5257 int TGlslangToSpvTraverser::getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking explicitLayout,
5270 int TGlslangToSpvTraverser::getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking explicitLayout,
5291 void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType, const glslang::TType& memberType,
5349 void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember)
5351 const glslang::TBuiltInVariable glslangBuiltIn = members[glslangMember].type->getQualifier().builtIn;
5381 bool TGlslangToSpvTraverser::isShaderEntryPoint(const glslang::TIntermAggregate* node)
5389 bool TGlslangToSpvTraverser::writableParam(glslang::TStorageQualifier qualifier) const
5401 bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier, const glslang::TType& paramType,
5414 void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslFunctions)
5416 const auto getParamDecorations = [&](std::vector<spv::Decoration>& decorations, const glslang::TType& type,
5446 std::vector<char const*>());
5453 // Typically (except for a "const in" parameter), an address will be passed to the
5456 // - "in" parameters not marked as "const" can be written to without modifying the calling
5459 // - "const in" parameters can just be the r-value, as no writes need occur.
5465 std::vector<char const*> paramNames;
5478 const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
5490 for (auto const parameter:parameters) {
5513 const glslang::TType& paramType = parameters[p]->getAsTyped()->getType();
5525 void TGlslangToSpvTraverser::makeGlobalInitializers(const glslang::TIntermSequence& initializers)
5577 void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glslFunctions)
5586 void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate* node)
5596 void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector<spv::Id>& arguments,
5599 const glslang::TIntermSequence& glslangArguments = node.getSequence();
5745 const glslang::TType &imageType = node->getAsAggregate()
5748 const glslang::TSampler sampler = imageType.getSampler();
5753 const auto signExtensionMask = [&]() {
5778 const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint;
6115 const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
6318 spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node)
6325 const glslang::TIntermSequence& glslangArgs = node->getSequence();
6326 const glslang::TQualifierList& qualifiers = node->getQualifierList();
6339 std::vector<const glslang::TType*> argTypes;
6791 spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
7795 const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags)
8375 const bool isUnsigned = isTypeUnsignedInt(typeProxy);
8376 const bool isFloat = isTypeFloat(typeProxy);
8377 const bool isBool = typeProxy == glslang::EbtBool;
9196 const int componentCount = builder.getNumComponents(operands[0]);
9449 spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol)
9466 const bool mayNeedToReuseBuiltIn =
9642 void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier)
9712 spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& node)
9788 spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glslang::TType& glslangType,
9789 const glslang::TConstUnionArray& consts, int& nextConst, bool specConstant)
9929 bool TGlslangToSpvTraverser::isTrivialLeaf(const glslang::TIntermTyped* node)
9962 bool TGlslangToSpvTraverser::isTrivial(const glslang::TIntermTyped* node)
9978 const glslang::TIntermBinary* binaryNode = node->getAsBinaryNode();
9979 const glslang::TIntermUnary* unaryNode = node->getAsUnaryNode();
10062 spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name)
10080 const int bufSize = 100;
10106 bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName)
10116 out.write((const char*)&word, 4);
10123 bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName)
10137 out << "const uint32_t " << varName << "[] = {" << std::endl;
10139 const int WORDS_PER_LINE = 8;
10143 const unsigned int word = spirv[i + j];
10162 void GlslangToSpv(const TIntermediate& intermediate, std::vector<unsigned int>& spirv, SpvOptions* options)
10168 void GlslangToSpv(const TIntermediate& intermediate, std::vector<unsigned int>& spirv,