platform/upstream/glslang.git
4 years agoObey ENABLE_PCH CMake option
Julius Ikkala [Fri, 21 Aug 2020 15:44:06 +0000 (18:44 +0300)]
Obey ENABLE_PCH CMake option

4 years agoMerge pull request #2371 from RafaelMarinheiro/master
John Kessenich [Mon, 17 Aug 2020 10:04:32 +0000 (04:04 -0600)]
Merge pull request #2371 from RafaelMarinheiro/master

Use --test-root to pass files to Bazel tests.

4 years agoMerge pull request #2369 from ezdiy/c_api_export
John Kessenich [Mon, 17 Aug 2020 09:02:44 +0000 (03:02 -0600)]
Merge pull request #2369 from ezdiy/c_api_export

GLSLANG_EXPORT for C APIs.

4 years agoBuild: fix a build warning
johnkslang [Sat, 15 Aug 2020 01:39:28 +0000 (19:39 -0600)]
Build: fix a build warning

4 years agoUse --test-root to pass files to Bazel tests.
Rafael Marinheiro [Fri, 14 Aug 2020 21:00:58 +0000 (22:00 +0100)]
Use --test-root to pass files to Bazel tests.

The current implementation makes tests fail when it is imported from a
different Bazel workspace. We fix that by using
the --test-root flag to pass the rootpath to the
tests.

4 years agoMerge pull request #2367 from KhronosGroup/fix-semantic-checking
John Kessenich [Fri, 14 Aug 2020 15:41:18 +0000 (09:41 -0600)]
Merge pull request #2367 from KhronosGroup/fix-semantic-checking

Remove incorrect style of extension-based semantic checking.

4 years agoFix #2366, fix #2358, correctly separate out numerical feature checking
johnkslang [Fri, 14 Aug 2020 14:40:06 +0000 (08:40 -0600)]
Fix #2366, fix #2358, correctly separate out numerical feature checking

We need separate concepts for
 - total set of extensions ever enabled, for the back end
 - current state of extensions, for parsing
 - the set of features currently enabled for building the AST

4 years agoNon-functional (almost): Refactor when 'extensionRequested' is called.
johnkslang [Fri, 14 Aug 2020 08:16:19 +0000 (02:16 -0600)]
Non-functional (almost): Refactor when 'extensionRequested' is called.

This detangles incorrect conflation of HLSL with GLSL extensions,
defers asking expensive questions until it's time to ask, and removes
some dead code.

4 years agoNon-functional: Remove reinventing the scalar type, note code issues
johnkslang [Fri, 14 Aug 2020 06:36:19 +0000 (00:36 -0600)]
Non-functional: Remove reinventing the scalar type, note code issues

The scalar type was already the basic type passed in.

Also factored out of this the checking of extensions for 8/16-bit stuff.
This code seems wrong in several ways, but for now just documenting it.

4 years agoNon-functional: spellings of "destinaton" and "addPairConversion"
johnkslang [Tue, 11 Aug 2020 08:27:44 +0000 (02:27 -0600)]
Non-functional: spellings of "destinaton" and "addPairConversion"

4 years agoMerge pull request #2370 from alan-baker/update-tools
John Kessenich [Wed, 12 Aug 2020 17:24:59 +0000 (11:24 -0600)]
Merge pull request #2370 from alan-baker/update-tools

Update tools

4 years agoUpdate test expectations
Alan Baker [Wed, 12 Aug 2020 13:04:56 +0000 (09:04 -0400)]
Update test expectations

4 years agoUpdate SPIRV-Tools and SPIRV-Headers known good
Alan Baker [Wed, 12 Aug 2020 13:04:24 +0000 (09:04 -0400)]
Update SPIRV-Tools and SPIRV-Headers known good

4 years agoGLSLANG_EXPORT for C APIs.
Ez Diy [Mon, 10 Aug 2020 20:26:41 +0000 (22:26 +0200)]
GLSLANG_EXPORT for C APIs.

Fixes FFI breakage introduced in #2283

4 years agoNon-functional: correctly do GL_EXT_buffer_reference2 semantic checking
johnkslang [Fri, 7 Aug 2020 08:26:04 +0000 (02:26 -0600)]
Non-functional: correctly do GL_EXT_buffer_reference2 semantic checking

See #2366 for detail.

4 years agoNon-functional: consistently use 'const TSourceLoc&' to pass location.
johnkslang [Thu, 6 Aug 2020 11:24:24 +0000 (05:24 -0600)]
Non-functional: consistently use 'const TSourceLoc&' to pass location.

4 years agoSPV: Fix #1829: don't emit OpModuleProcessed use-storage-buffer
johnkslang [Thu, 6 Aug 2020 07:34:14 +0000 (01:34 -0600)]
SPV: Fix #1829: don't emit OpModuleProcessed use-storage-buffer

4 years agoMerge pull request #2365 from KhronosGroup/update-gtests
John Kessenich [Wed, 5 Aug 2020 17:45:39 +0000 (11:45 -0600)]
Merge pull request #2365 from KhronosGroup/update-gtests

Build/Test: Dropping VS 2013 allows using the latest googletests

4 years agoBuild/Test: Dropping 2013 allows using the latest googletests.
johnkslang [Wed, 5 Aug 2020 11:23:04 +0000 (05:23 -0600)]
Build/Test: Dropping 2013 allows using the latest googletests.

These have a new spelling: INSTANTIATE_TEST_CASE_P -> INSTANTIATE_TEST_SUITE_P

4 years agoSPV: Standalone; sanity check the client GLSL input semantics option value.
johnkslang [Tue, 4 Aug 2020 13:17:39 +0000 (07:17 -0600)]
SPV: Standalone; sanity check the client GLSL input semantics option value.

4 years agoSPV: Use more correct SPV-Tools environment, partially addressing #2290
johnkslang [Tue, 4 Aug 2020 09:00:32 +0000 (03:00 -0600)]
SPV: Use more correct SPV-Tools environment, partially addressing #2290

4 years agoSPV: Fix #2363: include trailing newline named text SPV output.
johnkslang [Tue, 4 Aug 2020 08:13:50 +0000 (02:13 -0600)]
SPV: Fix #2363: include trailing newline named text SPV output.

4 years agoMerge pull request #2362 from ShabbyX/optimize_for_angle
John Kessenich [Mon, 3 Aug 2020 07:28:52 +0000 (01:28 -0600)]
Merge pull request #2362 from ShabbyX/optimize_for_angle

Use GLSLANG_ANGLE to strip features to what ANGLE requires

4 years agoMerge pull request #2361 from ben-clayton/revert-thread-local
John Kessenich [Mon, 3 Aug 2020 06:12:02 +0000 (00:12 -0600)]
Merge pull request #2361 from ben-clayton/revert-thread-local

Revert changes that migrate to `thread_local`.

4 years agoUse GLSLANG_ANGLE to strip features to what ANGLE requires
Shahbaz Youssefi [Fri, 3 Jul 2020 19:42:53 +0000 (15:42 -0400)]
Use GLSLANG_ANGLE to strip features to what ANGLE requires

This change strips a few features similar to GLSLANG_WEB but doesn't
remove every detail like the latter.  It also hardcodes profile/version
to core/450.

In particular, TBuiltIns::initialize is specialized to remove most of
what is not supported or won't be supported by ANGLE.  The result of
this function is parsed with TParseContext::parseShaderStrings which is
a performance bottleneck.

This change shaves about 300KB off of ANGLE's binary size and reduces
the cost of SetupBuiltinSymbolTable to nearly a sixth.

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
4 years agoRevert changes that migrate to `thread_local`.
Ben Clayton [Fri, 31 Jul 2020 06:09:17 +0000 (07:09 +0100)]
Revert changes that migrate to `thread_local`.

iOS 8 does not support `thread_local`, which is still in use.
Another approach will have to be found.

This change is a revert of the following changes:

a3845240 - "Simplify PoolAlloc with use of thread_local."
abf92c80 - "Deprecate InitializeDll functions"
33585c87 - "Limit visibility of symbols for internal libraries"

Issue: #2346

4 years agoMerge pull request #2359 from dneto0/fix-warn
John Kessenich [Tue, 28 Jul 2020 14:39:26 +0000 (08:39 -0600)]
Merge pull request #2359 from dneto0/fix-warn

Avoid spurious warning about uninit var

4 years agoAvoid spurious warning about uninit var
David Neto [Mon, 27 Jul 2020 19:33:56 +0000 (15:33 -0400)]
Avoid spurious warning about uninit var

