Commit graph

  • 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
  • 37d080c38a Add missing non-square matrixCompMult built-in functions. John Kessenich 2013-11-22 17:52:58 +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
  • 09709c1521 Don't allow invariant in a function. John Kessenich 2013-11-11 23:51:57 +00:00
  • e74fe56b02 Update Linux binaries John Kessenich 2013-11-11 23:31:44 +00:00
  • bd1a5b7727 Add GL_OES_EGL_image_external. Includes new keyword, type, name mangling, built-in function calls, etc. John Kessenich 2013-11-11 23:29:59 +00:00
  • 99296369d3 Add GL_EXT_frag_depth. John Kessenich 2013-11-11 20:51:50 +00:00
  • 06a37c3964 Add GL_OES_standard_derivatives. Also added extension infrastructure that allows built-in symbols to be tagged with extensions and automatically error checked against them. John Kessenich 2013-11-11 20:31:45 +00:00
  • 115a0adc29 Add GL_OES_texture_3D extension. Also, minor tweaks to extension adding infrastructure. John Kessenich 2013-11-11 18:50:06 +00:00
  • df81ce90c3 Update Linux binaries John Kessenich 2013-11-11 17:01:55 +00:00
  • 359326b866 Minor consistency fix: Define built-in functions to have bodies. John Kessenich 2013-11-11 04:59:32 +00:00
  • a4351c55e8 More subtle checking for redeclarations: - 300 doesn't allow built-in overload, while 100 does, while neither allows redefining - block name can't be reused for block name within the same interface (though, the spec. isn't clear about that, it's easier than verifying member matches, will file bug on it) John Kessenich 2013-11-11 04:21:31 +00:00
  • 4d6570a1b3 Fix several issues in the preprocessor: - macro expansion of hexidecimal numbers - give errors instead of warnings/silence on extra tokens after #endif, #else, etc. - give errors on reserved macro name use, reuse of argument, and redefinition with different whitespace presence - detect and give error for all cases of #elif and #else after #else John Kessenich 2013-11-10 23:07:36 +00:00
  • cfe3ba5a18 update linux binaries John Kessenich 2013-11-09 00:19:17 +00:00
  • 77d908af8a Added constant folding for relational (e.g. lessThan) built-ins, relational built-ins for uints, and bitwise ops for mixed scalars and vectors. John Kessenich 2013-11-09 00:18:22 +00:00
  • 0876a58203 Misc. constant-folding fixes: Check % for 0, mat(mat) constructor, index range checking (within constant objects). Also, rationalize addConst*() methods. John Kessenich 2013-11-08 21:47:56 +00:00
  • 6d7fe63d76 Update glslang_vs2010 project to use C7 Compatible Debug information (/C7) so that projects that link against it don't have LNK4204 warnings. Also fix errant space in "StandAlone _vs2010.sln". John Kessenich 2013-11-08 12:59:26 +00:00
  • 49d6121288 update linux binaries John Kessenich 2013-11-08 07:14:31 +00:00
  • 01c22afa37 Add some missing invariant semantic checks, replace some misplaced sampler semantic checks, add parameter and structure member checks against new qualifiers. John Kessenich 2013-11-08 07:13:18 +00:00
  • c999ba2816 Complete hook up all the compile/link errors to the command-line exit status. (Also, an updated test left from the last check-in.) John Kessenich 2013-11-07 23:33:24 +00:00
  • b0a7eb599b Stop emitting the "#version missing" warning, and hook up the existing "suppress warnings" to a command-line option (-w). John Kessenich 2013-11-07 17:44:20 +00:00
  • d627502d07 remove ^M John Kessenich 2013-11-07 01:48:13 +00:00
  • 3ac3578968 Fix some Linux issues. John Kessenich 2013-11-07 01:36:56 +00:00
  • 11f9fc7247 Add and partially implement an interface for doing uniform reflection. It includes an AST traversal to identify live accesses. John Kessenich 2013-11-07 01:06:34 +00:00
  • 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. John Kessenich 2013-11-05 18:07:25 +00:00
  • c36e1d8e51 Interface and naming improvements: - the new C++ style interface now stands on its own, with the addition of glslang::InitializeProcess() and glslang::FinalizeProcess() - more "global" pool names from a decade ago are fixed to be thread names - StandAlone.cpp fully uses one of the old-style interface or new C++ style interface John Kessenich 2013-11-01 17:41:52 +00:00
  • 5b0f13acbc Include per-shader and per-program pools in the new C++ interface to glslang. (And picked up missing test result from previous check in.) John Kessenich 2013-11-01 03:08:40 +00:00
  • 83a6b1edfc Fix parameter count bug in ambiguity checking for overloaded function matching under implicit conversions. John Kessenich 2013-10-31 18:05:50 +00:00
  • 0d22e31c75 Implement 1.20 style function signature matching under implicit conversion. This was the last key unimplemented feature of versions 120 through 330. John Kessenich 2013-10-30 23:17:34 +00:00
  • 8cbd18ecaa Fix recursion detection (it was detecting cycles in the call graph that were not directed cycles). John Kessenich 2013-10-30 01:22:04 +00:00
  • d492aafad7 Add VS2010 version of solution file and projects. These differ from the VS2012 versions checked in as follows: John Kessenich 2013-10-29 16:25:15 +00:00
  • e17ef84753 Fix bug where bracket dereferences were incorrectly keeping the base's qualifier (for example constBase[i] would still be a const instead of EvqTemporary). John Kessenich 2013-10-28 19:49:16 +00:00
  • ea869fb403 Improve preprocessor by using GLSL scanner, allowing read-only strings to be compiled, unifying of line # tracking, and correct detection that ES #version appeared after a comment. John Kessenich 2013-10-28 18:12:06 +00:00
  • 9497485e14 Add geometry shader input array sizing/checking WRT declared input primitive layout. John Kessenich 2013-10-24 22:41:04 +00:00
  • ab41fe5df6 Add redeclarations of built-in blocks. John Kessenich 2013-10-24 01:25:40 +00:00
  • 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.) John Kessenich 2013-10-23 19:34:05 +00:00
  • 284231c9c5 Add built-in constants through version 440. Some still need to be consumed when initializing the symbol table. John Kessenich 2013-10-22 01:50:39 +00:00
  • c78a126ba6 Tie "location = " to the right stages/versions/extensions. Also add "#define extension 1" extension support and instructions. John Kessenich 2013-10-22 00:21:04 +00:00
  • bf688510a8 For portability, use std::map instead of std::hash_map in recent preprocessor fix. John Kessenich 2013-10-21 19:50:14 +00:00
  • 21a8770f92 Add texture gather functions (and extension check) for GLSL 400 and GL_ARB_texture_gather. John Kessenich 2013-10-21 19:25:59 +00:00
  • a65dc63d46 Update Linux binaries John Kessenich 2013-10-21 16:13:46 +00:00
  • 028dbad0e9 Update Window's binary. John Kessenich 2013-10-21 16:12:23 +00:00
  • c973c004d4 Non-functional: Use better token names for the preprocessor. John Kessenich 2013-10-20 18:37:53 +00:00
  • 1f4104fbb1 Fix memory corruption problem in the preprocessor, removing custom hash-tables/etc. and replacing with std containers. John Kessenich 2013-10-20 18:18:36 +00:00
  • ab3080353a Add layout binding qualifier for blocks and samplers (atomics are not yet in, nor link validation). John Kessenich 2013-10-18 21:37:55 +00:00
  • 8f13e1322d Add swizzles to scalars. John Kessenich 2013-10-18 03:56:23 +00:00
  • 8d8f4cc408 Minor preprocessor fix for error message line/string numbers coming from source line, not macro line. John Kessenich 2013-10-18 03:09:37 +00:00
  • e46b087760 Add function "const", where the initializer does not have to be a compile-time constant. John Kessenich 2013-10-17 20:55:30 +00:00
  • 779e6b406a Add C-style curly-brace initializers. John Kessenich 2013-10-17 19:43:43 +00:00
  • e7c59c187c Add all built-in variables for all versions/profiles/stages of GLSL. Also, made more readable; declarations are cut and paste from the specs, with quotes around them. This does not include built-in constants yet (other than MaxClipDistances), just the non-constants. John Kessenich 2013-10-16 22:28:35 +00:00
  • 457145ded5 Have block members use EvqVaryingIn rather than EvqIn, etc., confining the EvqIn-class of qualifier just to parameters and parse time (before it's known if something is a parameter). Also, have member error messages report their actual line, rather than the block's line. John Kessenich 2013-10-16 04:08:21 +00:00
  • fb57e7cc5e Add ES 3.0 fragment output link-time test for outputs having or not having location qualifiers. John Kessenich 2013-10-15 21:46:20 +00:00
  • 27b72e42c3 Implement ES 2.0 (version 100) limitations for non-inductive loop detection and array indexes needing "constant-index-expressions" (inductive variables and constant expressions). John Kessenich 2013-10-14 22:42:16 +00:00
  • a4ea1313c3 Turn on non-uniform blocks (in/out/buffer), and prevent new stages from working with "no profile" (before 150) shaders. John Kessenich 2013-10-11 19:46:10 +00:00
  • 9d30218fb6 Generalize the symbol hierarchy to transparently handle anonymous-block members better. John Kessenich 2013-10-11 17:29:19 +00:00
  • 4c70685382 Memory management hygiene: Use compare() instead of substr(), and put a few more things intrinsically in the memory pool. John Kessenich 2013-10-11 16:28:43 +00:00
  • 3afe67dcc2 Non-functional: Remove use of the unused structure 'remapper', and other minor internal improvements. Triggered by some bigger changes in the works. Also, turned on an existing test that was not included in the test list. John Kessenich 2013-10-09 00:20:26 +00:00
  • 7ea2f9c39f Fix g++ complaint about taking address of temporary. John Kessenich 2013-10-07 22:02:36 +00:00
  • b5af825841 Update Linux binaries John Kessenich 2013-10-07 22:01:27 +00:00
  • 941d156c13 Update Windows binary. John Kessenich 2013-10-07 21:54:43 +00:00
  • 98c2ef25de Non-functional changes: Typo in error message and in comment, remove unneeded arguments, separate constructor-op mapping from handling constructors. John Kessenich 2013-10-05 19:03:50 +00:00
  • 816e9bc90b Improve robustness of extension checking, and its intersection with ES 100 features. John Kessenich 2013-10-04 21:09:36 +00:00
  • c6b7e6350b Make ES 100 gl_FragData be a mediump, and fix some warnings from g++. John Kessenich 2013-10-04 03:05:45 +00:00
  • e50441ad94 Make some portability improvements identified by Christophe: A few size_t, a couple "../Include", and a whole bunch of parenthesizing "(A && B) || (C && D)", because some compilers don't believe humans know && is higher precedence than ||. John Kessenich 2013-10-04 02:27:06 +00:00
  • 61c2d1410a Document how to add a new feature enabled by an extension in Versions.cpp. Also reorganized slightly to localize related functions. John Kessenich 2013-10-03 20:23:57 +00:00
  • a5830dfc0e Add the following ESSL 2.0 (#version 100) limitations to the configuration file, internal infrastructure, and test cases. Still need to implement the actual detection of non-inductive loops and array accesses. While and do-while loop detection is done. John Kessenich 2013-10-02 05:10:48 +00:00
  • 44e8cae80a Allow ES version 100 to redeclare built-in functions. John Kessenich 2013-10-02 01:30:14 +00:00
  • 447fc3613a Add message indicating level of completeness for not-yet-complete versions. John Kessenich 2013-10-01 23:13:50 +00:00
  • e29e4af7a7 Update Window's binary. John Kessenich 2013-10-01 22:05:18 +00:00
  • 04750f7948 Update Linux binaries John Kessenich 2013-10-01 22:04:33 +00:00
  • 2ecdd14288 Add function recursion testing to the link-time validation. John Kessenich 2013-10-01 21:58:43 +00:00
  • f2ee3dd46a Add full support for uniforms with initializers, including intra-stage link validation of aggregate constant initializers. John Kessenich 2013-09-28 04:02:08 +00:00
  • b3345c422d Fix g++ complaint with previous check in. John Kessenich 2013-09-26 00:53:10 +00:00
  • 9839e2440e Unify the 8 grammar productions for declaring variables. This greatly simplifies making changes for this set of productions. John Kessenich 2013-09-26 00:45:21 +00:00