platform/upstream/glslang.git
5 years agoFix #1924: Promote SPV_EXT_physical_storage_buffer to KHR when required.
John Kessenich [Fri, 11 Oct 2019 02:54:21 +0000 (20:54 -0600)]
Fix #1924: Promote SPV_EXT_physical_storage_buffer to KHR when required.

If the semantics that require the KHR form over the EXT form are seen
(OpBitcast between a vector and a pointer) promote the requested extension
from the EXT to the KHR.

5 years agoFix #1924: Emit SPV_EXT_physical_storage_buffer, not the KHR form.
John Kessenich [Thu, 10 Oct 2019 18:01:13 +0000 (12:01 -0600)]
Fix #1924: Emit SPV_EXT_physical_storage_buffer, not the KHR form.

The KHR form comes along as part of 1.5, and otherwise should require
another form of request to emit it.

5 years agoMerge pull request #1919 from dj2/install_spirv
John Kessenich [Mon, 7 Oct 2019 03:58:40 +0000 (21:58 -0600)]
Merge pull request #1919 from dj2/install_spirv

Move install directory for SPIRV/ folder.

5 years agosingle line
dan sinclair [Sun, 6 Oct 2019 14:00:37 +0000 (10:00 -0400)]
single line

5 years agoUpdate appveyor and travis files
dan sinclair [Fri, 4 Oct 2019 00:24:30 +0000 (20:24 -0400)]
Update appveyor and travis files

5 years agoMove install directory for SPIRV/ folder.
dan sinclair [Thu, 3 Oct 2019 23:35:44 +0000 (19:35 -0400)]
Move install directory for SPIRV/ folder.

Currently the SPIRV/ folder will get installed into the include
directory. This folder is part of GLSLang, so it makes more sense under
glslang/SPIRV.

Currently, GLSLang will install a SPIRV/ folder while spirv-headers will
install a spirv/ folder. This is confusing and will cause issues on a
case sensitive filesystem if both are installed at the same time.

5 years agoMerge pull request #1918 from KhronosGroup/format-attributes
John Kessenich [Thu, 3 Oct 2019 17:23:16 +0000 (11:23 -0600)]
Merge pull request #1918 from KhronosGroup/format-attributes

HLSL: Add attributes for image formats and nonreadable/nonwritable

5 years agoHLSL: Fix #1912: add attribute syntax for nonreadable/nonwritable
John Kessenich [Mon, 30 Sep 2019 00:02:19 +0000 (18:02 -0600)]
HLSL: Fix #1912: add attribute syntax for nonreadable/nonwritable

5 years agoHLSL: Fix #1912: add attribute syntax for overriding image formats.
John Kessenich [Fri, 27 Sep 2019 21:14:18 +0000 (15:14 -0600)]
HLSL: Fix #1912: add attribute syntax for overriding image formats.

5 years agoMerge pull request #1906 from ShchchowAMD/master
John Kessenich [Wed, 25 Sep 2019 14:24:53 +0000 (08:24 -0600)]
Merge pull request #1906 from ShchchowAMD/master

Reflection will crash when the VS input symbol defines the same name with FS output symbol

5 years agoMerge pull request #1910 from KhronosGroup/fix-1900-const-nonuniform
John Kessenich [Fri, 20 Sep 2019 18:18:13 +0000 (12:18 -0600)]
Merge pull request #1910 from KhronosGroup/fix-1900-const-nonuniform

GLSL/SPV: Fix #1900: Drop const on literal when doing an object copy.

5 years agoGLSL/SPV: Fix #1900: Drop const on literal when doing an object copy.
John Kessenich [Fri, 20 Sep 2019 12:01:42 +0000 (06:01 -0600)]
GLSL/SPV: Fix #1900: Drop const on literal when doing an object copy.

5 years agoMerge pull request #1907 from kainino0x/separate-web-and-emscripten
John Kessenich [Thu, 19 Sep 2019 15:12:52 +0000 (09:12 -0600)]
Merge pull request #1907 from kainino0x/separate-web-and-emscripten

Separate GLSLANG_WEB (min-size build) and Emscripten options

5 years agoMerge pull request #1905 from KhronosGroup/GL_EXT_buffer_reference_uvec2
John Kessenich [Thu, 19 Sep 2019 06:21:38 +0000 (00:21 -0600)]
Merge pull request #1905 from KhronosGroup/GL_EXT_buffer_reference_uvec2

SPV_KHR_physical_storage_buffer/SPV: Add GL_EXT_buffer_reference_uvec2

