Skip to content
Snippets Groups Projects
Commit 4b6ce415 authored by John Kessenich's avatar John Kessenich
Browse files

GLSL Linker: Track entry point across compilation units.

This wasn't needed until the recent generalization of "main" to "entry point",
so makes some HLSL-specific code be generic now, for GLSL functional correctness.
parent 6a60c2f9
No related branches found
No related tags found
No related merge requests found
...@@ -910,8 +910,10 @@ ERROR: node is still EOpNull! ...@@ -910,8 +910,10 @@ ERROR: node is still EOpNull!
Linked tessellation control stage: Linked tessellation control stage:
ERROR: Linking tessellation control stage: can't handle multiple entry points per stage
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main( 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: Contradictory layout vertices values
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main( main(
...@@ -921,6 +923,7 @@ ERROR: Linking tessellation control stage: Types must match: ...@@ -921,6 +923,7 @@ ERROR: Linking tessellation control stage: Types must match:
gl_out: "out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}" versus "out implicitly-sized array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}" gl_out: "out 4-element array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}" versus "out implicitly-sized array of block{out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out implicitly-sized array of float ClipDistance gl_ClipDistance}"
ERROR: Linking tessellation control stage: Types must match: ERROR: Linking tessellation control stage: Types must match:
outa: "global 4-element array of int" versus "global 1-element array of int" outa: "global 4-element array of int" versus "global 1-element array of int"
ERROR: Linking tessellation control stage: can't handle multiple entry points per stage
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main( main(
ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
...@@ -934,8 +937,10 @@ ERROR: Linking tessellation control stage: Types must match: ...@@ -934,8 +937,10 @@ ERROR: Linking tessellation control stage: Types must match:
Linked tessellation evaluation stage: Linked tessellation evaluation stage:
ERROR: Linking tessellation evaluation stage: can't handle multiple entry points per stage
ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: ERROR: Linking tessellation evaluation stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main( 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 layout primitives
ERROR: Linking tessellation evaluation stage: Contradictory input vertex spacing ERROR: Linking tessellation evaluation stage: Contradictory input vertex spacing
ERROR: Linking tessellation evaluation stage: Contradictory triangle ordering ERROR: Linking tessellation evaluation stage: Contradictory triangle ordering
......
...@@ -48,6 +48,7 @@ ERROR: Linking geometry stage: At least one shader must specify a layout(max_ver ...@@ -48,6 +48,7 @@ ERROR: Linking geometry stage: At least one shader must specify a layout(max_ver
Linked fragment stage: Linked fragment stage:
ERROR: Linking fragment stage: can't handle multiple entry points per stage
ERROR: Linking fragment stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: ERROR: Linking fragment stage: Multiple function bodies in multiple compilation units for the same signature in the same stage:
main( main(
......
...@@ -3,4 +3,4 @@ ...@@ -3,4 +3,4 @@
// For the date, it uses the current date (when then script is run). // For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "Overload400-PrecQual.1686" #define GLSLANG_REVISION "Overload400-PrecQual.1686"
#define GLSLANG_DATE "08-Dec-2016" #define GLSLANG_DATE "09-Dec-2016"
...@@ -82,7 +82,7 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) ...@@ -82,7 +82,7 @@ void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
if (source != unit.source) if (source != unit.source)
error(infoSink, "can't link compilation units from different source languages"); error(infoSink, "can't link compilation units from different source languages");
if (source == EShSourceHlsl && unit.getNumEntryPoints() > 0) { if (unit.getNumEntryPoints() > 0) {
if (getNumEntryPoints() > 0) if (getNumEntryPoints() > 0)
error(infoSink, "can't handle multiple entry points per stage"); error(infoSink, "can't handle multiple entry points per stage");
else else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment