fix incorrect error when multiple compilation units don't declare layouts (#2238)

when using multiple compilation units, input/output layouts don't need
to be declared in every unit.
This commit is contained in:
Malcolm Bechard
2020-05-21 02:10:33 -04:00
committed by GitHub
parent 044113abe8
commit 6f723ebbe3
6 changed files with 89 additions and 5 deletions

View File

@@ -936,7 +936,6 @@ ERROR: Linking tessellation control stage: can't handle multiple entry points pe
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
ERROR: Linking tessellation control stage: can't handle multiple entry points per stage
ERROR: Linking tessellation control stage: Contradictory layout vertices values
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
@@ -961,7 +960,6 @@ ERROR: Linking tessellation evaluation stage: can't handle multiple entry points
ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main(
ERROR: Linking tessellation evaluation stage: can't handle multiple entry points per stage
ERROR: Linking tessellation evaluation stage: Contradictory input layout primitives
ERROR: Linking tessellation evaluation stage: Contradictory input vertex spacing
ERROR: Linking tessellation evaluation stage: Contradictory triangle ordering
ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:

View File

@@ -0,0 +1,63 @@
contradict_0.geom
Shader version: 330
invocations = -1
max_vertices = 4
input primitive = points
output primitive = triangle_strip
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 Sequence
0:10 move second child to first child ( temp float)
0:10 'v' ( temp float)
0:10 Function Call: getV( ( global float)
0:11 EndPrimitive ( global void)
0:12 EndPrimitive ( global void)
0:? Linker Objects
contradict_1.geom
Shader version: 330
invocations = -1
max_vertices = 6
input primitive = lines
output primitive = line_strip
0:? Sequence
0:6 Function Definition: getV( ( global float)
0:6 Function Parameters:
0:8 Sequence
0:8 Branch: Return with expression
0:8 Constant:
0:8 1.000000
0:? Linker Objects
Linked geometry stage:
ERROR: Linking geometry stage: Contradictory layout max_vertices values
ERROR: Linking geometry stage: Contradictory input layout primitives
ERROR: Linking geometry stage: Contradictory output layout primitives
Shader version: 330
invocations = 1
max_vertices = 4
input primitive = points
output primitive = triangle_strip
0:? Sequence
0:8 Function Definition: main( ( global void)
0:8 Function Parameters:
0:10 Sequence
0:10 Sequence
0:10 move second child to first child ( temp float)
0:10 'v' ( temp float)
0:10 Function Call: getV( ( global float)
0:11 EndPrimitive ( global void)
0:12 EndPrimitive ( global void)
0:6 Function Definition: getV( ( global float)
0:6 Function Parameters:
0:8 Sequence
0:8 Branch: Return with expression
0:8 Constant:
0:8 1.000000
0:? Linker Objects

13
Test/contradict_0.geom Executable file
View File

@@ -0,0 +1,13 @@
#version 330
layout(points) in;
layout(triangle_strip, max_vertices = 4) out;
float getV();
void main (void)
{
float v = getV();
EndPrimitive();
EndPrimitive();
}

9
Test/contradict_1.geom Executable file
View File

@@ -0,0 +1,9 @@
#version 330
layout(lines) in;
layout(line_strip, max_vertices = 6) out;
float getV()
{
return 1.0;
}