blob: 7c8fa3e1250325314a53ddd304d25dfc6ec9ca51 [file] [log] [blame]
John Kessenichfb4a0b62013-07-09 23:57:13 +00001Current functionality level: ESSL 3.0
John Kessenich9fd55bd2012-12-13 00:05:26 +00002
John Kessenichfb4a0b62013-07-09 23:57:13 +00003Error checking
4 - compile-time check for static recursion
5 - location layout range/overlap semantics
John Kessenich9fd55bd2012-12-13 00:05:26 +00006
John Kessenichfb4a0b62013-07-09 23:57:13 +00007Performance
John Kessenichece0d0c2012-12-13 00:09:49 +00008
John Kessenichfb4a0b62013-07-09 23:57:13 +00009Testing
10 - thread safety
John Kessenichece0d0c2012-12-13 00:09:49 +000011
John Kessenichfb4a0b62013-07-09 23:57:13 +000012Interfacing
John Kessenich54f6e562013-08-03 00:04:10 +000013 - finish putting into a glslang namespace
John Kessenichece0d0c2012-12-13 00:09:49 +000014
John Kessenich54f6e562013-08-03 00:04:10 +000015Functionality to Implement/Finish
16 ESSL 3.0
17 - "const" compile-time constant propagation in the front-end has to be complete, for all built-in functions
John Kessenichfb4a0b62013-07-09 23:57:13 +000018 GLSL 1.2
19 - Handle multiple compilation units per stage
20 - Allow initializers on uniform declarations. The value is set at link time.
21 - signature matching takes type conversions into account, ambiguity is an error
22 GLSL 1.3
23 . flat is for both user and predeclared built-in in/out variables
24 GLSL 1.3 (Non-ES)
25 - Preprocessor token pasting (##), ## does macro expansion after pasting not before
26 - non-perspective (linear) interpolation (noperspective)
27 - add gl_ClipDistance[] to both vertex and fragment shaders
28 - only statically used built-ins have to be redeclared as flat
29 - Link: Deprecated mixing fixed vertex/fragment stage with programmable fragment/vertex stage.
30 - Deprecated gl_ClipVertex
31 - deprecate almost all built-in state
32 - ftransform() is deprecated
33 - Deprecated built-in vertex inputs (attributes) and some outputs (varyings).
34 GLSL 1.4 (Non-ES)
35 - track as removed in this release, but present in others:
36 - Use of gl_ClipVertex. Use gl_ClipDistance instead.
37 - Built-in vertex shader inputs.
38 - Built-in uniforms except for depth range parameters
39 - Built-in interface between vertex and fragment: gl_TexCoord, gl_FogFragCoord, and all the color values.
40 - Built-in two-sided coloring.
41 - Fixed functionality for a programmable stage. Supply shaders for all stages currently being used.
42 - ftransform(). Use invariant outputs instead.
43 GLSL 1.5 (Non-ES)
44 - Deprecated gl_MaxVaryingComponents
45 - Add new minimum maximums for gl_MaxVertexOutputComponents, gl_MaxGeometryInputComponents, gl_MaxGeometryOutputComponents, and gl_MaxFragmentInputComponents,
46 rather than relying on gl_MaxVaryingComponents. Also, corrected gl_MaxVaryingComponents to be 60 instead of 64.
47 - Added gl_PrimitiveID as an input to fragment shaders.
48 - Added gl_FragCoord qualifiers origin_upper_left, and pixel_center_integer to modify the values returned by gl_FragCoord (and have no affect on any other aspect of the pipeline or language).
49 - Added support for multi-sample textures through sampler2DMS and sampler2DMSArray support in texelFetch() and textureSize().
50 - Broadened interface blocks from just uniforms to in and out interfaces as well.
51 - Broaden array usage to include vertex shader inputs (vertex in).
52 - Added geometry shaders. This includes targeting layers in FBO rendering.
53 - geometry shader layouts: they must be declared, telling the system the primitive input and output types and maximum number of vertices.
54 - Added geometry shader constants.
55 - gl_FragCoord qualifiers use the layout(): origin_upper_left and pixel_center_integer.
56 - Broaden structure usage to include geometry inputs and geometry outputs.
57 GLSL 4.0
58 GLSL 4.1
59 GLSL 4.2
60 GLSL 4.3
61 GLSL 4.4