Prevent duplicate SPIR-V decorations (#3570)
* Update SPIRV-Tools * https://github.com/KhronosGroup/SPIRV-Tools/pull/5641 added validation that caught errors * Modified glslang to prevent duplicate Restrict and Coherent decorations * Modify createConstructor to avoid adding duplicate RelaxedPrecision decorations when generating a scalar
This commit is contained in:
parent
2db79056b4
commit
1e4f53ab2d
10 changed files with 14 additions and 39 deletions
|
|
@ -398,11 +398,11 @@ void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector
|
|||
bool useVulkanMemoryModel)
|
||||
{
|
||||
if (!useVulkanMemoryModel) {
|
||||
if (qualifier.isCoherent())
|
||||
memory.push_back(spv::DecorationCoherent);
|
||||
if (qualifier.isVolatile()) {
|
||||
memory.push_back(spv::DecorationVolatile);
|
||||
memory.push_back(spv::DecorationCoherent);
|
||||
} else if (qualifier.isCoherent()) {
|
||||
memory.push_back(spv::DecorationCoherent);
|
||||
}
|
||||
}
|
||||
if (qualifier.isRestrict())
|
||||
|
|
@ -5480,8 +5480,10 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF
|
|||
// memory and use RestrictPointer/AliasedPointer.
|
||||
if (originalParam(type.getQualifier().storage, type, false) ||
|
||||
!writableParam(type.getQualifier().storage)) {
|
||||
decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrict :
|
||||
spv::DecorationAliased);
|
||||
// TranslateMemoryDecoration added Restrict decoration already.
|
||||
if (!type.getQualifier().isRestrict()) {
|
||||
decorations.push_back(spv::DecorationAliased);
|
||||
}
|
||||
} else {
|
||||
decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrictPointerEXT :
|
||||
spv::DecorationAliasedPointerEXT);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue