John Kessenich [Wed, 18 Sep 2019 06:03:18 +0000 (00:03 -0600)]
HLSL: Fix #1903 Catch 0-argument case to constructors.
John Kessenich [Wed, 18 Sep 2019 05:18:20 +0000 (23:18 -0600)]
Merge pull request #1902 from jeffbolznv/extended_types
Add GL_EXT_shader_subgroup_extended_types support
Jeff Bolz [Sun, 8 Sep 2019 13:49:18 +0000 (08:49 -0500)]
Add GL_EXT_shader_subgroup_extended_types support
John Kessenich [Mon, 16 Sep 2019 15:33:59 +0000 (09:33 -0600)]
Merge pull request #1899 from KhronosGroup/SPIR-V_1.5
Branch to support SPIR-V 1.5 changes
John Kessenich [Wed, 28 Aug 2019 06:01:54 +0000 (00:01 -0600)]
GLSL: Only require constant for subgroupBroadcast when SPV < 1.5.
John Kessenich [Mon, 19 Aug 2019 05:58:08 +0000 (23:58 -0600)]
SPV: Support SPIR-V 1.5; five extensions no longer need OpExtension.
The generalization to addIncorporatedExtension() also fixed a 1.3
corner case with SPV_KHR_16bit_storage.
John Kessenich [Mon, 16 Sep 2019 12:35:12 +0000 (06:35 -0600)]
Merge pull request #1894 from ShchchowAMD/master
Add flags for local size values ( compute shader )
Chow [Mon, 9 Sep 2019 05:24:24 +0000 (13:24 +0800)]
Add flags for local size values ( compute shader )
Purpose :
According to GLSL SPEC 4.6 ( 4.4.1.4 Compute Shader Inputs), for compute shader input qualifiers, we should declare such qualifiers with same values in the same shader (local_size_x, y and z).
"If such a layout qualifier is declared more than once in the same shader, all those declarations must set the same set of local work-group sizes and set them to the same values; otherwise a compile-time error results."
Why this fix:
If we manually set "local_size_x = 1" and directly following a declaration like "local_size_x = 2", this would not be detected. That is because currently we treat all the '1' as default value and could not restrictly detect whether those are default values.
Test case:
......
layout(local_size_x=1) in;
layout(local_size_x=2) in;
......
So I add test cases for this fix:
1. set local_size_y = 1 => success
2. set local_size_y = 2 => error
3. set local_size_y = 1 => success
John Kessenich [Fri, 13 Sep 2019 15:32:00 +0000 (09:32 -0600)]
SPV 1.5: Switch to the 1.5 header, for SPIR-V 1.5.
John Kessenich [Thu, 12 Sep 2019 14:40:57 +0000 (08:40 -0600)]
Merge pull request #1897 from dj2/unused
Comment out unused params; Fix type warning.
John Kessenich [Wed, 11 Sep 2019 18:08:08 +0000 (12:08 -0600)]
Merge pull request #1895 from amdrexu/bugfix
Fix incorrect function prototypes of 64-bit findLSB/findMSB
Dan Sinclair [Wed, 11 Sep 2019 12:58:48 +0000 (08:58 -0400)]
Comment out params instead of removing
Dan Sinclair [Tue, 10 Sep 2019 19:39:22 +0000 (15:39 -0400)]
Remove unused params
Rex Xu [Mon, 9 Sep 2019 14:53:02 +0000 (22:53 +0800)]
Fix incorrect function prototypes of 64-bit findLSB/findMSB
According to the 32-bit counterparts, their forms should be
genI64Type findLSB(genI64Type value)
genI64Type findLSB(genU64Type value)
genI64Type findMSB(genI64Type value)
genI64Type findMSB(genU64Type value)
John Kessenich [Thu, 5 Sep 2019 08:26:39 +0000 (02:26 -0600)]
Fix #1879: Check for valid variable before checking for unsized arrays.
The order of error checking was not quite being correct (maybe there is no correct
ordering, when many checks must be done and they affect each other).
So, check for block-name reuse twice.
John Kessenich [Thu, 5 Sep 2019 02:49:12 +0000 (20:49 -0600)]
Merge pull request #1892 from greg-lunarg/kg106
Update spirv-tools and spriv-headers known good.
Greg Fischer [Wed, 4 Sep 2019 20:15:57 +0000 (14:15 -0600)]
Update spirv-tools and spriv-headers known good.
John Kessenich [Tue, 3 Sep 2019 09:02:13 +0000 (03:02 -0600)]
Merge pull request #1889 from Roy-AMD/code-refine
Code refine
Roy [Mon, 2 Sep 2019 09:07:39 +0000 (17:07 +0800)]
code refine
Reduce the number of cycles.
Roy.li [Mon, 2 Sep 2019 03:58:14 +0000 (11:58 +0800)]
Merge pull request #6 from Roy-AMD/sync
Sync code
Roy.li [Mon, 2 Sep 2019 03:56:45 +0000 (11:56 +0800)]
Merge pull request #5 from KhronosGroup/master
Sync code from KhronosGroup/glslang master
John Kessenich [Fri, 30 Aug 2019 15:53:35 +0000 (09:53 -0600)]
Placeholder fix for part of #1870.
Also fixes, in practice, https://github.com/KhronosGroup/GLSL/issues/83.
When the specification language is correctly created, glslang can be
revisited for correctness. In the meantime, this seems like the best
"bug" to have relative to the specification.
Memory qualifiers are only relevant to parameters when they apply
to what the argument points to, as otherwise the argument is copied.
This leaves the fix from #1870 in place, and then more correctly
ignores memory qualifiers when something will be passed by copy.
John Kessenich [Fri, 30 Aug 2019 15:51:06 +0000 (09:51 -0600)]
Non-functional: Make whitespace/braces consistent for a recent commit.
John Kessenich [Thu, 29 Aug 2019 04:44:15 +0000 (22:44 -0600)]
Merge pull request #1885 from zoddicus/fixUnInitializedVariableWarnings
Initialize variable to avoid uninitialized variable warnings in Clang
Ryan Harrison [Wed, 28 Aug 2019 17:15:15 +0000 (13:15 -0400)]
Change to initializing the variable
Ryan Harrison [Wed, 28 Aug 2019 15:25:12 +0000 (11:25 -0400)]
Return nullptr after assert to avoid uninitialized variables
In the current version of the code on non-debug builds these cases
will fallthrough, since assert is a no-op, and eventually make a call
passing in |op| which hasn't been initialized. clang is currently
throwing a warning about this behaviour when integrating downstream.
This patch changes the behaviour, so that in any branch that has an
assert now has a return nullptr, to indicate failure after it and
avoid the uninitialized variable usage.
John Kessenich [Wed, 28 Aug 2019 10:10:00 +0000 (04:10 -0600)]
Merge pull request #1876 from jeffbolznv/imma
GL_NV_integer_cooperative_matrix support
John Kessenich [Wed, 28 Aug 2019 08:51:38 +0000 (02:51 -0600)]
ESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V.
John Kessenich [Wed, 28 Aug 2019 08:25:26 +0000 (02:25 -0600)]
Documentation: Provide more detail in setting up the environment.
John Kessenich [Tue, 27 Aug 2019 13:37:09 +0000 (07:37 -0600)]
Merge pull request #1883 from Kangz/fix_gn
BUILD.gn: Add missing HLSL files.
Corentin Wallez [Tue, 27 Aug 2019 13:24:31 +0000 (15:24 +0200)]
BUILD.gn: Add missing HLSL files.
John Kessenich [Tue, 27 Aug 2019 03:36:09 +0000 (21:36 -0600)]
Merge pull request #1881 from baldurk/buffer-array-bind-reflection-fix
Dereference any array type before expanding root-level SSBO members
John Kessenich [Mon, 26 Aug 2019 13:47:30 +0000 (07:47 -0600)]
Merge pull request #1882 from Kangz/fix-chrome
GN build (for Chromium): enable HLSL in dependents.
Corentin Wallez [Mon, 26 Aug 2019 12:13:54 +0000 (14:13 +0200)]
GN build (for Chromium): enable HLSL in dependents.
The previous fix for this only enabled HLSL internally in glslang which
means that dependent using HLSL, for example shaderc, failed
compilation.
baldurk [Mon, 26 Aug 2019 11:41:53 +0000 (12:41 +0100)]
Dereference any array type before expanding root-level SSBO members
If we don't do this then we get reflection output like so:
ArrayedBind[0].a.a: offset 0, type 1406, size 1, index 4, binding -1, stages 0
ArrayedBind[0].a.b: offset 4, type 1406, size 1, index 4, binding -1, stages 0
ArrayedBind[0].b.a: offset 4, type 1406, size 1, index 4, binding -1, stages 0
ArrayedBind[0].b.b: offset 8, type 1406, size 1, index 4, binding -1, stages 0
ArrayedBind[0].b: offset 4, type 1406, size 1, index 4, binding -1, stages 1
When the outer reflection loop that calls blowUpActiveAggregate incorrectly iterates over the struct members.
John Kessenich [Mon, 26 Aug 2019 08:03:44 +0000 (02:03 -0600)]
Merge pull request #1878 from dneto0/chrome-fix
GN build (for Chromium): enable HLSL
David Neto [Fri, 23 Aug 2019 18:34:29 +0000 (14:34 -0400)]
GN build (for Chromium): enable HLSL
Jeff Bolz [Fri, 23 Aug 2019 01:28:00 +0000 (20:28 -0500)]
GL_NV_integer_cooperative_matrix support
John Kessenich [Thu, 22 Aug 2019 17:20:40 +0000 (11:20 -0600)]
Bump revision.
John Kessenich [Thu, 22 Aug 2019 17:20:17 +0000 (11:20 -0600)]
Merge pull request #1874 from KhronosGroup/inherit-memory-qualifiers
GLSL: Inherit memory qualifiers, both declaratively and in execution.
John Kessenich [Thu, 22 Aug 2019 12:58:26 +0000 (06:58 -0600)]
GLSL: Inherit memory qualifiers, both declaratively and in execution.
Fixes #1870, probably others.
John Kessenich [Thu, 22 Aug 2019 14:52:15 +0000 (08:52 -0600)]
Merge pull request #1875 from jonahryandavis/extra-tokens
Fix conformance with -Wextra-tokens
Jonah Ryan-Davis [Thu, 22 Aug 2019 14:36:12 +0000 (10:36 -0400)]
Fix conformance with -Wextra-tokens
John Kessenich [Wed, 21 Aug 2019 17:08:27 +0000 (11:08 -0600)]
Bump version.
John Kessenich [Wed, 21 Aug 2019 17:07:01 +0000 (11:07 -0600)]
Merge pull request #1855 from KhronosGroup/web
Web: Create a very small-footprint glslang for web use.
John Kessenich [Wed, 21 Aug 2019 09:38:02 +0000 (03:38 -0600)]
web: Fix accidental additon of refract() prototypes and update README.
John Kessenich [Tue, 13 Aug 2019 14:00:30 +0000 (08:00 -0600)]
Web: Turn off includes, independent preprocessing path, fine tune all.
Saved about 21K, size down to 380K of MSVC x86 code.
Fixed one bug that needs to be looked at on the master branch:
The test for needing a Vulkan binding has a bug in it, "!layoutAttachment"
which does not mean "no layoutAttachment", because that is non-zero.
This is why some test and test results changed.
John Kessenich [Sun, 11 Aug 2019 13:41:45 +0000 (07:41 -0600)]
Web: Make switched methods all be non-virtual, more web-dependent code,
added a few more HLSL flag tests. This was mostly focused on the SPV generator.
Saves about 17K.
John Kessenich [Sat, 10 Aug 2019 16:41:15 +0000 (10:41 -0600)]
Web: Optional error management and error tightening.
Saves about 6.5K
John Kessenich [Fri, 9 Aug 2019 09:49:15 +0000 (03:49 -0600)]
Web: Use isEsProfile() instead of run-time testing; remove more atomics
Saves 2.5K, and design is better.
John Kessenich [Fri, 9 Aug 2019 05:29:20 +0000 (23:29 -0600)]
Web: Remove unused stage functionality, SPIR-V logger, and hex_utils
Saves another 20K.
John Kessenich [Thu, 8 Aug 2019 16:35:51 +0000 (10:35 -0600)]
Web: Remove unnecessary GLSL numeric types, and some collateral.
This saves another 40K of x86 binary, which is about 13% of the target size.
John Kessenich [Thu, 8 Aug 2019 07:15:24 +0000 (01:15 -0600)]
Web: Tighten up sampling code and interfaces.
Saves about 9K.
John Kessenich [Wed, 7 Aug 2019 07:52:20 +0000 (01:52 -0600)]
Web: Complete the removal of vendor-specific #ifdef's, including CMake.
John Kessenich [Wed, 7 Aug 2019 05:16:35 +0000 (23:16 -0600)]
Web: Prune grammar and lexor down to needed subset.
About 60K smaller (20% the target size is these units of 300K).
Over 300 fewer #ifdef.
This adds a new glslang.m4 file that needs to be processed by m4 to get
the glslang.y file needed by bison. See comment in glslang.m4 for more
detail.
This updates the updateGrammar script to do the .m4 -> .y processing,
to conditionally exclude grammar not needed for the web build.
John Kessenich [Tue, 6 Aug 2019 13:00:58 +0000 (07:00 -0600)]
Web: Generalize _EXTENSIONS* in SPIR-V back-end.
About 50 fewer #ifdefs.
About 14K smaller.
Note, the base size is ill-defined due to optimizer settings (size vs. performance),
compression, and target architecture. Some recent %'s are accidentally reported as
3X the real savings. Early %'s were accurate. What matters though is that each
step got worthwhile gains, and what the final size ends up being.
John Kessenich [Tue, 6 Aug 2019 08:20:45 +0000 (02:20 -0600)]
Web: Turn off bracket-style attributes, reflection, and IO mapping.
John Kessenich [Thu, 1 Aug 2019 09:28:08 +0000 (03:28 -0600)]
Web: Remove/rationalize a set of *_EXTENSIONS, using GLSLANG_WEB.
Focus was on the front end (not SPIR-V), minus the grammar.
Reduces #ifdef count by around 320 and makes the web build 270K smaller,
which is about 90% the target size.
The grammar and scanner will be another step, as will the SPIR-V backend.
This makes heavy use of methods #ifdef'd to return false as a global way
of turning off code, relying on C++ DCE to do the rest.
John Kessenich [Wed, 31 Jul 2019 09:48:10 +0000 (03:48 -0600)]
Web: First pass of tabling the built-in function declarations.
Doing this much saved about 11.5K, including adding all the infrastructure.
John Kessenich [Sun, 28 Jul 2019 08:12:10 +0000 (02:12 -0600)]
Web: Selectively remove a few key features, using #ifndef GLSLANG_WEB
Save about 100K.
N.B.: This is done by eliminating a function call, at a high level,
not by #ifdef'ing a bunch of code.
Also, removed no longer needed *_EXTENSION #ifdef in the code not
needed by GLSLANG_WEB.
John Kessenich [Sat, 27 Jul 2019 14:18:03 +0000 (08:18 -0600)]
Web: Change a bunch of HLSL methods from dynamic to compile-time known.
This saves about 7K.
By changing just a few methods to be compile-time known, a bunch of
scattered code becomes DCE.
John Kessenich [Sat, 27 Jul 2019 11:22:30 +0000 (05:22 -0600)]
Web: Remove a few additional HLSL constructs with ENABLE_HLSL.
Saves about 3K.
John Kessenich [Fri, 26 Jul 2019 14:02:40 +0000 (08:02 -0600)]
Web: Add sanity check test suite for smaller-footprint builds.
For the smallest builds, google tests will not be present, in
addition to a large number of tests not being capable of running.
John Kessenich [Wed, 21 Aug 2019 05:06:10 +0000 (23:06 -0600)]
Merge pull request #1872 from kainino0x/js-interface
make glslang.js easy to use and work on node, and related changes
John Kessenich [Wed, 21 Aug 2019 04:42:40 +0000 (22:42 -0600)]
Bump revision.
Kai Ninomiya [Wed, 14 Aug 2019 21:33:11 +0000 (14:33 -0700)]
convert_glsl_to_spirv: fail early, reduce copies, remove input buffer allocation
Kai Ninomiya [Fri, 26 Jul 2019 04:34:15 +0000 (21:34 -0700)]
make glslang.js easy to use
Kai Ninomiya [Thu, 15 Aug 2019 00:30:14 +0000 (17:30 -0700)]
enable build for node
John Kessenich [Thu, 15 Aug 2019 03:35:57 +0000 (21:35 -0600)]
Set theme jekyll-theme-merlot
John Kessenich [Sat, 10 Aug 2019 11:24:48 +0000 (05:24 -0600)]
Merge pull request #1867 from zoddicus/addWebBuild
Add WASM build target for Web version of glslang
Ryan Harrison [Fri, 9 Aug 2019 15:19:07 +0000 (11:19 -0400)]
Make non-emscripten flags platform agnostic.
Ryan Harrison [Fri, 9 Aug 2019 14:56:51 +0000 (10:56 -0400)]
Converted ENABLE_HLSL to a dependent option, so it can be always disabled in web builds
Ryan Harrison [Fri, 9 Aug 2019 14:27:45 +0000 (10:27 -0400)]
Move build instructions to README.md
Ryan Harrison [Thu, 8 Aug 2019 17:50:13 +0000 (13:50 -0400)]
Add WASM build target for Web version of glslang
This adds build rules to support generating a WASM binary to be used
on the web. The API exposed to web applications is definated in the
new glslang.js.cpp file.
John Kessenich [Fri, 2 Aug 2019 12:34:15 +0000 (06:34 -0600)]
Bump revision and give the bots another chance to work.
John Kessenich [Fri, 2 Aug 2019 07:37:37 +0000 (01:37 -0600)]
Merge pull request #1860 from zoddicus/fixShaderCRoll
Add in header for uint32_t definition
Ryan Harrison [Thu, 1 Aug 2019 19:07:18 +0000 (15:07 -0400)]
Add in header for uint32_t definition
This is needed for stricter/newer MSVC builds of downstream users.
John Kessenich [Wed, 31 Jul 2019 02:29:09 +0000 (20:29 -0600)]
Merge pull request #1859 from zoddicus/fixNoRTTIForWindows
Convert no RTTI rule to be compiler specific
Ryan Harrison [Tue, 30 Jul 2019 15:25:19 +0000 (11:25 -0400)]
Convert no RTTI rule to be compiler specific
MSVC uses a different flag for disabling RTTI, so is currently
including RTTI information and throwing warnings.
John Kessenich [Mon, 29 Jul 2019 15:40:14 +0000 (09:40 -0600)]
Merge pull request #1857 from Roy-AMD/automapping-opengl-location
Automapping opengl location
John Kessenich [Mon, 29 Jul 2019 05:20:26 +0000 (23:20 -0600)]
Merge pull request #1813 from jeffbolznv/compositeconstruct
Handle SPIR-V type mismatch when constructing a composite
John Kessenich [Mon, 29 Jul 2019 03:33:30 +0000 (21:33 -0600)]
Merge pull request #1844 from alelenv/ast_print_fix
Fix bug in printing trailing comma when dumping AST for a structure.
Canon lee [Sun, 28 Jul 2019 12:53:08 +0000 (20:53 +0800)]
Fix Clang compiler warning.
Canon lee [Sun, 28 Jul 2019 12:13:23 +0000 (20:13 +0800)]
Fix location distribution not in order
Canon lee [Thu, 25 Jul 2019 16:47:16 +0000 (00:47 +0800)]
Merge branch 'sync' into automapping-opengl-location
Sync code from KhronosGroup/glslang.
John Kessenich [Thu, 25 Jul 2019 15:03:00 +0000 (09:03 -0600)]
Merge pull request #1853 from s-perron/per
Remove execute permission from LICENSE.txt
Steven Perron [Thu, 25 Jul 2019 13:57:06 +0000 (09:57 -0400)]
Remove execute permission from LICENSE.txt
Roy [Thu, 25 Jul 2019 02:52:10 +0000 (10:52 +0800)]
Fix memory init issue, to make sure the class members are init in order.
John Kessenich [Tue, 23 Jul 2019 10:10:36 +0000 (04:10 -0600)]
Revert "Merge pull request #1792 from Roy-AMD/automapping-opengl-location"
This reverts commit
50ada66c2717fb579979d54ac723475de2b1a5c4, reversing
changes made to
3464b6f519be1500faa60698918f13f4dd796dd0.
John Kessenich [Tue, 23 Jul 2019 08:18:18 +0000 (02:18 -0600)]
Merge pull request #1792 from Roy-AMD/automapping-opengl-location
Automapping opengl location
John Kessenich [Tue, 23 Jul 2019 05:55:54 +0000 (23:55 -0600)]
Merge pull request #1847 from alelenv/member_remap_fix
Fix missing decoration and bug in member remap
Ashwin Lele [Mon, 22 Jul 2019 19:36:38 +0000 (12:36 -0700)]
Fix bugs in missing Builtin decoration for some NV builtins for tessellation
control shaders.
Fix bug in member remapping.
John Kessenich [Mon, 22 Jul 2019 13:06:50 +0000 (07:06 -0600)]
SPV: Update to latest SPIR-V header.
John Kessenich [Mon, 22 Jul 2019 12:30:59 +0000 (06:30 -0600)]
Merge pull request #1845 from greg-lunarg/kg105
Update spirv-tools and spirv-headers known good.
Greg Fischer [Thu, 18 Jul 2019 19:53:09 +0000 (13:53 -0600)]
Update spirv-tools and spirv-headers known good.
Previous known-good contained regression per sperron at Google.
John Kessenich [Thu, 18 Jul 2019 01:15:47 +0000 (19:15 -0600)]
Build: shut up warning to add unnecessary parens.
Ashwin Lele [Wed, 17 Jul 2019 21:40:58 +0000 (14:40 -0700)]
Fix bug in printing trailing comma when dumping AST for a structure.
John Kessenich [Wed, 17 Jul 2019 09:13:44 +0000 (03:13 -0600)]
Merge pull request #1841 from jmacnak-nv/jmacnak-raytracing-descriptor-indexing-validation
Update known good SPIRV-Tools commit
Jason Macnak [Tue, 16 Jul 2019 16:39:54 +0000 (09:39 -0700)]
Update known good SPIRV-Tools commit
Update the known good SPIRV-Tools commit to eventually propagate the
commit allowing the ray tracing stages in pass instrumentation to the
vulkan validation layers (validation layers depends on glslang which
depends on spirv-tools).
John Kessenich [Tue, 16 Jul 2019 01:49:46 +0000 (19:49 -0600)]
Merge pull request #1837 from KhronosGroup/fix-NV_compute_shader_derivatives
ESSL: Fix #1823: Conditions for when derivatives are in compute shader.