Additional semantic checking for tessellation shaders and related clean up:

- non-arrayed geometry inputs and tessellation-control outputs
 - include user blocks in i/o array resizing based on primitive type
 - things belonging only to 'in' or 'out' are verified only on 'in' or 'out'
 - invocation number changing
 - move shader-scoped qualifier checking into its class
 - remove an incidental union of two levels of the node hierarchy in the yacc stack
 - remove layout(location=) default tracking when setting on a variable


git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24551 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich
2013-12-18 03:06:24 +00:00
parent 76ea74afe0
commit 7c908d2543
20 changed files with 280 additions and 206 deletions

View File

@@ -17,6 +17,7 @@ Link Validation
- 1.3: only statically used built-ins have to be redeclared as flat
- 1.5: matching between gl_PerVertex blocks and gl_PerFragment blocks
- 1.3: deprecated mixing fixed vertex/fragment stage with programmable fragment/vertex stage.
+ 4.0: tessellation primitive, vertices, spacing, order,
- 4.3: compute shader not combined with any other stages
- 4.3: remove cross-version linking restrictions.
- 4.3: Allow mismatches in interpolation and auxiliary qualification across stages.
@@ -26,8 +27,8 @@ Link Validation
- limits checking:
+ bindings
- number of input/output compononents
- tessellation limits
- tessellation primitive array sizing consistency
+ tessellation limits
+ tessellation primitive array sizing consistency
+ Non ES: gl_TexCoord can only have a max array size of up to gl_MaxTextureCoords
+ Non ES: gl_ClipDistance ...
- ...
@@ -106,10 +107,10 @@ Shader Functionality to Implement/Finish
+ texel offset limit checking
+ 1.50: geometry shaders: max_vertices must be checked against gl_MaxGeometryOutputVertices (maybe at compile time)
GLSL 4.0
- tessellation control stage and tessellation evaluation stage. Includes barrier() built-in for synchronization.
- patch in, patch out
- input/output arrays
- unsized array sizing to gl_MaxPatchVertices, including gl_in/gl_out
+ tessellation control stage and tessellation evaluation stage. Includes barrier() built-in for synchronization.
+ patch in, patch out
+ input/output arrays
+ unsized array sizing to gl_MaxPatchVertices, including gl_in/gl_out
+ built-in variables, functions, and constants verification
+ layout qualifiers for primitive types
- Polymorphic functions: Run-time selection of what function gets called, through the new keyword subroutine.