Daniel Koch [Tue, 4 Jun 2019 12:43:32 +0000 (08:43 -0400)]
Add support for GL_NV_shader_sm_builtins
Including spirv and AST tests
Also increase size of TBuiltInVariable bitfields since we've now exceeded 127
and add a static_assert to make this easier to find next time it happens!
John Kessenich [Sat, 8 Jun 2019 10:30:46 +0000 (04:30 -0600)]
GLSL: Revert
f6873f7 to fix #1764.
John Kessenich [Sat, 8 Jun 2019 10:04:15 +0000 (04:04 -0600)]
Merge pull request #1794 from jeffbolznv/pre_legalization
Use spvValidatorOptionsSetBeforeHlslLegalization for pre-legalized HLSL
John Kessenich [Sat, 8 Jun 2019 08:06:33 +0000 (02:06 -0600)]
Merge pull request #1793 from greg-lunarg/kg104
Uppdate spirv-tools known-good
Jeff Bolz [Fri, 7 Jun 2019 19:42:08 +0000 (14:42 -0500)]
Use spvValidatorOptionsSetBeforeHlslLegalization for pre-legalized HLSL
Greg Fischer [Thu, 6 Jun 2019 19:18:08 +0000 (13:18 -0600)]
Uppdate spirv-tools known-good
John Kessenich [Wed, 5 Jun 2019 16:37:11 +0000 (10:37 -0600)]
Merge pull request #1791 from dj2/unused
Remove unused parameter
Dan Sinclair [Wed, 5 Jun 2019 15:48:20 +0000 (11:48 -0400)]
Remove unused parameter
John Kessenich [Tue, 4 Jun 2019 15:04:19 +0000 (09:04 -0600)]
Merge pull request #1788 from jeffbolznv/ifdef_fix
Add missing NV_EXTENSIONS ifdef
Jeff Bolz [Tue, 4 Jun 2019 14:47:41 +0000 (09:47 -0500)]
Add missing NV_EXTENSIONS ifdef
John Kessenich [Tue, 4 Jun 2019 09:36:51 +0000 (03:36 -0600)]
Merge pull request #1786 from jeffbolznv/fsi
Support GL_ARB_fragment_shader_interlock
Jeff Bolz [Mon, 3 Jun 2019 16:33:50 +0000 (11:33 -0500)]
Support GL_ARB_fragment_shader_interlock
John Kessenich [Sun, 2 Jun 2019 04:36:55 +0000 (22:36 -0600)]
Merge pull request #1769 from tanderson-google/RemoveInvalidGnSource
Remove glslang.y from gn sources
John Kessenich [Sun, 2 Jun 2019 02:29:59 +0000 (20:29 -0600)]
Merge pull request #1782 from dgkoch/fix_1735
Fix subgroup support for ray tracing
Daniel Koch [Mon, 27 May 2019 20:46:31 +0000 (16:46 -0400)]
Fix subgroup support for ray tracing
Closes #1735
GlslangToSpv.cpp
- minor formatting cleanup
BaseTypes.h
- minor formatting cleanup
- add subgroup builtins to GetBuiltInVariableString
(was resulting in "unknown built-in variable" messages in test output)
Initialize.cpp
- better naming and re-use of strings for subgroup builtin variable declarations
- define subgroup builtin variables in ray-tracing shaders
intermOut.cpp
- add handling of the EOpSubgroupParition* variables
(was resulting in "ERROR: Bad aggregation op" messages in test output)
Update test results.
Daniel Koch [Thu, 30 May 2019 23:40:20 +0000 (19:40 -0400)]
Add AST tests for ray tracing shaders
with subgroup touch tests (error and non-error cases)
Currently the subgroup built-ins are NOT giving the correct output.
This is fixed in the next commit.
Daniel Koch [Thu, 30 May 2019 05:08:41 +0000 (01:08 -0400)]
Add AST tests for mesh and task shaders
with subgroup touch testing (error and non-error cases)
Add missing symbolTable.relateToOperator("subgroupMemoryBarrierShared") call for
Mesh/Task shaders so they don't assert in ParseHelper.cpp
Daniel Koch [Thu, 30 May 2019 04:24:33 +0000 (00:24 -0400)]
Add more subgroup testing
Touch test all subgroup builtins in vert, tesc, tese, geom, frag, compute shaders
before and after enabling extensions to make sure the correct errors are generated
and then not generated (after enablement).
John Kessenich [Fri, 31 May 2019 09:28:07 +0000 (03:28 -0600)]
Merge pull request #1781 from jeffbolznv/issue_1766
Allow runtime-sized arrays of acceleration structures
Jeff Bolz [Thu, 30 May 2019 17:45:15 +0000 (12:45 -0500)]
Allow runtime-sized arrays of acceleration structures
John Kessenich [Wed, 29 May 2019 22:00:31 +0000 (16:00 -0600)]
Merge pull request #1776 from dgkoch/dgkoch_20190525_fixes
Misc fixes from dgkoch
Daniel Koch [Tue, 28 May 2019 19:23:19 +0000 (15:23 -0400)]
Fix include guard for GL_EXT_multiview
Daniel Koch [Tue, 28 May 2019 19:23:10 +0000 (15:23 -0400)]
Return consistent names from CapabilityString
Don't prefix with "Capability" since the majority of them don't.
Also add missing CapabilityImageFootprintNV
John Kessenich [Fri, 24 May 2019 05:35:46 +0000 (23:35 -0600)]
Merge pull request #1772 from mattparks/patch-2
Fixed .dll install on MSVC.
Matthew Albrecht [Fri, 24 May 2019 00:01:57 +0000 (19:01 -0500)]
Fixed .dll install on MSVC.
Tom Anderson [Fri, 17 May 2019 17:54:03 +0000 (10:54 -0700)]
Remove non-source sources from binary targets
No behavior changes. Please see [1] for why this is necessary.
[1] https://bugs.chromium.org/p/chromium/issues/detail?id=964411
John Kessenich [Fri, 17 May 2019 04:05:01 +0000 (11:05 +0700)]
Merge pull request #1768 from ShabbyX/enable-opt
Build.gn: allow optimization in glslang lib and standalone
Shahbaz Youssefi [Fri, 17 May 2019 03:53:15 +0000 (23:53 -0400)]
Build.gn: allow optimization in glslang lib and standalone
John Kessenich [Thu, 16 May 2019 08:26:51 +0000 (15:26 +0700)]
Merge pull request #1767 from dneto0/update-spirv-headers
Update SPIRV-Tools, SPIRV-Headers
David Neto [Thu, 16 May 2019 06:59:54 +0000 (02:59 -0400)]
Update SPIRV-Tools, SPIRV-Headers
Headers update fixes validation of spv.shaderBallotAMD.
John Kessenich [Fri, 10 May 2019 12:47:00 +0000 (06:47 -0600)]
Build: Fix 3 warnings.
John Kessenich [Fri, 10 May 2019 07:19:07 +0000 (14:19 +0700)]
Merge pull request #1761 from KhronosGroup/SPIR-V_1.4
SPV 1.4: Add code generation for SPIR-V 1.4 features
John Kessenich [Fri, 10 May 2019 06:34:10 +0000 (00:34 -0600)]
Bump version and revision.
John Kessenich [Fri, 10 May 2019 05:50:08 +0000 (23:50 -0600)]
SPV 1.4: Move to 1.4 validation, removing all 1.4 validation failures.
John Kessenich [Sun, 31 Mar 2019 16:51:57 +0000 (10:51 -0600)]
SPV 1.4: Emit SignExtend and ZeroExtend for integer image reads/writes.
John Kessenich [Thu, 7 Feb 2019 15:04:12 +0000 (08:04 -0700)]
SPV 1.4: Lookup tables: Use variable initializer and NonWritable...
...when doing a variable lookup on an array of constants.
John Kessenich [Tue, 15 Jan 2019 14:48:27 +0000 (21:48 +0700)]
SPV 1.4: Add support for OpCopyLogical, careful of Boolean differences.
John Kessenich [Sat, 12 Jan 2019 10:31:41 +0000 (17:31 +0700)]
SPV 1.4: Implement the 5 new loop controls.
John Kessenich [Thu, 10 Jan 2019 11:23:06 +0000 (18:23 +0700)]
SPV 1.4: Use OpSelect for trivial typed non-scalar/vector expressions.
John Kessenich [Fri, 4 Jan 2019 10:10:53 +0000 (17:10 +0700)]
SPV 1.4: Add testing infrastructure for SPV 1.4 tests.
This includes the test for the first feature of OpEntryPoint.
John Kessenich [Fri, 4 Jan 2019 09:47:06 +0000 (16:47 +0700)]
SPV 1.4: Generate all globals on OpEntryPoint interface list.
John Kessenich [Fri, 10 May 2019 05:59:37 +0000 (23:59 -0600)]
SPV: Move to the SPIR-V 1.4 header.
John Kessenich [Fri, 10 May 2019 03:39:15 +0000 (10:39 +0700)]
Merge pull request #1765 from KhronosGroup/update-knowngood-tools-SPIR-V_1.4
Latest known-good SPIRV-Tools: WARNING: Needs python 3.x.
John Kessenich [Thu, 9 May 2019 09:43:26 +0000 (03:43 -0600)]
Latest known-good SPIRV-Tools: WARNING: Needs python 3.x.
You may need to install python 3.x and also
[windows users] may need to get it in your path in front of python 2.7.x.
If you don't need the external projects (i.e., SPIRV-Tools) and don't want
to upgrade to python 3, don't create the External subdirectory and CMake
won't require python 3. (CMake has a bug that makes it find the wrong one
on a first pass if the top level does not require the version needed by
lower levels.)
John Kessenich [Thu, 9 May 2019 08:11:28 +0000 (02:11 -0600)]
Bump revision.
John Kessenich [Thu, 9 May 2019 08:09:31 +0000 (15:09 +0700)]
Merge pull request #1762 from jeffbolznv/issue1760
For nonuniformEXT constructor, make a copy of the node to decorate
Jeff Bolz [Wed, 8 May 2019 15:24:46 +0000 (10:24 -0500)]
For nonuniformEXT constructor, make a copy of the node to decorate
John Kessenich [Wed, 8 May 2019 10:12:52 +0000 (17:12 +0700)]
Merge pull request #1739 from jeffbolznv/buffer_reference2
Add support for GL_EXT_buffer_reference2
John Kessenich [Fri, 3 May 2019 16:11:26 +0000 (23:11 +0700)]
Merge pull request #1755 from amdrexu/bugfix
Fix issues of explicit conversions.
John Kessenich [Fri, 3 May 2019 14:44:41 +0000 (21:44 +0700)]
Merge pull request #1758 from jeffbolznv/convertonly
If a shader's only use of float16 is for FConvert, add the Float16 capability
John Kessenich [Fri, 3 May 2019 14:40:35 +0000 (08:40 -0600)]
Fix #1759: Check for specialization constants when literals required.
Jeff Bolz [Fri, 8 Mar 2019 16:42:49 +0000 (10:42 -0600)]
Add support for GL_EXT_buffer_reference2
Jeff Bolz [Wed, 1 May 2019 16:45:36 +0000 (11:45 -0500)]
If a shader's only use of float16 is for FConvert, add the Float16 capability.
When visiting instructions, check that there are no 16-bit storage capabilities
and add the Float16 capability. Same for int8/int16.
Rex Xu [Thu, 25 Apr 2019 02:34:28 +0000 (10:34 +0800)]
Fix issues of explicit conversions.
For certain int8/int16/float16 conversions,they are conditionally allowed
when extensions defining explicit arithmetic types are enabled.
John Kessenich [Fri, 19 Apr 2019 11:00:32 +0000 (05:00 -0600)]
Bump revision.
John Kessenich [Fri, 19 Apr 2019 10:57:43 +0000 (04:57 -0600)]
GLSL: Add error check for an argument dropping the 'restrict' qualifier
John Kessenich [Fri, 19 Apr 2019 10:47:03 +0000 (04:47 -0600)]
Fix #1720: Give an error for parameter mismatched image format.
John Kessenich [Fri, 19 Apr 2019 06:11:07 +0000 (00:11 -0600)]
clang-format correction and typo (clang format likely not complete)
This was added some time ago, but I suspect largely unused.
Christoph pointed out of few contradictions to actual convention,
so that's fixed. But, I suspect it is largely incomplete.
John Kessenich [Wed, 17 Apr 2019 14:52:34 +0000 (21:52 +0700)]
Merge pull request #1753 from pixeljetstream/ckubischnv_dumpbuiltins
introduce ability to dump builtin symbol table
Christoph Kubisch [Wed, 17 Apr 2019 08:49:53 +0000 (10:49 +0200)]
improve formating
Christoph Kubisch [Tue, 16 Apr 2019 11:28:49 +0000 (13:28 +0200)]
revert typeName from getCompleteString() (breaks tests), add to function dump instead
Christoph Kubisch [Tue, 16 Apr 2019 08:00:28 +0000 (10:00 +0200)]
improve formating
Christoph Kubisch [Tue, 16 Apr 2019 07:50:48 +0000 (09:50 +0200)]
TType::getCompleteString insert optional structure name
Christoph Kubisch [Mon, 15 Apr 2019 11:37:12 +0000 (13:37 +0200)]
minor improvements to formating
Christoph Kubisch [Sat, 13 Apr 2019 20:57:33 +0000 (22:57 +0200)]
minor naming cleanup
Christoph Kubisch [Sat, 13 Apr 2019 20:18:16 +0000 (22:18 +0200)]
introduce new --dump-builtin-symbols command line
add corresponding EShMsgBuiltinSymbolTable
TSymbol::dump functions have option to do "complete" print
bugfix in TType::getCompleteString, structure can be null for block
John Kessenich [Mon, 8 Apr 2019 14:28:26 +0000 (21:28 +0700)]
Merge pull request #1752 from dgkoch/dkoch_build_fix18
Add cstdlib include
Daniel Koch [Sat, 6 Apr 2019 11:43:17 +0000 (07:43 -0400)]
Add cstdlib include
On some platforms some of the includers of this header don't have
'atoi' defined after the change in #1749
John Kessenich [Fri, 5 Apr 2019 03:42:03 +0000 (10:42 +0700)]
Merge pull request #1750 from greg-lunarg/kg103
Update spirv-tools known-good
Greg Fischer [Thu, 4 Apr 2019 16:19:55 +0000 (10:19 -0600)]
Update spirv-tools known-good
John Kessenich [Thu, 4 Apr 2019 15:38:26 +0000 (09:38 -0600)]
Update to latest SPIR-V header and bump revision.
John Kessenich [Thu, 4 Apr 2019 07:29:31 +0000 (14:29 +0700)]
Merge pull request #1749 from dgkoch/dgkoch_common_mscver
Check if _MSC_VER is defined before using.
Daniel Koch [Wed, 3 Apr 2019 21:21:06 +0000 (17:21 -0400)]
Check if _MSC_VER is defined before using.
Fixes compilation errors on some platforms.
John Kessenich [Wed, 3 Apr 2019 09:08:17 +0000 (16:08 +0700)]
Merge pull request #1746 from karl-lunarg/gtest-install
build: Don't ship GTEST headers in install target
Karl Schultz [Tue, 2 Apr 2019 20:58:25 +0000 (14:58 -0600)]
build: Don't ship GTEST headers in install target
A project that uses googletest(GTEST) shouldn't include googletest
headers with its artifacts in its install target. These headers
simply are not needed by the consumers of the install target and
can cause conflicts with other projects that use googletest
themselves and this project's install target. And they are just not
part of the expected glslang build artifacts.
It is likely that the addition of the googletest headers to the install
target was a simple oversight that happens as a result of adding
googletest as a CMake subdirectory.
For more information on how this causes conflicts with other projects,
please see: https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/821.
John Kessenich [Thu, 28 Mar 2019 02:28:43 +0000 (09:28 +0700)]
Merge pull request #1742 from greg-lunarg/kg102
Update spirv-tools known-good
Greg Fischer [Wed, 27 Mar 2019 17:43:03 +0000 (11:43 -0600)]
Update spirv-tools known-good
John Kessenich [Wed, 27 Mar 2019 09:19:05 +0000 (16:19 +0700)]
Merge pull request #1740 from ewerness-nv/callableincoming
Callables shouldn't have incoming ray flags
John Kessenich [Wed, 27 Mar 2019 06:41:47 +0000 (13:41 +0700)]
Merge pull request #1741 from dgkoch/shader_subgroup
Enable GL_KHR_shader_subgroup properly
Daniel Koch [Tue, 26 Mar 2019 17:45:33 +0000 (13:45 -0400)]
Enable GL_KHR_shader_subgroup properly
(and GL_NV_shader_subgroup_partitioned) based on GL/ES version
instead of predicating it on vulkan SPV generation
Also add AST testing.
The glsl.450.subgroup* files are largely the same as the spv.subgroup*
The glsl.es320.subgroup* files are the same as the 450 versions, but modified to be ES compatible.
Eric Werness [Mon, 25 Mar 2019 16:53:52 +0000 (09:53 -0700)]
Callables shouldn't have incoming ray flags
John Kessenich [Tue, 19 Mar 2019 07:40:21 +0000 (14:40 +0700)]
Merge pull request #1711 from demett-brcm/avoid-undefined-behaviour
Avoid undefined behaviour
Laurie [Tue, 19 Mar 2019 01:49:27 +0000 (01:49 +0000)]
GLSL: Fix tessellation control shader bounding box support. (#1730)
Prior to this change, OES_primitive_bounding_box and EXT_primitive_bounding_box were both recognised as extensions, but only the name gl_BoundingBoxOES could be used. However the EXT version uses the name gl_BoundingBoxEXT instead. In addition, since GLES 3.2, the extension has been included in the core standard and the name gl_BoundingBox may be used instead. This change aims to make both extensions and the 3.2 core version all work.
John Kessenich [Mon, 18 Mar 2019 16:41:27 +0000 (23:41 +0700)]
Merge pull request #1733 from null77/fix-msvc-warn
Suppress MSVC warning about unused variable.
John Kessenich [Mon, 18 Mar 2019 16:38:27 +0000 (23:38 +0700)]
Merge pull request #1731 from godlikepanos/master
Avoid running the validator as part of the optimization pass.
Jamie Madill [Mon, 18 Mar 2019 15:38:53 +0000 (11:38 -0400)]
Suppress MSVC warning about unused variable.
One variable was only used in an 'assert' call. MSVC flagged this
as unused in Release. Suppress the warning and also add a static
cast to void so the variable becomes referenced.
Panagiotis Christopoulos Charitos [Mon, 18 Mar 2019 10:34:17 +0000 (11:34 +0100)]
Avoid running the validator as part of the optimization pass.
The spvtools::Optimizer::Run method glslang is using constructs a default set
of spvtools::OptimizerOptions. This default set of options instructs the
validator to run. That is not quite correct since glslang will invoke the
validator _explicitly_ after the optimization pass.
Change-Id: I30f458304c6e7f81e89fc4ebd25eabbbd8348063
John Kessenich [Mon, 18 Mar 2019 04:29:25 +0000 (22:29 -0600)]
Build: Update to the most recent SPIR-V headers, for Rev. 7 of SPV 1.3
John Kessenich [Sun, 17 Mar 2019 06:00:27 +0000 (13:00 +0700)]
Merge pull request #1728 from alelenv/shaderrecord_fix
Error out writes to shaderRecordNV buffer blocks.
John Kessenich [Tue, 12 Mar 2019 17:16:57 +0000 (00:16 +0700)]
Merge pull request #1724 from zoddicus/roll_spirv
Update SPIRV-Tools and Headers
Ryan Harrison [Tue, 12 Mar 2019 15:25:00 +0000 (11:25 -0400)]
Update SPIRV-Tools and Headers
Also mark spv.subgroupPartitioned as passing validation.
John Kessenich [Tue, 12 Mar 2019 04:33:26 +0000 (11:33 +0700)]
Merge pull request #1723 from null77/gn-val-executable
GN: Make glslang_validator an executable.
Jamie Madill [Mon, 11 Mar 2019 19:45:31 +0000 (15:45 -0400)]
GN: Make glslang_validator an executable.
The target was accidentally listed as a source_set.
John Kessenich [Thu, 7 Mar 2019 04:05:08 +0000 (11:05 +0700)]
Merge pull request #1717 from jeffbolznv/getBufferReferenceAlignment
Move getBufferReferenceAlignment to be a method of TType
John Kessenich [Thu, 7 Mar 2019 04:04:26 +0000 (11:04 +0700)]
Merge pull request #1716 from jeffbolznv/buffer_reference_fold2
Improved fix for buffer reference constants
Jeff Bolz [Wed, 6 Mar 2019 19:34:10 +0000 (13:34 -0600)]
Move getBufferReferenceAlignment to be a method of TType
This is a better place for it logically, since it is not specific to
glsl->spirv translation. And in a future change I want to use it outside
of glslangtospv.
Jeff Bolz [Wed, 6 Mar 2019 05:27:09 +0000 (23:27 -0600)]
Improved fix for buffer reference constants
This is an alternate fix for the issue described in commit
be63facd, whose
solution didn't work if there were non-trivial operations involved in computing
a constant initializer which caused the 'constant unfolding' code to kick in
(addConstantReferenceConversion). Instead, this change does the 'unfolding'
later in createSpvConstantFromConstUnionArray. If a reference-type constant has
survived that long, then folding is already done, this must be a 'real' (inside
a function) use of the constant, and it should be safe to unfold and apply the
bitcast.
John Kessenich [Wed, 6 Mar 2019 13:43:07 +0000 (20:43 +0700)]
Merge pull request #1714 from jeffbolznv/volatil
Fix interactions between 'volatile' and the Vulkan memory model
John Kessenich [Wed, 6 Mar 2019 04:21:38 +0000 (11:21 +0700)]
Build: Update to latest SPIR-V header.
Jeff Bolz [Tue, 5 Mar 2019 20:40:07 +0000 (14:40 -0600)]
Fix interactions between 'volatile' and the Vulkan memory model
Last year we changed 'volatile' to also act as 'coherent', but when I
resolved the memory model changes against that change I missed handling
volatile in a couple places that we check for coherent. There was also
a place in post-processing that acted as if the volatile memory access
flag has a literal number associated with it, when it doesn't.