4 years agoMerge pull request #2356 from greg-lunarg/kg112
John Kessenich [Thu, 23 Jul 2020 01:51:27 +0000 (08:51 +0700)]
Merge pull request #2356 from greg-lunarg/kg112

Update spirv-tools known-good to most recent stable

4 years agoUpdate spirv-tools known-good to most recent stable
Greg Fischer [Wed, 22 Jul 2020 21:10:04 +0000 (15:10 -0600)]
Update spirv-tools known-good to most recent stable

4 years agoMerge pull request #2353 from vkushwaha-nv/SPV_EXT_shader_atomic_float
John Kessenich [Wed, 22 Jul 2020 15:06:01 +0000 (22:06 +0700)]
Merge pull request #2353 from vkushwaha-nv/SPV_EXT_shader_atomic_float

Add changes for SPV_EXT_shader_atomic_float_add

4 years agoAdd changes for SPV_EXT_shader_atomic_float_add
Vikram Kushwaha [Sun, 19 Jul 2020 22:45:01 +0000 (15:45 -0700)]
Add changes for SPV_EXT_shader_atomic_float_add

4 years agoMerge pull request #2354 from ben-clayton/limit-visibility
John Kessenich [Wed, 22 Jul 2020 10:46:44 +0000 (17:46 +0700)]
Merge pull request #2354 from ben-clayton/limit-visibility

Limit visibility of symbols for internal libraries

4 years agoLimit visibility of symbols for internal libraries
Ben Clayton [Tue, 14 Jul 2020 17:36:08 +0000 (18:36 +0100)]
Limit visibility of symbols for internal libraries

Also remove `SPIRV/doc.cpp` from the `SPVRemapper` target as this
is part of `SPIRV`, causing ODR violations. Instead have
`SPVRemapper` link against `SPIRV`.

Fixes ODR violations.

4 years agoMerge pull request #2348 from ben-clayton/thread-local
John Kessenich [Wed, 22 Jul 2020 04:47:06 +0000 (11:47 +0700)]
Merge pull request #2348 from ben-clayton/thread-local

Simplify PoolAlloc by using `thread_local`

4 years agoMerge pull request #2345 from mbechard/master
John Kessenich [Wed, 22 Jul 2020 04:15:24 +0000 (11:15 +0700)]
Merge pull request #2345 from mbechard/master

also search global sequences for live variables

4 years agoSPV: Update to the latest SPIR-V headers.
johnkslang [Mon, 20 Jul 2020 17:49:28 +0000 (11:49 -0600)]
SPV: Update to the latest SPIR-V headers.

4 years agoDeprecate InitializeDll functions
Ben Clayton [Tue, 14 Jul 2020 17:34:45 +0000 (18:34 +0100)]
Deprecate InitializeDll functions

These were only used for TThreadPool, which now uses `thread_local`.

4 years agoSimplify PoolAlloc with use of thread_local.
Ben Clayton [Tue, 14 Jul 2020 17:32:12 +0000 (18:32 +0100)]
Simplify PoolAlloc with use of thread_local.

glslang is using C++ 11, which has first class support for variables of the `thread_local` storage class.

By dropping the use of the `OS_[GS]etTLSValue`, we can simplify the logic, and have it support a thread-local default allocator if none is provided.

Issue: #2346

4 years agoMerge pull request #2352 from ben-clayton/vs2015
John Kessenich [Tue, 21 Jul 2020 03:55:12 +0000 (10:55 +0700)]
Merge pull request #2352 from ben-clayton/vs2015

Finalize glslang 10.15.3847, start glslang 11, drop support for VS2013

4 years agoalso search global variables assignment for live variables
Malcolm Bechard [Tue, 14 Jul 2020 16:59:57 +0000 (12:59 -0400)]
also search global variables assignment for live variables

when traversing the AST to find live UBOs etc, also traverse
references to global module-level variables, incase they are
being filled in from UBOs etc.

4 years agoDrop support for VS2013
Ben Clayton [Mon, 20 Jul 2020 15:32:30 +0000 (16:32 +0100)]
Drop support for VS2013

This was scheduled for today - 20th July 2020.

Updates Appveyor configs to use VS2015 instead.

