SPV: Unexpected declarations of capabilities from NV extensions.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 4014525..738d1d7 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -472,12 +472,12 @@
//
case glslang::EbvClipDistance:
if (!memberDeclaration)
- builder.addCapability(spv::CapabilityClipDistance);
+ builder.addCapability(spv::CapabilityClipDistance);
return spv::BuiltInClipDistance;
case glslang::EbvCullDistance:
if (!memberDeclaration)
- builder.addCapability(spv::CapabilityCullDistance);
+ builder.addCapability(spv::CapabilityCullDistance);
return spv::BuiltInCullDistance;
case glslang::EbvViewportIndex:
@@ -635,23 +635,32 @@
builder.addCapability(spv::CapabilityShaderViewportMaskNV);
return spv::BuiltInViewportMaskNV;
case glslang::EbvSecondaryPositionNV:
- builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
- builder.addCapability(spv::CapabilityShaderStereoViewNV);
+ if (!memberDeclaration) {
+ builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
+ builder.addCapability(spv::CapabilityShaderStereoViewNV);
+ }
return spv::BuiltInSecondaryPositionNV;
case glslang::EbvSecondaryViewportMaskNV:
- builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
- builder.addCapability(spv::CapabilityShaderStereoViewNV);
+ if (!memberDeclaration) {
+ builder.addExtension(spv::E_SPV_NV_stereo_view_rendering);
+ builder.addCapability(spv::CapabilityShaderStereoViewNV);
+ }
return spv::BuiltInSecondaryViewportMaskNV;
case glslang::EbvPositionPerViewNV:
- builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes);
- builder.addCapability(spv::CapabilityPerViewAttributesNV);
+ if (!memberDeclaration) {
+ builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes);
+ builder.addCapability(spv::CapabilityPerViewAttributesNV);
+ }
return spv::BuiltInPositionPerViewNV;
case glslang::EbvViewportMaskPerViewNV:
- builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes);
- builder.addCapability(spv::CapabilityPerViewAttributesNV);
+ if (!memberDeclaration) {
+ builder.addExtension(spv::E_SPV_NVX_multiview_per_view_attributes);
+ builder.addCapability(spv::CapabilityPerViewAttributesNV);
+ }
return spv::BuiltInViewportMaskPerViewNV;
#endif
- default: return spv::BuiltInMax;
+ default:
+ return spv::BuiltInMax;
}
}
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index b497bba..91e3b89 100755
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -835,6 +835,7 @@
case 5254: return "ShaderViewportIndexLayerNV";
case 5255: return "ShaderViewportMaskNV";
case 5259: return "ShaderStereoViewNV";
+ case 5262: return "PerViewAttributesNV";
#endif
}