5 years agoSPV_KHR_physical_storage_buffer/SPV: Add GL_EXT_buffer_reference_uvec2
John Kessenich [Wed, 18 Sep 2019 05:19:38 +0000 (23:19 -0600)]
SPV_KHR_physical_storage_buffer/SPV: Add GL_EXT_buffer_reference_uvec2

Adds uvec2 <-> reference constructor support.
Switches from EXT to KHR for physical_storage_buffer.

5 years agoMerge pull request #1908 from digit-google/fuchsia-fixes
John Kessenich [Wed, 18 Sep 2019 08:38:10 +0000 (02:38 -0600)]
Merge pull request #1908 from digit-google/fuchsia-fixes

Fix Fuchsia build.

5 years agoFix Fuchsia build.
David 'Digit' Turner [Mon, 16 Sep 2019 17:13:16 +0000 (19:13 +0200)]
Fix Fuchsia build.

The Fuchsia build is very picky about newlines at the end of files
and will complain loudly about them. Removing the -Wnewline-eof
warning solves the issue.

5 years agoMerge branch 'master' into separate-web-and-emscripten
John Kessenich [Wed, 18 Sep 2019 07:55:12 +0000 (01:55 -0600)]
Merge branch 'master' into separate-web-and-emscripten

5 years agouse custom es6 modularization instead of MODULARIZE=1
Kai Ninomiya [Wed, 18 Sep 2019 06:53:30 +0000 (23:53 -0700)]
use custom es6 modularization instead of MODULARIZE=1

5 years agoSeparate GLSLANG_WEB (min-size build) and Emscripten options
Kai Ninomiya [Wed, 18 Sep 2019 06:08:45 +0000 (23:08 -0700)]
Separate GLSLANG_WEB (min-size build) and Emscripten options

Allows building non-min-size builds with Emscripten.
Adds ENABLE_GLSLANG_WEB_DEVEL.
Moves the glslang.js files to OSDependent/Web.
Small cleanups and docs update.

5 years agoREADME: Fix WASM typos.
John Kessenich [Wed, 18 Sep 2019 06:17:31 +0000 (00:17 -0600)]
README: Fix WASM typos.

5 years agoHLSL: Fix #1903 Catch 0-argument case to constructors.
John Kessenich [Wed, 18 Sep 2019 06:03:18 +0000 (00:03 -0600)]
HLSL: Fix #1903 Catch 0-argument case to constructors.

5 years agoReflection will crash when the VS input symbol defines the same name with FS output...
Chow [Wed, 18 Sep 2019 06:04:29 +0000 (14:04 +0800)]
Reflection will crash when the VS input symbol defines the same name with FS output symbol

[PURPOSE]:
The current process design for Uniform / Block / Pipe IO symbols reflection (during program linking) is as following :

1.1 using a global mapper called 'TNameToIndex' to store all the relationship of name (of symbols) to their indexes (in their own MapIndexToReflection vectors).

1.2 TNameToIndex mapper will be used during program linking and helps to check and merge duplicate symbols within each stage ( Uniform, Block and Pipe IO)

1.3 Different types of symbols will have their own index mapping storage. All those symbols will share TNameToIndex as a general searching mapper.

1.4 Only IN in first stage and OUT in last stage will be dealed within traversing functions.

Now, here we meet those problems:

2.1 In and Out variables for pipelines are mapping to different MapIndexToReflection vector (ioItems), but they may still have same names within the general symbol search mapper : TNameToIndex.

2.2 Then, when there are same symbols of IN in VS and OUT in FS, TNameToIndex could not tell the difference because it only stores one local index for one symbol (1:1) as a pair of KeyValue.

[What fixed]:

Seperate I/O from other symbols like Uniform and Block (it is wrong to keep them all in TNameToIndex), and save in new searching mappers called pipeInNameToIndex and pipeOutNameToIndex.

Expose new top-level functions defined as getReflectionPipeIOIndex and getPipeIOIndex for users who need to query Pipe I/O information (As they may reach those things through getUniformIndex and getReflectionIndex now, which is a confused way.)

As there are 2 mappers for above symbols, users needs to input second argument when they wanna reach those pipe I/O parameters, that's also why we need to modify GET functions either.

[Test Case]:

The shader is as following:

######### VS ############
layout(location = 0) in vec4 g_position;
layout(location = 1) in vec4 g_color;
out StageData {
vec4 color;
} g_vs_out;
void main() {
gl_Position = g_position;
g_vs_out.color = g_color;
}

########### FS #############
in StageData {
vec4 color;
} g_fs_in;
layout(location = 0) out vec4 g_color;
void main() {
g_color = g_fs_in.color;
}

5 years agoMerge pull request #1902 from jeffbolznv/extended_types
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

5 years agoAdd 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