4 years agoStart glslang 11.0.0
Ben Clayton [Mon, 20 Jul 2020 15:26:34 +0000 (16:26 +0100)]
Start glslang 11.0.0

4 years agoFinalize glslang 10.15.3847
Ben Clayton [Mon, 20 Jul 2020 15:24:30 +0000 (16:24 +0100)]
Finalize glslang 10.15.3847

4 years agobuild_info: Fix parsing of versions with no flavor
Ben Clayton [Mon, 20 Jul 2020 15:39:15 +0000 (16:39 +0100)]
build_info: Fix parsing of versions with no flavor

4 years agoMerge pull request #2351 from ben-clayton/license-checker-cfg
John Kessenich [Sat, 18 Jul 2020 09:30:04 +0000 (16:30 +0700)]
Merge pull request #2351 from ben-clayton/license-checker-cfg

Update license-checker.cfg with simplified rules

4 years agoUpdate license-checker.cfg with simplified rules
Ben Clayton [Fri, 17 Jul 2020 19:06:31 +0000 (20:06 +0100)]
Update license-checker.cfg with simplified rules

`license-checker` has been updated to support `**` wildcards simplifying the ruless, and multiple license configs.

Add a new config for the bison generated files to ensure their licenses don't change.

4 years agoMerge pull request #2350 from ben-clayton/update-license-checker-rules
John Kessenich [Fri, 17 Jul 2020 13:33:14 +0000 (20:33 +0700)]
Merge pull request #2350 from ben-clayton/update-license-checker-rules

Add new rules for update of license-checker

4 years agoAdd new rules for update of license-checker
Ben Clayton [Fri, 17 Jul 2020 10:58:54 +0000 (11:58 +0100)]
Add new rules for update of license-checker

`license-checker` will be updated to support `**` based wildcards. As part of this, `license-checker` will now traverse into subdirectories that would previously be excluded when the parent directory is excluded.

This change adds new rules that work with both the old version and new, to ease migration.

4 years agoMerge pull request #2349 from KhronosGroup/return-precision
John Kessenich [Thu, 16 Jul 2020 07:36:51 +0000 (14:36 +0700)]
Merge pull request #2349 from KhronosGroup/return-precision

GLSL/SPV: Propagaet precision qualifier from function to return value.

4 years agoGLSL/SPV: Propagaet precision qualifier from function to return value.
John Kessenich [Thu, 16 Jul 2020 05:38:47 +0000 (23:38 -0600)]
GLSL/SPV: Propagaet precision qualifier from function to return value.

When a return value's type has no precision qualification (e.g., the return
expression is formed from a constructor), and the formal function return type
has a precision qualification, back propagate that from the return type to the
type of the return value's expression.

4 years agoMerge pull request #2347 from ben-clayton/runtests
John Kessenich [Thu, 16 Jul 2020 02:45:50 +0000 (09:45 +0700)]
Merge pull request #2347 from ben-clayton/runtests

runtests: Check error codes, set LD_LIBRARY_PATH

4 years agoruntests: Check error codes, set LD_LIBRARY_PATH
Ben Clayton [Tue, 14 Jul 2020 11:56:26 +0000 (12:56 +0100)]
runtests: Check error codes, set LD_LIBRARY_PATH

