SPV: Fix issue #376; declare Geometry capability for fragment use of gl_Layer.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 04c4017..725aac1 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -416,19 +416,19 @@
{
switch (builtIn) {
case glslang::EbvPointSize:
- // Defer adding the capability until the built-in is actually used.
- if (!memberDeclaration) {
- switch (glslangIntermediate->getStage()) {
- case EShLangGeometry:
- builder.addCapability(spv::CapabilityGeometryPointSize);
- break;
- case EShLangTessControl:
- case EShLangTessEvaluation:
- builder.addCapability(spv::CapabilityTessellationPointSize);
- break;
- default:
- break;
- }
+ // Defer adding the capability until the built-in is actually used.
+ if (! memberDeclaration) {
+ switch (glslangIntermediate->getStage()) {
+ case EShLangGeometry:
+ builder.addCapability(spv::CapabilityGeometryPointSize);
+ break;
+ case EShLangTessControl:
+ case EShLangTessEvaluation:
+ builder.addCapability(spv::CapabilityTessellationPointSize);
+ break;
+ default:
+ break;
+ }
}
return spv::BuiltInPointSize;
@@ -440,12 +440,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:
@@ -464,6 +464,10 @@
builder.addCapability(spv::CapabilitySampleRateShading);
return spv::BuiltInSampleMask;
+ case glslang::EbvLayer:
+ builder.addCapability(spv::CapabilityGeometry);
+ return spv::BuiltInLayer;
+
case glslang::EbvPosition: return spv::BuiltInPosition;
case glslang::EbvVertexId: return spv::BuiltInVertexId;
case glslang::EbvInstanceId: return spv::BuiltInInstanceId;
@@ -477,7 +481,6 @@
return (spv::BuiltIn)spv::BadValue;
case glslang::EbvPrimitiveId: return spv::BuiltInPrimitiveId;
case glslang::EbvInvocationId: return spv::BuiltInInvocationId;
- case glslang::EbvLayer: return spv::BuiltInLayer;
case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner;
case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter;
case glslang::EbvTessCoord: return spv::BuiltInTessCoord;