Updated glslang.
This commit is contained in:
parent
23b92ce879
commit
d059039774
5
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
5
3rdparty/glslang/SPIRV/GlslangToSpv.cpp
vendored
@ -1493,7 +1493,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
|
||||
|
||||
if (glslangIntermediate->usingPhysicalStorageBuffer()) {
|
||||
addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT;
|
||||
builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5);
|
||||
builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5);
|
||||
builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT);
|
||||
}
|
||||
if (glslangIntermediate->usingVulkanMemoryModel()) {
|
||||
@ -6836,9 +6836,6 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
|
||||
break;
|
||||
case glslang::EOpConvPtrToUvec2:
|
||||
case glslang::EOpConvUvec2ToPtr:
|
||||
if (builder.isVector(operand))
|
||||
builder.promoteIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer,
|
||||
spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5);
|
||||
convOp = spv::OpBitcast;
|
||||
break;
|
||||
#endif
|
||||
|
2
3rdparty/glslang/SPIRV/doc.cpp
vendored
2
3rdparty/glslang/SPIRV/doc.cpp
vendored
@ -2719,7 +2719,7 @@ void Parameterize()
|
||||
|
||||
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
|
||||
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
|
||||
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'");
|
||||
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'");
|
||||
|
||||
InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
|
||||
|
||||
|
2
3rdparty/glslang/glslang/Include/Types.h
vendored
2
3rdparty/glslang/glslang/Include/Types.h
vendored
@ -2376,7 +2376,7 @@ public:
|
||||
return false;
|
||||
|
||||
// Compare the names and types of all the members, which have to match
|
||||
for (int li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) {
|
||||
for (size_t li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) {
|
||||
if (li < structure->size() && ri < right.structure->size()) {
|
||||
if ((*structure)[li].type->getFieldName() == (*right.structure)[ri].type->getFieldName()) {
|
||||
if (*(*structure)[li].type != *(*right.structure)[ri].type)
|
||||
|
@ -871,12 +871,13 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy
|
||||
}
|
||||
}
|
||||
|
||||
// Qualifiers have to (almost) match
|
||||
bool isInOut = crossStage &&
|
||||
((symbol.getQualifier().storage == EvqVaryingIn && unitSymbol.getQualifier().storage == EvqVaryingOut) ||
|
||||
(symbol.getQualifier().storage == EvqVaryingOut && unitSymbol.getQualifier().storage == EvqVaryingIn));
|
||||
|
||||
// Qualifiers have to (almost) match
|
||||
// Storage...
|
||||
if (symbol.getQualifier().storage != unitSymbol.getQualifier().storage &&
|
||||
!((crossStage && symbol.getQualifier().storage == EvqVaryingIn && unitSymbol.getQualifier().storage == EvqVaryingOut) ||
|
||||
(crossStage && symbol.getQualifier().storage == EvqVaryingOut && unitSymbol.getQualifier().storage == EvqVaryingIn))) {
|
||||
if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) {
|
||||
error(infoSink, "Storage qualifiers must match:");
|
||||
writeTypeComparison = true;
|
||||
}
|
||||
@ -898,7 +899,7 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy
|
||||
}
|
||||
|
||||
// Precision...
|
||||
if (symbol.getQualifier().precision != unitSymbol.getQualifier().precision) {
|
||||
if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) {
|
||||
error(infoSink, "Precision qualifiers must match:");
|
||||
writeTypeComparison = true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user