`glslangValidator` will only return [the codes 0..6](https://github.com/KhronosGroup/glslang/blob/b481744aea1ecf52ee4591afaa0f5e270b9d1636/StandAlone/StandAlone.cpp#L117-L125). Fail the test if anything else is returned (like due to the exe crashing).

Also set `LD_LIBRARY_PATH` to contain the `lib` directory before calling glslang.

4 years agoMerge pull request #2335 from ben-clayton/kokoro-bazel-test-output
John Kessenich [Tue, 14 Jul 2020 09:11:43 +0000 (16:11 +0700)]
Merge pull request #2335 from ben-clayton/kokoro-bazel-test-output

Kokoro: Print test output to stdout

4 years agoMerge pull request #2344 from ben-clayton/build_info-x
John Kessenich [Tue, 14 Jul 2020 09:11:04 +0000 (16:11 +0700)]
Merge pull request #2344 from ben-clayton/build_info-x

Give build_info.py the executable bit

4 years agoGive build_info.py the executable bit
Ben Clayton [Tue, 14 Jul 2020 09:09:51 +0000 (10:09 +0100)]
Give build_info.py the executable bit

4 years agoMerge pull request #2343 from KhronosGroup/fix-non-determinism
John Kessenich [Tue, 14 Jul 2020 08:13:22 +0000 (15:13 +0700)]
Merge pull request #2343 from KhronosGroup/fix-non-determinism

Fix recently found non-determinism with gl_WorldToObject3x4EXT.

4 years agoFix recently found non-determinism with gl_WorldToObject3x4EXT.
John Kessenich [Tue, 14 Jul 2020 07:44:35 +0000 (01:44 -0600)]
Fix recently found non-determinism with gl_WorldToObject3x4EXT.

4 years agoMerge pull request #2339 from ben-clayton/cmake-project
John Kessenich [Tue, 14 Jul 2020 07:12:15 +0000 (14:12 +0700)]
Merge pull request #2339 from ben-clayton/cmake-project

CMake: Move project() to top of CMakeLists.txt

4 years agoMerge pull request #2341 from ben-clayton/bison-license
John Kessenich [Tue, 14 Jul 2020 07:07:21 +0000 (14:07 +0700)]
Merge pull request #2341 from ben-clayton/bison-license

Add bison license to LICENSE.txt

4 years agoNon-determinism: Remove test file that seems to trigger non-determinism.
John Kessenich [Tue, 14 Jul 2020 06:32:25 +0000 (00:32 -0600)]
Non-determinism: Remove test file that seems to trigger non-determinism.

This problem needs to be fixed, but in parallel, we need to see master
and any other changes to it passing all tests.

The removed test is ray-tracing centric, and may indicate non-determinism
in recent code added for that functionality.

4 years agoAdd bison license to LICENSE.txt
Ben Clayton [Mon, 13 Jul 2020 19:32:09 +0000 (20:32 +0100)]
Add bison license to LICENSE.txt

4 years agoCMake: Move project() to top of CMakeLists.txt
Ben Clayton [Mon, 13 Jul 2020 18:14:02 +0000 (19:14 +0100)]
CMake: Move project() to top of CMakeLists.txt

Also remove `NOTICE` from message() about PCHs - it seems to print this in the actual message, contrary to the documentation where it is used as a severity.

4 years agoKokoro: Print test output to stdout
Ben Clayton [Mon, 13 Jul 2020 09:12:06 +0000 (10:12 +0100)]
Kokoro: Print test output to stdout

4 years agoMerge pull request #2337 from KhronosGroup/revert-ANGLE
John Kessenich [Mon, 13 Jul 2020 10:34:05 +0000 (17:34 +0700)]
Merge pull request #2337 from KhronosGroup/revert-ANGLE

Revert "Merge pull request #2330 from ShabbyX/optimize_for_angle"

4 years agoFix comma in licence checker.
John Kessenich [Mon, 13 Jul 2020 09:52:02 +0000 (03:52 -0600)]
Fix comma in licence checker.

4 years agoRevert "Merge pull request #2330 from ShabbyX/optimize_for_angle"
John Kessenich [Mon, 13 Jul 2020 09:39:08 +0000 (03:39 -0600)]
Revert "Merge pull request #2330 from ShabbyX/optimize_for_angle"

This reverts commit 1ee5d1c0bb683daea245e8329fd619940a35a5b4, reversing
changes made to 906d48a7e828701e25487c9cf34418ded831c814.

4 years agoFix a couple lines that were too long, to retrigger bots.
John Kessenich [Mon, 13 Jul 2020 08:52:11 +0000 (02:52 -0600)]
Fix a couple lines that were too long, to retrigger bots.

4 years agoFix #2329: don't use invalid initializers.
John Kessenich [Mon, 13 Jul 2020 06:35:58 +0000 (00:35 -0600)]
Fix #2329: don't use invalid initializers.

4 years agoMerge pull request #2334 from ben-clayton/license-checker-cfg
John Kessenich [Sun, 12 Jul 2020 15:43:35 +0000 (22:43 +0700)]
Merge pull request #2334 from ben-clayton/license-checker-cfg

Add missing comma from license-checker.cfg

4 years agoAdd missing comma from license-checker.cfg
Ben Clayton [Sun, 12 Jul 2020 12:07:39 +0000 (13:07 +0100)]
Add missing comma from license-checker.cfg

Fixes license checker presubmit.

4 years agoMerge pull request #2333 from 1480c1/mingw-w64
John Kessenich [Sun, 12 Jul 2020 10:05:59 +0000 (17:05 +0700)]
Merge pull request #2333 from 1480c1/mingw-w64

Common: include standard headers before doing any defines

4 years agoCommon: include standard headers before doing any defines
Christopher Degawa [Sun, 12 Jul 2020 00:02:20 +0000 (00:02 +0000)]
Common: include standard headers before doing any defines

currently, due to

```c++
\#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || defined MINGW_HAS_SECURE_API
    #include <basetsd.h>
    #ifndef snprintf
    #define snprintf sprintf_s
    #endif
    #define safe_vsprintf(buf,max,format,args) vsnprintf_s((buf), (max), (max), (format), (args))
```

defining `snprintf` to `sprintf_s` essentially unconditionally, this will break the
stdio.h+cstdio system header for mingw-w64 g++ in msys2 with shaderc
https://github.com/google/shaderc/issues/1065

an alternative change would be
https://raw.githubusercontent.com/shinchiro/mpv-winbuild-cmake/master/packages/glslang-0001-fix-gcc-10.1-error.patch
in which the `|| defined MINGW_HAS_SECURE_API` part is removed

Signed-off-by: Christopher Degawa <ccom@randomderp.com>
4 years agoMerge pull request #2330 from ShabbyX/optimize_for_angle
John Kessenich [Sat, 11 Jul 2020 17:32:52 +0000 (00:32 +0700)]
Merge pull request #2330 from ShabbyX/optimize_for_angle

Optimize for angle

4 years agoMerge pull request #2332 from ben-clayton/fix-cmake-include
John Kessenich [Fri, 10 Jul 2020 14:54:37 +0000 (21:54 +0700)]
Merge pull request #2332 from ben-clayton/fix-cmake-include

Fix CMake rules when nesting CMake projects

4 years agoFix CMake rules when nesting CMake projects
Ben Clayton [Fri, 10 Jul 2020 13:39:39 +0000 (14:39 +0100)]
Fix CMake rules when nesting CMake projects

`${CMAKE_SOURCE_DIR}` points to the outer project root, not the current directory.

Fixes building of `glslang` when included into another CMake project.

4 years agoMerge pull request #2331 from ben-clayton/fix-chromium
John Kessenich [Fri, 10 Jul 2020 13:00:11 +0000 (07:00 -0600)]
Merge pull request #2331 from ben-clayton/fix-chromium

Attempt to fix chromium builds

4 years agoAttempt to fix chromium builds
Ben Clayton [Fri, 10 Jul 2020 12:46:25 +0000 (13:46 +0100)]
Attempt to fix chromium builds

It would seem that `glslang_sources` has a private dependency on `glslang_build_info`, so `glslang_validator` cannot transitively `#include` the generated `glslang/build_info.h` header.

Add `glslang_build_info` as a direct dependency to `glslang_validator`.
Also remove the duplicate dependency on `glslang_build_info` in `glslang_sources_common`

Note: This is a speculative fix as I can build Chromium fine without these changes.
Not sure what's different between these configs.

4 years agoMerge pull request #2277 from ben-clayton/build-info
John Kessenich [Fri, 10 Jul 2020 11:43:10 +0000 (05:43 -0600)]
Merge pull request #2277 from ben-clayton/build-info

Generate build information from CHANGES.md

4 years agoGenerate build information from CHANGES.md
Ben Clayton [Wed, 17 Jun 2020 10:17:19 +0000 (11:17 +0100)]
Generate build information from CHANGES.md

This PR significantly reworks the way glslang is versioned.

Instead of committing changes to the `GLSLANG_MINOR_VERSION` define in
`glslang/Public/ShaderLang.h`, and using `make-revision` to generate
`GLSLANG_PATCH_LEVEL` in `glslang/Include/revision.h`, all version
information is now derived from the new `CHANGES.md` file.

`CHANGES.md` acts as the single source of truth for glslang version
information, along with a convenient place to put all release notes for
each notable change made.

`CHANGES.md` is parsed using the new `build_info.py` python script.
This script can read basic template files to produce new source files,
which it does to read the new `build_info.h.tmpl` to generate (at build
time) a glslang private header at
`<build-dir>/include/glslang/build_info.h`.
I've written generators for each of the CMake, Bazel, gn, and
`Android.mk` build scripts.

The new version code conforms to the Semantic Versioning 2.0 spec.

This new version is also used by the CMake rules to produce versioned
shared objects, including a major-versioned SONAME.

New APIs:
---------

* `glslang::GetVersion()` returns a `Version` struct with the version
  major, minor, patch and flavor.

Breaking API changes:
---------------------

* The public defines `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL`
  have been entirely removed.
* `glslang/Public/ShaderLang.h` and `glslang/Include/revision.h` have
  been deleted.
* Instead, `<build-dir>/include/glslang/build_info.h` is created in
  the build directory, and `<build-dir>/include` is a CMake `PUBLIC`
  (dependee-inherited) include directory for the glslang targets.
* `<build-dir>/include/glslang/build_info.h` contains the following
   new #defines:
   `GLSLANG_VERSION_MAJOR`, `GLSLANG_VERSION_MINOR`,
   `GLSLANG_VERSION_PATCH`, `GLSLANG_VERSION_FLAVOR`,
   `GLSLANG_VERSION_GREATER_THAN(major, minor, patch)`,
   `GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch)`,
   `GLSLANG_VERSION_LESS_THAN(major, minor, patch)`,
   `GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch)`
*  The CMake install output directory contains a copy of
   `build_info.h` at: `include/glslang/build_info.h`
*  Python3 is now always required to build glslang (likely always
   required for transitive dependency builds).

4 years agoMerge pull request #2327 from ben-clayton/fix-pch
John Kessenich [Thu, 9 Jul 2020 06:39:31 +0000 (00:39 -0600)]
Merge pull request #2327 from ben-clayton/fix-pch

Use CMake's builtin functionality for pre-compiled headers

4 years agoCustomize glslang.y to GLSLANG_ANGLE
Shahbaz Youssefi [Fri, 3 Jul 2020 19:42:53 +0000 (15:42 -0400)]
Customize glslang.y to GLSLANG_ANGLE

glslang.y is specialized to remove what is not supported or won't be
supported by ANGLE.

This change shaves about 125KB off of ANGLE's binary size with minor
improvement to the cost of SetupBuiltinSymbolTable.

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
4 years agoUse GLSLANG_ANGLE to strip features to what ANGLE requires
Shahbaz Youssefi [Fri, 3 Jul 2020 19:42:53 +0000 (15:42 -0400)]
Use GLSLANG_ANGLE to strip features to what ANGLE requires

This change strips a few features similar to GLSLANG_WEB but doesn't
remove every detail like the latter.  It also hardcodes profile/version
to core/450.

In particular, TBuiltIns::initialize is specialized to remove most of
what is not supported or won't be supported by ANGLE.  The result of
this function is parsed with TParseContext::parseShaderStrings which is
a performance bottleneck.

This change shaves about 300KB off of ANGLE's binary size and reduces
the cost of SetupBuiltinSymbolTable to nearly a sixth.

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
4 years agoMerge pull request #2328 from zoddicus/fixBUILDgn
John Kessenich [Tue, 7 Jul 2020 17:01:30 +0000 (11:01 -0600)]
Merge pull request #2328 from zoddicus/fixBUILDgn

Make sure glslang_angle has a definition in BUILD.gn

4 years agoMake sure glslang_angle has a definition in BUILD.gn
Ryan Harrison [Tue, 7 Jul 2020 15:45:02 +0000 (11:45 -0400)]
Make sure glslang_angle has a definition in BUILD.gn

Set the value to false if the environment doesn't declare this variable.

4 years agoUse CMake's builtin functionality for PCHs
Ben Clayton [Tue, 7 Jul 2020 12:24:04 +0000 (13:24 +0100)]
Use CMake's builtin functionality for PCHs

`glslang_pch()` did manual mangling of the compiler flags to enable pre-compiled headers.
I couldn't get this approach to work with the `MachineIndependent` subdirectory, but fortunately CMake has added first-class support for precompiled headers in 3.16, which does work with subdirectories.

Moved `glslang_pch()` to the other global function declarations.

`glslang_pch()` is a no-op when using CMake earlier than `3.16`.

CMake's PCH implementation does not need the `pch.cpp` files, so just remove them.

4 years agoMerge pull request #2326 from ben-clayton/always_pic
John Kessenich [Tue, 7 Jul 2020 15:12:12 +0000 (09:12 -0600)]
Merge pull request #2326 from ben-clayton/always_pic

Remove GLSLANG_BUILD_PIC flag

4 years agoMerge pull request #2324 from ben-clayton/gitignore
John Kessenich [Tue, 7 Jul 2020 10:56:39 +0000 (04:56 -0600)]
Merge pull request #2324 from ben-clayton/gitignore

Add new rules to .gitignore

4 years agoRemove GLSLANG_BUILD_PIC flag
Ben Clayton [Tue, 7 Jul 2020 10:49:40 +0000 (11:49 +0100)]
Remove GLSLANG_BUILD_PIC flag

On closer inspection, it appears that nearly all the targets use the `POSITION_INDEPENDENT_CODE` target option anyway.
Simplify all this away by always being PIC.

4 years agoAdd new static targets to VS solution folders
Ben Clayton [Tue, 7 Jul 2020 10:22:33 +0000 (11:22 +0100)]
Add new static targets to VS solution folders

`GenericCodeGen` and `MachineIndependent` were missing from the generated visual studio solutions. Add these.

4 years agoAdd new rules to .gitignore
Ben Clayton [Tue, 7 Jul 2020 10:15:24 +0000 (11:15 +0100)]
Add new rules to .gitignore

`.vscode/` ignores Visual Studio Code user config files
`bazel-*` ignores bazel build system symlinks.
`out/` ignores the default output directory for Visual Studio generated files.

4 years agoMerge pull request #2322 from ShabbyX/fix-dawn-tests
John Kessenich [Mon, 6 Jul 2020 12:07:58 +0000 (06:07 -0600)]
Merge pull request #2322 from ShabbyX/fix-dawn-tests

gn: Fix dawn tests in Chromium

4 years agoMerge pull request #2314 from marcinslusarz/quiet
John Kessenich [Mon, 6 Jul 2020 11:36:34 +0000 (05:36 -0600)]
Merge pull request #2314 from marcinslusarz/quiet

Add --quiet option.

4 years agoAdd --quiet option.
Marcin Ślusarz [Fri, 3 Jul 2020 12:55:29 +0000 (14:55 +0200)]
Add --quiet option.

Being quiet should have been the default, but I guess it's too late
now to change it.

4 years agogn: Fix dawn tests in Chromium
Shahbaz Youssefi [Sun, 5 Jul 2020 20:48:34 +0000 (16:48 -0400)]
gn: Fix dawn tests in Chromium

Dawn tests use shaderc, which assumes glslang has HLSL support.  This
change makes HLSL support also follow template arguments, and changes
the target names such that glslang_sources will remain the "has all
features" target and the new glslang_lib_sources would be what ANGLE
would use.

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
4 years agoMerge pull request #2320 from ShabbyX/fix-gn-check
John Kessenich [Sun, 5 Jul 2020 16:12:27 +0000 (10:12 -0600)]
Merge pull request #2320 from ShabbyX/fix-gn-check

gn: Fix `gn gen --check` by adding missing dependency

4 years agogn: Fix `gn gen --check` by adding missing dependency
Shahbaz Youssefi [Sun, 5 Jul 2020 10:26:04 +0000 (06:26 -0400)]
gn: Fix `gn gen --check` by adding missing dependency

Signed-off-by: Shahbaz Youssefi <ShabbyX@gmail.com>
4 years agoMerge pull request #2317 from ShabbyX/glslang_angle
John Kessenich [Sat, 4 Jul 2020 14:40:19 +0000 (08:40 -0600)]
Merge pull request #2317 from ShabbyX/glslang_angle

gn: Optionally disable optimizations and HLSL

4 years agoMerge pull request #2319 from ben-clayton/build-pic
John Kessenich [Sat, 4 Jul 2020 04:37:25 +0000 (22:37 -0600)]
Merge pull request #2319 from ben-clayton/build-pic

Add GLSLANG_BUILD_PIC CMake flag

4 years agoMerge pull request #2316 from ben-clayton/fix-2315
John Kessenich [Sat, 4 Jul 2020 03:19:42 +0000 (21:19 -0600)]
Merge pull request #2316 from ben-clayton/fix-2315

Don't use add_link_options() on old CMake versions