5 years agoMerge pull request #1899 from KhronosGroup/SPIR-V_1.5
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

5 years agoGLSL: Only require constant for subgroupBroadcast when SPV < 1.5.
John Kessenich [Wed, 28 Aug 2019 06:01:54 +0000 (00:01 -0600)]
GLSL: Only require constant for subgroupBroadcast when SPV < 1.5.

5 years agoSPV: Support SPIR-V 1.5; five extensions no longer need OpExtension.
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.

5 years agoMerge pull request #1894 from ShchchowAMD/master
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 )

5 years agoAdd 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

5 years agoSPV 1.5: Switch to the 1.5 header, for SPIR-V 1.5.
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.

5 years agoMerge pull request #1897 from dj2/unused
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.

5 years agoMerge pull request #1895 from amdrexu/bugfix
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

5 years agoComment out params instead of removing
Dan Sinclair [Wed, 11 Sep 2019 12:58:48 +0000 (08:58 -0400)]
Comment out params instead of removing

5 years agoRemove unused params
Dan Sinclair [Tue, 10 Sep 2019 19:39:22 +0000 (15:39 -0400)]
Remove unused params

5 years agoFix incorrect function prototypes of 64-bit findLSB/findMSB
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)

5 years agoFix #1879: Check for valid variable before checking for unsized arrays.
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.

5 years agoMerge pull request #1892 from greg-lunarg/kg106
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.

5 years agoUpdate 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.

5 years agoMerge pull request #1889 from Roy-AMD/code-refine
John Kessenich [Tue, 3 Sep 2019 09:02:13 +0000 (03:02 -0600)]
Merge pull request #1889 from Roy-AMD/code-refine

Code refine

5 years agocode refine
Roy [Mon, 2 Sep 2019 09:07:39 +0000 (17:07 +0800)]
code refine

Reduce the number of cycles.

5 years agoMerge pull request #6 from Roy-AMD/sync
Roy.li [Mon, 2 Sep 2019 03:58:14 +0000 (11:58 +0800)]
Merge pull request #6 from Roy-AMD/sync

Sync code

5 years agoMerge pull request #5 from KhronosGroup/master
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

5 years agoPlaceholder fix for part of #1870.
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.

5 years agoNon-functional: Make whitespace/braces consistent for a recent commit.
John Kessenich [Fri, 30 Aug 2019 15:51:06 +0000 (09:51 -0600)]
Non-functional: Make whitespace/braces consistent for a recent commit.

5 years agoMerge pull request #1885 from zoddicus/fixUnInitializedVariableWarnings
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

5 years agoChange to initializing the variable
Ryan Harrison [Wed, 28 Aug 2019 17:15:15 +0000 (13:15 -0400)]
Change to initializing the variable

5 years agoReturn nullptr after assert to avoid uninitialized variables
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.

5 years agoMerge pull request #1876 from jeffbolznv/imma
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

5 years agoESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V.
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.

5 years agoDocumentation: Provide more detail in setting up the environment.
John Kessenich [Wed, 28 Aug 2019 08:25:26 +0000 (02:25 -0600)]
Documentation: Provide more detail in setting up the environment.

5 years agoMerge pull request #1883 from Kangz/fix_gn
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.

5 years agoBUILD.gn: Add missing HLSL files.
Corentin Wallez [Tue, 27 Aug 2019 13:24:31 +0000 (15:24 +0200)]
BUILD.gn: Add missing HLSL files.

5 years agoMerge pull request #1881 from baldurk/buffer-array-bind-reflection-fix
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

5 years agoMerge pull request #1882 from Kangz/fix-chrome
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.

5 years agoGN 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.

5 years agoDereference any array type before expanding root-level SSBO members
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.

5 years agoMerge pull request #1878 from dneto0/chrome-fix
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

5 years agoGN build (for Chromium): enable HLSL
David Neto [Fri, 23 Aug 2019 18:34:29 +0000 (14:34 -0400)]
GN build (for Chromium): enable HLSL

5 years agoGL_NV_integer_cooperative_matrix support
Jeff Bolz [Fri, 23 Aug 2019 01:28:00 +0000 (20:28 -0500)]
GL_NV_integer_cooperative_matrix support

5 years agoBump revision.
John Kessenich [Thu, 22 Aug 2019 17:20:40 +0000 (11:20 -0600)]
Bump revision.

5 years agoMerge pull request #1874 from KhronosGroup/inherit-memory-qualifiers
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.

5 years agoGLSL: 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.

5 years agoMerge pull request #1875 from jonahryandavis/extra-tokens
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

5 years agoFix conformance with -Wextra-tokens
Jonah Ryan-Davis [Thu, 22 Aug 2019 14:36:12 +0000 (10:36 -0400)]
Fix conformance with -Wextra-tokens

