John Kessenich
1c7e70763b
Merge branch 'master' into hlsl-frontend
2016-04-03 20:36:48 -06:00
John Kessenich
a5845766e0
Front-end: Add specialization-constant subtrees for const variables/symbols.
2016-03-20 16:46:00 -06:00
John Kessenich
952543e757
Front-end infrastructure: simplify and localize creating symbol nodes, reducing replication.
2016-03-19 18:10:22 -06:00
John Kessenich
66e2faf844
Support multiple source languages, adding HLSL as an option.
2016-03-12 18:34:36 -07:00
John Kessenich
4d65ee31a6
Generalize "main" to a settable entry point name.
2016-03-12 18:17:47 -07:00
John Kessenich
f2d8a5c53f
SPV: Use heuristic to avoid geometry multi-streams when possible.
2016-03-03 22:29:11 -07:00
baldurk
1be2ffa7cd
GCC/Clang warning fix - unsigned/signed mismatch in comparison
2016-02-25 21:47:14 +01:00
John Kessenich
6c292d3ba7
SPV: Implement Vulkan version of GLSL (KHR_vulkan_glsl).
2016-02-15 21:46:55 -07:00
John Kessenich
4998789d4e
SPV: Fix array strides by explicitly computing them in the getBaseAlignment() algorithm.
2015-12-29 19:20:55 -07:00
John Kessenich
3ac051e41d
SPV: recursively propagate row/col majorness through nested structures.
...
This includes doing structure uniqueness modulo majorness, for shared nested structures.
2015-12-20 12:25:21 -07:00
John Kessenich
61d9fb9048
Semantics: 'invocations' defaults to 1, not 0.
...
'invocations' was using 0 as the "shader never set" flag and as the
default. Formalize this and explicit set to 1 and link time.
2015-12-13 10:59:17 -07:00
John Kessenich
494a02a2b0
Semantics: Geometry stage can support max_vertices = 0.
...
To do this, more generally use a named -1 as a not set value.
2015-12-11 17:54:35 -07:00
John Kessenich
55e7d11ce8
SPIR-V: Move from Version .99 Rev 31 to Version 1.0, Rev 2.
2015-11-15 22:31:41 -07:00
John Kessenich
e690332c3c
SPV: Add modes for spacing, depth, depth replacing, winding, and point mode.
2015-10-13 16:29:02 -06:00
John Kessenich
c8b2e36f52
Implement GL_KHR_blend_equation_advanced.
2015-08-30 05:43:51 -06:00
John Kessenich
0fc4338f3e
Implement GL_OES_shader_multisample_interpolation, as well as core desktop versions of it.
2015-08-22 13:11:12 -06:00
Lei Zhang
54e47cc275
Use const reference for TSourceLoc in interfaces.
2015-07-28 12:45:41 -04:00
John Kessenich
93dfbe1309
glslang: Fix over 100 warnings from MSVC warning level 4.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31202 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-15 17:30:55 +00:00
John Kessenich
6add20a835
glslang linker: Make some methods static that can be static. Contributor: Lei Zhang (antiagainst@google.com).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31113 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2015-05-08 01:44:42 +00:00
John Kessenich
da66bc7d29
Implement write-only semantic checking, the non-r32f/i/u readonly/writeonly check, and ES 3.1 support of volatile. Also, fix a typo in MaxComputeGroupY.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27765 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-19 20:32:48 +00:00
John Kessenich
d78ca6297d
Implement atomic counter offset semantics.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27760 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-19 06:08:38 +00:00
John Kessenich
aa657c117e
Implement 'index' layout qualifier for fragment outputs. Based partly on a submission.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27759 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-19 02:12:44 +00:00
John Kessenich
d1888f83f6
Implement conservative depth layout qualifiers. Based partly on a submission.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27758 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-18 21:27:53 +00:00
John Kessenich
67cf1f6179
Turn on basic support for shader storage buffer objects, but not yet the entire extension.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27699 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-12 02:11:55 +00:00
John Kessenich
79cddfcb56
Finish implementing compute shaders, within #version 430, partly based on a submission.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27674 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-11 02:32:30 +00:00
John Kessenich
ddea678e3e
Implement GL_ARB_shader_image_load_store. Partly done (format layout qualifiers) from a submission.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@27670 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-08-10 18:19:36 +00:00
John Kessenich
7c257eb108
Code simplification: Add (and use) helper functions for building constant scalar AST nodes for bool, int, uint, float, and double, shortening all the code segments that were doing that.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26600 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-05-10 19:52:01 +00:00
John Kessenich
a92c30ed23
Add access methods for consuming adapters to get the top-level shader modes like number of invocations, vertex spacing, primitives, etc.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26586 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-05-08 23:57:13 +00:00
John Kessenich
040b8ca9d4
Just make computeTypeLocationSize const.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26354 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-04-22 19:06:23 +00:00
John Kessenich
150b7acd9a
Restore r26192, r26240, r26241: All three about implicit-array sizing design and implementation. *Minus* test results.
...
r26192: Link-time sizing of implicitly-sized arrays and handling of anonymous blocks containing implicitly-sized members. Also changed "__anon" to "anon@" and encapsulated it.
r26240: Solidify the sharing of struct and array information between nodes and variables: A single copy now allows for simultaneously setting array size for all effected nodes and symbols of a given type. This allowed removal of ioArrayNodeResizeList and makes nodes of implicitly sized arrays know the final size.
r26241: Fix g++ issue with wanting non-const iterator.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26218 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-04-14 14:59:51 +00:00
John Kessenich
b4ef9e0d56
Track which extensions were enabled or required, in the intermediate representation, for reflection of the consumer.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26155 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-03-31 22:20:47 +00:00
John Kessenich
585982e32a
Add getStage() and getIntermediate() methods for consumers. Also removed dead options and update test file.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26126 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-03-28 17:49:10 +00:00
John Kessenich
75694fdacd
Implement implicit conversions of function-call arguments (both in and out) as explicit conversions in the AST, through handleArgumentConversions().
...
Also
- uniformly handle EvqConstReadOnly as an input argument in a function, with
isParamInput() and isParamOutput() queries in TQualifier.
- provide a makeTemporary() in TQualifier, for erasing original qualification when making a temp
- provide a makeInternalVariable() call to make a shader variable not seen in the shader source
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@25912 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-03-16 23:03:07 +00:00
John Kessenich
ac1e188f3b
GL_ARB_enhanced_layouts, part 6: Numerical side of uniform offset and align semantics. Included
...
- moving offset calculations for std140/std430 from reflection to linkValidate.cpp
- applying the offset/align rules on top of std140/std430
- removing caching the structure's number of components (and correcting that this is components, not size)
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@25174 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-01-31 02:40:19 +00:00
John Kessenich
c7776ec3fd
GL_ARB_enhanced_layouts, part 4: Numerical side of xfb_*: offset computation, size computation, alias detection, paddings, overflow, implicit strides, gl_Max* checks, etc.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@25014 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-01-26 01:37:13 +00:00
John Kessenich
44b807e1d0
GL_ARB_enhanced_layouts, part 3: Semantics for xfb_*: where they can go, inheritance, etc., but not yet the backing arithmetic for offsets and strides.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24916 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-01-21 04:43:23 +00:00
John Kessenich
68546c6ca4
GL_ARB_enhanced_layouts, part 2: Full implementation of location/component, plus the parsing for xfb* and align/offset (but not yet full semantics for align/offset).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24692 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-01-08 23:25:18 +00:00
John Kessenich
b76d6d6496
GL_ARB_enhanced_layouts, part 1: Track whether constants are literals, to enable version-specific checking of layout(... = literal) vs. layout(... = expression).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24675 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2014-01-07 18:14:48 +00:00
John Kessenich
7c908d2543
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
2013-12-18 03:06:24 +00:00
John Kessenich
f3e2a89452
Tessellation: Implicit array sizing and consistency checking of control-shader output arrays based on layout(vertices=...).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24518 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-12-13 18:38:43 +00:00
John Kessenich
623833fabc
Tessellation partial implementation (not ready for use yet), including:
...
- the built-in constants
- built-in variable declarations, some dependent on gl_MaxPatchVertices
- layout qualifier for vertices (shared with geometry shader max_vertices)
- layout qualifiers for vertex spacing, vertex order, point mode, and primitive type
- link semantics for layout qualifiers
Still TBD:
- patch qualifier and arrayed input handling
- sizing of gl_out[]
- additional semantic checking
- supporting the extension on version 150
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24468 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-12-11 18:57:40 +00:00
John Kessenich
0b39137009
Implement location overlap error checking.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24376 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-12-05 20:07:56 +00:00
John Kessenich
3591813a8b
Simplify and rationalize constant folding for dereferences (array, matrix, vector, swizzle, struct).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24259 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-12-01 23:37:08 +00:00
John Kessenich
1e91f5ee8d
Add link-time checks for max_vertices, input primitive, and output primitive for existence and matching.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24157 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-11-20 22:16:41 +00:00
John Kessenich
5134b9cf57
Track what ins/outs/uniforms are used, so that errors like "declare after use" or "can't use both XXX and YYY" can be issued. So far, used this for invariant, gl_FragColor et. al., and gl_FragCoord use before redeclaration.
...
Also made all tests in testlist include linker tests.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24156 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-11-20 21:12:43 +00:00
John Kessenich
3db2966570
Fix for build error in vs2013: #include <algorithm> to get definition of std::min and std::max
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24063 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-11-14 15:28:57 +00:00
John Kessenich
11f9fc7247
Add and partially implement an interface for doing uniform reflection. It includes an AST traversal to identify live accesses.
...
It does not yet correctly compute block offsets, give correct GL-API-style type values, or handle arrays.
This is tied to the new -q flag.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23938 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-11-07 01:06:34 +00:00
John Kessenich
8ec55cdcd2
Clean up/resolve a bunch of TODO, which included implementing pixel_center_integer and origin_upper_left and adjusting what versions see legacy texturing names.
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23874 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-11-05 18:07:25 +00:00
John Kessenich
8cbd18ecaa
Fix recursion detection (it was detecting cycles in the call graph that were not directed cycles).
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23761 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-10-30 01:22:04 +00:00
John Kessenich
94fdd1117b
Add geometry-shader stream, invocations, max_vertices, lines, triangles, etc. layout qualifiers, and their default/inheritance behaviors, and some other misc. geometry shader features. (Geometry shaders are not yet done though.)
...
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23679 e7fa87d3-cd2b-0410-9028-fcbf551c1848
2013-10-23 19:34:05 +00:00