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.
John Kessenich
2014-01-26 01:37:13 +00:00
f359199cc3
Support both dynamic CRT and static CRT configurations on VS11 build. The public download needs the static one for user simplicity, while some downstream tools need the dynamic one.
John Kessenich
2014-01-23 21:40:33 +00:00
efb2b7d433
Move to the v110_xp toolset to support XP.
John Kessenich
2014-01-23 00:35:24 +00:00
f4d6634713
Bug 11531: Use %zu when printing size_t values in printf and use "friend class" instead of "friend".
John Kessenich
2014-01-22 23:37:55 +00:00
28b95b682c
Remove Windows VS 11 executable dependencies on MSVCP110.dll and MSVCR110.dll. The only DLL needed now is the standard KERNEL32.DLL.
John Kessenich
2014-01-22 23:23:19 +00:00
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.
John Kessenich
2014-01-21 04:43:23 +00:00
281958c21a
Fix g++ warning and update Window's binary.
John Kessenich
2014-01-11 20:35:26 +00:00
a9819921b3
Improvement to the AST traversal infrastructure.
John Kessenich
2014-01-11 19:29:55 +00:00
4f9aebf659
update Makefile dependencies
John Kessenich
2014-01-10 21:25:05 +00:00
3cdc47bf0b
Several miscellaneous portability improvements (no functional changes).
John Kessenich
2014-01-10 21:09:51 +00:00
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).
John Kessenich
2014-01-08 23:25:18 +00:00
b76d6d6496
GL_ARB_enhanced_layouts, part 1: Track whether constants are literals, to enable version-specific checking of layout(... = literal) vs. layout(... = expression).
John Kessenich
2014-01-07 18:14:48 +00:00
5053a39578
Fix slight inconsistencies in which qualifiers are inherited into block members: - don't inherit 'binding' - always set the member storage qualifier, not just when the shader explicitly set it - don't include in/out members as objects that are resized by geometry/primitive layout specifiers As a side effect, this makes built-in redeclarations (like gl_ClipDistance) require in/out.
John Kessenich
2014-01-07 17:44:41 +00:00
7cbfdf4394
Minor infrastructure changes, to simplify an upcoming check in: - print out block member types when printing a block (makes all test results change) - const versions of all intermediate.h type-identification methods - layoutSlotLocation -> layoutLocation
John Kessenich
2014-01-06 21:27:56 +00:00
7054075804
Tests: add a few more test cases.
John Kessenich
2013-12-31 23:02:24 +00:00
a70031a696
update linux binary
John Kessenich
2013-12-31 00:16:26 +00:00
99b0ffd468
Properly handle 'default' nested in flow control, as well as default/case outside switch statements.
John Kessenich
2013-12-31 00:13:26 +00:00
ddbe0befd7
Update windows binaries.
John Kessenich
2013-12-30 20:44:49 +00:00
bd306b89a4
fix g++ complaint and update binaries
John Kessenich
2013-12-30 20:40:03 +00:00
fcb4ed054c
Preprocessor: Rationalize, simplify, and correct the stack of input sources and their tokenization. This included - consistently dealing with EOF and its effect on error recovery (bug 11444, #1) - turning a simulated OO hierarchy of function pointers and typecasting into a real C++ class hierarchy - correctly handling '\' everywhere, in all classes of tokens, as a layer before preprocessing itself - conditionally handling '\n' in macro expansion input, depending on whether it is in a macro expression or not - delete some unused "memory cleanup" code
John Kessenich
2013-12-30 20:34:28 +00:00
08d182470b
Add array sizing/checking/overlapping semantics for tessellation inputs.
John Kessenich
2013-12-20 18:36:27 +00:00
e8fe7b81d7
Allow tessellation shaders to work on versions back to 150. Also combined all the tessellation tests into a single run.
John Kessenich
2013-12-18 18:47:12 +00:00
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
John Kessenich
2013-12-18 03:06:24 +00:00
76ea74afe0
Update Linux script and binaries
John Kessenich
2013-12-17 00:28:00 +00:00
bd95819123
1) Allow '\' before a non-newline as a token in the preprocessor, and 2) localize line-continuation to just the pp scanner.
John Kessenich
2013-12-16 23:58:15 +00:00
27151efa71
Tessellation: Smaller changes: Take tessellation control output arrayness into account in location overlap testing, better error message for redeclaring a built-in with size to be unsized.
John Kessenich
2013-12-13 19:26:54 +00:00
f3e2a89452
Tessellation: Implicit array sizing and consistency checking of control-shader output arrays based on layout(vertices=...).
John Kessenich
2013-12-13 18:38:43 +00:00
116c30b6ed
Tessellation: implement 'patch' semantics.
John Kessenich
2013-12-12 01:25:37 +00:00
a57a78ed9f
Update Linux binaries
John Kessenich
2013-12-11 22:42:17 +00:00
3a4687d782
Add missing check that a function call is not using the same name as a variable hiding the function's name. Also, support version 110 separate name spaces for functions and variable names.
John Kessenich
2013-12-11 22:38:19 +00:00
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
John Kessenich
2013-12-11 18:57:40 +00:00
2fcc9ff1d2
Update Linux binaries
John Kessenich
2013-12-10 00:27:59 +00:00
2d2f31625d
Preprocessor: Implement skipping of macros that evaluate to nothing while evaluating expressions. They had been causing early termination of an expression's evaluation.
John Kessenich
2013-12-10 00:25:14 +00:00
c719481d43
Flesh out 4.x block redeclaration semantics: - hide non-redeclared anonymous members - array size limit checking - illegal member qualifiers - additional members
John Kessenich
2013-12-09 00:37:46 +00:00
e1b2e39a56
Allow layout aliasing for desktop vertex inputs.
John Kessenich
2013-12-07 00:28:07 +00:00
5f15d4224a
Desktop array size limit checking for gl_ClipDistance[] and gl_TexCoord[].
John Kessenich
2013-12-06 23:57:42 +00:00
64bcb105c9
Made '\' at end of C++ comments be a warning. It is line continuation for some versions, but not others.
John Kessenich
2013-12-06 21:45:15 +00:00
828dc87a7c
Update Linux binaries
John Kessenich
2013-12-06 18:30:06 +00:00
3e0efe5981
Fix g++ warnings.
John Kessenich
2013-12-06 18:24:47 +00:00
7fc3669195
Preprocessor: Add short-circuit logic so ES errors are not given on undefined variables that are short circuited in && and || preprocessing expressions.
John Kessenich
2013-12-06 18:19:22 +00:00
e28beee891
Preprocessor: Fixed that some comments incorrectly substituted a new line instead of space. Also generally cleaned up the space-related coding.
John Kessenich
2013-12-06 16:13:47 +00:00
8e789e8d62
Fixed a couple places that missed the error check for #else/#elif after #else.
John Kessenich
2013-12-05 21:51:40 +00:00
521ca375e0
Remove one layer of arrayness on geometry shader inputs before checking for location overlaps. I think there is a spec. bug here.
John Kessenich
2013-12-05 20:58:16 +00:00
2f15597a7e
Update Linux binaries
John Kessenich
2013-12-04 21:51:22 +00:00
38ae7be872
Update Window's binary.
John Kessenich
2013-12-04 21:50:38 +00:00
7fd9e1189b
Track the flow-control (and {}) nesting level to prevent case statements from being a different nesting level than their switch statement.
John Kessenich
2013-12-04 21:48:20 +00:00
3a53006e0e
Check for packing qualifiers on block members.
John Kessenich
2013-12-04 21:01:32 +00:00
afda2411c0
Check for structures out from vertex or into fragment for ES 100 or desktop pre-150.
John Kessenich
2013-12-04 20:41:33 +00:00
66cdf36521
Detect and give error on second occurrence of #version.
John Kessenich
2013-12-04 20:08:16 +00:00
ef9c8ab207
Update Linux binaries
John Kessenich
2013-12-04 19:47:13 +00:00
e644daf0ed
Update Window's binary.
John Kessenich
2013-12-04 19:46:19 +00:00
b88c60b03f
Track whether function declarations are prototypes, and only allow at most one prototype for ES 100.
John Kessenich
2013-12-04 19:43:05 +00:00
e1f0f5b31f
Re-allow non-language characters in ES 100 comments, including '\', except for '\' just before a new line.
John Kessenich
2013-12-04 17:23:03 +00:00
34bd4fbef7
Fix ES unsized-array checking: it was one level too low, disallowing some unsized syntax that is legal.
John Kessenich
2013-12-04 16:43:00 +00:00
d4042f1827
Update Linux binaries
John Kessenich
2013-12-04 04:49:23 +00:00
bc91f48e26
Update Window's binary.
John Kessenich
2013-12-04 04:47:57 +00:00
319de233dc
Add a versioning system and tie it to the -v command-line option. System is described in glslang/Include/revision.template.
John Kessenich
2013-12-04 04:43:40 +00:00
44222f90af
Update Linux binaries
John Kessenich
2013-12-03 21:05:59 +00:00
6ec8f28960
Update test results.
John Kessenich
2013-12-03 21:05:07 +00:00
143c8bf10f
Give error when overloaded functions differ only on a parameter's precision qualifier.
John Kessenich
2013-12-03 21:04:03 +00:00
4e734dd68b
Disallow non-language characters in comments for ES version 100.
John Kessenich
2013-12-03 20:09:57 +00:00
1abc4045ce
Add #line functionality to allow expressions instead of just literals. Also made some preprocessor code slightly more clear.
John Kessenich
2013-12-03 17:19:03 +00:00
b06c378cc9
Non-functional: missing test result and slight coding change from yesterday's constant folding check in.
John Kessenich
2013-12-03 16:13:22 +00:00
a4ca22ff1d
Finish compile-time constant folding for multi-argument built-ins: distance(), dot(), cross(), faceforward(), reflect(), refract(), and outerProduct().
John Kessenich
2013-12-03 01:18:06 +00:00
0bd3ab69e2
Update Linux binaries
John Kessenich
2013-12-02 18:10:10 +00:00
13221d2f7a
Fix logic error in steering which stages get bias vs. non-bias texturing functions.
John Kessenich
2013-12-02 18:09:08 +00:00
78fe3ace85
Fix crash from attempting ES precision propagation through a constant folded built-in function call when the expression tree has unknown precisions.
John Kessenich
2013-12-02 16:38:53 +00:00
98434bed00
Preprocessor fixes: - Correctly handle non-directive lines starting with "#" - Correctly ignore unrecognized #pragma - Partial fix for new lines in the middle of macro invocation
John Kessenich
2013-12-02 15:56:38 +00:00
3591813a8b
Simplify and rationalize constant folding for dereferences (array, matrix, vector, swizzle, struct).
John Kessenich
2013-12-01 23:37:08 +00:00
1fbaa35ce7
Compile-time check on sampler binding size, link-time merging and checking of bindings.
John Kessenich
2013-11-27 02:41:52 +00:00
474b84bdcf
Fix for glslang_vs2013.vcxproj: One source file was marked as CLInclude instead of CLCompile, which caused link errors.
John Kessenich
2013-11-26 13:37:57 +00:00
d6bef9186b
Correct textureGather*() extension support: - add extension behavior and warning message for partial extension support - add partial support for gpu_shader5 for textureGather* - add interactions between texture rectangle and textureGather* - add checks to distinguish between gpu_shader5 and texture_gather extension feature differences
John Kessenich
2013-11-23 21:10:51 +00:00
5b9f98854c
Reflection: Eliminate redundant arrayed block entries, and use block name instead of instance name for active uniform enumeration.
John Kessenich
2013-11-23 00:44:18 +00:00
c4a2b94dfa
Update Linux binaries
John Kessenich
2013-11-22 17:54:04 +00:00
7c8ca2d529
Update Linux binaries
John Kessenich
2013-11-22 17:32:52 +00:00
ad43f6f684
Implement GL_EXT_shader_texture_lod.
John Kessenich
2013-11-22 17:30:34 +00:00
04884e42ed
Reflection: Expand out block arrays to N different blocks.
John Kessenich
2013-11-21 00:54:57 +00:00
1d1132d9eb
Add limit checking for constant texture texel offsets and max_vertices.
John Kessenich
2013-11-20 23:46:57 +00:00
1e91f5ee8d
Add link-time checks for max_vertices, input primitive, and output primitive for existence and matching.
John Kessenich
2013-11-20 22:16:41 +00:00
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.
John Kessenich
2013-11-20 21:12:43 +00:00
23bcc02a20
Add new convenience pool allocators for arbitrary types, and use them to keep all TSymbol content in the pool, so they don't have to be deleted.
John Kessenich
2013-11-20 18:37:12 +00:00
e1dba1b59f
Fix a preprocessor memory leak by cleaning up some preprocessor memory management.
John Kessenich
2013-11-19 20:52:56 +00:00
43e43ce77a
Reflection: Flesh out expansions of complex aggregates not fully dereferenced, visit all array elements for a variable index, and correct max array index when a later occurrence is larger than an earlier one.
John Kessenich
2013-11-15 20:41:31 +00:00
c17dbd516f
Reflection: Optimize leaf-array sizes for largest index used in a live path.
John Kessenich
2013-11-15 05:28:51 +00:00
12f9221e44
Reflection: - correct block data size - handle deep dereference chains (block.member.member.member) - more clear interface argument names
John Kessenich
2013-11-15 01:34:27 +00:00
c0827e4532
Add VS2013 projects. Also, update VS2010 project to:
John Kessenich
2013-11-14 16:05:13 +00:00
3db2966570
Fix for build error in vs2013: #include <algorithm> to get definition of std::min and std::max
John Kessenich
2013-11-14 15:28:57 +00:00
bf63ef05d9
Add GetEsslVersionString() and GetGlslVersionString().
John Kessenich
2013-11-14 00:16:43 +00:00
e4f45cbf49
fix g++ compilation issues
John Kessenich
2013-11-13 20:50:21 +00:00
ec252dfd3b
Reflection: Add translation from glslang types to the API #define types.
John Kessenich
2013-11-13 19:07:43 +00:00
568bc3ae55
Reflection: Implement the std140 block offset calculation rules.
John Kessenich
2013-11-13 05:40:44 +00:00
c043498b02
Update Linux binaries
John Kessenich
2013-11-12 22:05:09 +00:00
9511ae8d70
Update Window's binary.
John Kessenich
2013-11-12 22:04:23 +00:00
ffa66d3bc7
Disallow arrays in initializers for non-array-object versions (assignment, etc. were already caught, but not initialization).
John Kessenich
2013-11-12 22:02:36 +00:00
029d746bad
Fix line-continuation bug.
John Kessenich
2013-11-12 22:01:32 +00:00
df0488dd0f
Update Linux binaries
John Kessenich
2013-11-12 03:36:35 +00:00
69aa9c1b84
Fixes to scanning: - do version checking for the line-continuation character - check for built-in names in #undef - bug fix for #elif after #else - do version checking for use of floating point suffixes (f, LF, etc.)
John Kessenich
2013-11-12 03:31:24 +00:00
67c9f3a720
Misc semantics fixes: - don't allow pre-array object versions to return a struct containing an array - special case -2147483648 / -1 - include "~" in the full integer functionality checks - handle multiple function parameters having the same name
John Kessenich
2013-11-12 01:02:51 +00:00