5 years agoBump version.
John Kessenich [Wed, 21 Aug 2019 17:08:27 +0000 (11:08 -0600)]
Bump version.

5 years agoMerge pull request #1855 from KhronosGroup/web
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.

5 years agoweb: Fix accidental additon of refract() prototypes and update README.
John Kessenich [Wed, 21 Aug 2019 09:38:02 +0000 (03:38 -0600)]
web: Fix accidental additon of refract() prototypes and update README.

5 years agoWeb: Turn off includes, independent preprocessing path, fine tune all.
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.

5 years agoWeb: Make switched methods all be non-virtual, more web-dependent code,
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.

5 years agoWeb: Optional error management and error tightening.
John Kessenich [Sat, 10 Aug 2019 16:41:15 +0000 (10:41 -0600)]
Web: Optional error management and error tightening.

Saves about 6.5K

5 years agoWeb: Use isEsProfile() instead of run-time testing; remove more atomics
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.

5 years agoWeb: Remove unused stage functionality, SPIR-V logger, and hex_utils
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.

5 years agoWeb: Remove unnecessary GLSL numeric types, and some collateral.
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.

5 years agoWeb: Tighten up sampling code and interfaces.
John Kessenich [Thu, 8 Aug 2019 07:15:24 +0000 (01:15 -0600)]
Web: Tighten up sampling code and interfaces.

Saves about 9K.

5 years agoWeb: Complete the removal of vendor-specific #ifdef's, including CMake.
John Kessenich [Wed, 7 Aug 2019 07:52:20 +0000 (01:52 -0600)]
Web: Complete the removal of vendor-specific #ifdef's, including CMake.

5 years agoWeb: Prune grammar and lexor down to needed subset.
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.

5 years agoWeb: Generalize _EXTENSIONS* in SPIR-V back-end.
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.

5 years agoWeb: Turn off bracket-style attributes, reflection, and IO mapping.
John Kessenich [Tue, 6 Aug 2019 08:20:45 +0000 (02:20 -0600)]
Web: Turn off bracket-style attributes, reflection, and IO mapping.

5 years agoWeb: Remove/rationalize a set of *_EXTENSIONS, using GLSLANG_WEB.
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.

5 years agoWeb: First pass of tabling the built-in function declarations.
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.

5 years agoWeb: Selectively remove a few key features, using #ifndef GLSLANG_WEB
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.

5 years agoWeb: Change a bunch of HLSL methods from dynamic to compile-time known.
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.

5 years agoWeb: Remove a few additional HLSL constructs with ENABLE_HLSL.
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.

5 years agoWeb: Add sanity check test suite for smaller-footprint builds.
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.

5 years agoMerge pull request #1872 from kainino0x/js-interface
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

5 years agoBump revision.
John Kessenich [Wed, 21 Aug 2019 04:42:40 +0000 (22:42 -0600)]
Bump revision.

5 years agoconvert_glsl_to_spirv: fail early, reduce copies, remove input buffer allocation
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

5 years agomake glslang.js easy to use
Kai Ninomiya [Fri, 26 Jul 2019 04:34:15 +0000 (21:34 -0700)]
make glslang.js easy to use

5 years agoenable build for node
Kai Ninomiya [Thu, 15 Aug 2019 00:30:14 +0000 (17:30 -0700)]
enable build for node

5 years agoSet theme jekyll-theme-merlot
John Kessenich [Thu, 15 Aug 2019 03:35:57 +0000 (21:35 -0600)]
Set theme jekyll-theme-merlot

5 years agoMerge pull request #1867 from zoddicus/addWebBuild
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

5 years agoMake non-emscripten flags platform agnostic.
Ryan Harrison [Fri, 9 Aug 2019 15:19:07 +0000 (11:19 -0400)]
Make non-emscripten flags platform agnostic.

5 years agoConverted ENABLE_HLSL to a dependent option, so it can be always disabled in web...
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

5 years agoMove build instructions to README.md
Ryan Harrison [Fri, 9 Aug 2019 14:27:45 +0000 (10:27 -0400)]
Move build instructions to README.md

5 years agoAdd WASM build target for Web version of glslang
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.

5 years agoBump revision and give the bots another chance to work.
John Kessenich [Fri, 2 Aug 2019 12:34:15 +0000 (06:34 -0600)]
Bump revision and give the bots another chance to work.

5 years agoMerge pull request #1860 from zoddicus/fixShaderCRoll
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

5 years agoAdd 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.

5 years agoMerge pull request #1859 from zoddicus/fixNoRTTIForWindows
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