For GL_NV_geometry_shader_passthrough extension, the Inferred output primitive for ElgTriangles should be ElgTriangleStrip.

Also removed unnecessary relax for GL_NV_geometry_shader_passthrough in link validate
This commit is contained in:
Chao Chen 2018-10-04 18:39:27 -07:00
parent ca042a0ffb
commit 07ef0e4c84
3 changed files with 4 additions and 11 deletions

View File

@ -11,6 +11,7 @@ spv.GeometryShaderPassthrough.geom
EntryPoint Geometry 4 "main" 10 14 EntryPoint Geometry 4 "main" 10 14
ExecutionMode 4 Triangles ExecutionMode 4 Triangles
ExecutionMode 4 Invocations 1 ExecutionMode 4 Invocations 1
ExecutionMode 4 OutputTriangleStrip
ExecutionMode 4 OutputVertices 3 ExecutionMode 4 OutputVertices 3
Source GLSL 450 Source GLSL 450
SourceExtension "GL_NV_geometry_shader_passthrough" SourceExtension "GL_NV_geometry_shader_passthrough"

View File

@ -4487,7 +4487,7 @@ void TParseContext::finish()
switch (intermediate.getInputPrimitive()) { switch (intermediate.getInputPrimitive()) {
case ElgPoints: intermediate.setOutputPrimitive(ElgPoints); break; case ElgPoints: intermediate.setOutputPrimitive(ElgPoints); break;
case ElgLines: intermediate.setOutputPrimitive(ElgLineStrip); break; case ElgLines: intermediate.setOutputPrimitive(ElgLineStrip); break;
case ElgTriangles: intermediate.setOutputPrimitive(ElgTriangles); break; case ElgTriangles: intermediate.setOutputPrimitive(ElgTriangleStrip); break;
default: break; default: break;
} }
} }

View File

@ -689,17 +689,9 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
case EShLangGeometry: case EShLangGeometry:
if (inputPrimitive == ElgNone) if (inputPrimitive == ElgNone)
error(infoSink, "At least one shader must specify an input layout primitive"); error(infoSink, "At least one shader must specify an input layout primitive");
if (outputPrimitive == ElgNone if (outputPrimitive == ElgNone)
#ifdef NV_EXTENSIONS
&& !getGeoPassthroughEXT()
#endif
)
error(infoSink, "At least one shader must specify an output layout primitive"); error(infoSink, "At least one shader must specify an output layout primitive");
if (vertices == TQualifier::layoutNotSet if (vertices == TQualifier::layoutNotSet)
#ifdef NV_EXTENSIONS
&& !getGeoPassthroughEXT()
#endif
)
error(infoSink, "At least one shader must specify a layout(max_vertices = value)"); error(infoSink, "At least one shader must specify a layout(max_vertices = value)");
break; break;
case EShLangFragment: case EShLangFragment: