For GL_NV_geometry_shader_passthrough extension, the Inferred output primitive for...
authorChao Chen <chaoc@nvidia.com>
Fri, 5 Oct 2018 01:39:27 +0000 (18:39 -0700)
committerChao Chen <chaoc@nvidia.com>
Fri, 5 Oct 2018 01:39:27 +0000 (18:39 -0700)
Also removed unnecessary relax for GL_NV_geometry_shader_passthrough in link validate

Test/baseResults/spv.GeometryShaderPassthrough.geom.out
glslang/MachineIndependent/ParseHelper.cpp
glslang/MachineIndependent/linkValidate.cpp

index 015bd0f..5db845e 100644 (file)
@@ -11,6 +11,7 @@ spv.GeometryShaderPassthrough.geom
                               EntryPoint Geometry 4  "main" 10 14
                               ExecutionMode 4 Triangles
                               ExecutionMode 4 Invocations 1
+                              ExecutionMode 4 OutputTriangleStrip
                               ExecutionMode 4 OutputVertices 3
                               Source GLSL 450
                               SourceExtension  "GL_NV_geometry_shader_passthrough"
index 40c5674..df29560 100644 (file)
@@ -4487,7 +4487,7 @@ void TParseContext::finish()
             switch (intermediate.getInputPrimitive()) {
             case ElgPoints:      intermediate.setOutputPrimitive(ElgPoints);    break;
             case ElgLines:       intermediate.setOutputPrimitive(ElgLineStrip); break;
-            case ElgTriangles:   intermediate.setOutputPrimitive(ElgTriangles); break;
+            case ElgTriangles:   intermediate.setOutputPrimitive(ElgTriangleStrip); break;
             default: break;
             }
         }
index 7ce7cdd..566d563 100644 (file)
@@ -689,17 +689,9 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
     case EShLangGeometry:
         if (inputPrimitive == ElgNone)
             error(infoSink, "At least one shader must specify an input layout primitive");
-        if (outputPrimitive == ElgNone
-#ifdef NV_EXTENSIONS
-            && !getGeoPassthroughEXT()
-#endif
-            )
+        if (outputPrimitive == ElgNone)
             error(infoSink, "At least one shader must specify an output layout primitive");
-        if (vertices == TQualifier::layoutNotSet
-#ifdef NV_EXTENSIONS
-            && !getGeoPassthroughEXT()
-#endif
-           )
+        if (vertices == TQualifier::layoutNotSet)
             error(infoSink, "At least one shader must specify a layout(max_vertices = value)");
         break;
     case EShLangFragment: