Daniel Koch
db32b243ff
Add support for GLSL_EXT_ray_tracing
...
and SPV_KHR_ray_tracing
2020-03-17 20:42:47 -04:00
Jeff Bolz
04d73731de
GL_EXT_debug_printf implementation
2020-03-05 13:41:34 -06:00
John Kessenich
8985fc9108
Fix long lines in the SPIR-V generator, retrigger bots.
2020-03-03 10:25:07 -07:00
John Kessenich
bbbd9a2a1f
Fix #1843 : Handle built-in function output parameters to a swizzled arg
...
In GLSL/HLSL/AST, v.zyx is an l-value, but not in SPIR-V, which cannot represent it.
So, a temporary is used instead.
2020-03-03 07:21:37 -07:00
John Kessenich
56364b6b60
Copyright update, mostly to trigger bots again.
2020-03-01 04:51:40 -07:00
John Kessenich
d5f2f7b93d
Merge pull request #1940 from tsuoranta/fix-gcc9
...
Fix for GCC 9 / Werror=deprecated-copy
2020-01-27 01:02:08 -07:00
David Neto
e43e8ba9f3
SPIR-V postprocessing: WEB case only needs CFG mods
...
The SPIR-V post-processing to discover capabilities and
extensions does not apply to WebGPU compilation. So don't include
that code.
This reclaims some of the code space added by #1943
2019-11-07 17:55:22 -05:00
David Neto
8c3d5b4b6c
SPIR-V: Aggressively prune unreachable merge, continue target
...
More aggressively prune unreachable code as follows.
When no control flow edges reach a merge block or continue target:
- delete their contents so that:
- a merge block becomes OpLabel, then OpUnreachable
- a continue target becomes OpLabel, then an OpBranch back to the
loop header
- any basic block which is dominated by such a merge block or continue
target is removed as well.
- decorations targeting the removed instructions are removed.
Enables the SPIR-V builder post-processing step the GLSLANG_WEB case.
2019-10-29 15:33:54 -04:00
Timo Suoranta
f0a85fc744
Fixes for gcc 9 / -Werror=deprecated-copy
...
Also enable -Werror-deprecated-copy for GCC version 9 and later.
2019-10-19 15:36:34 +03:00
John Kessenich
ee8e9c1522
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.
2019-10-10 20:54:21 -06:00
John Kessenich
8317e6c683
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.
2019-09-16 07:14:10 -06:00
John Kessenich
b9197c812e
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.
2019-08-20 23:21:56 -06:00
John Kessenich
f43c739ac5
SPV 1.4: Emit SignExtend and ZeroExtend for integer image reads/writes.
2019-05-10 00:02:45 -06:00
John Kessenich
61a5ce190a
SPV 1.4: Lookup tables: Use variable initializer and NonWritable...
...
...when doing a variable lookup on an array of constants.
2019-05-10 00:02:45 -06:00
John Kessenich
1f4d04687b
SPV 1.4: Implement the 5 new loop controls.
2019-05-10 00:02:45 -06:00
Jeff Bolz
4605e2ed2b
Implement GL_NV_cooperative_matrix
2019-02-25 23:42:59 -06:00
Jeff Bolz
9f2aec49e9
GL_EXT_buffer_reference
2019-01-07 12:36:13 -06:00
Greg Fischer
d445bb2867
Create separate OpSource for each included file
2018-12-28 12:06:43 -07:00
John Kessenich
b23d232ec5
Licensing. Fixes #958 . Add licenes file and update copyrights.
2018-12-14 10:47:35 -07:00
greg-lunarg
5d43c4aac7
SPV: Fix #1575 , fix #1593 : Support HLSL #line
...
SPIR-V OpLines now contain filenames from HLSL-style #lines.
2018-12-07 17:36:33 -07:00
John Kessenich
5ff3c3da3b
Interfaces: Remove NV_EXTENSIONS from two more headers.
...
This also fixes some cpp files that uncover issues when building
with the flags turned off.
2018-09-26 09:38:20 -06:00
Dan Sinclair
aac6d63716
Use unsigned int instead of uint32_t
2018-09-25 16:32:06 -04:00
Dan Sinclair
257b25c81f
Add BUILD.gn configuration.
...
This CL adds the necessary configuration to build glslang inside a
Chromium checkout. Two build warnings were fixed in the process to
make things compile.
2018-09-24 16:57:55 -04:00
Chao Chen
b50c02ef53
Add-support-for-SPV_NVX_raytracing
2018-09-19 13:07:43 -07:00
Chao Chen
3a1379667d
0003-Add-support-for-SPV_NV_shader_image_footprint
2018-09-19 13:07:42 -07:00
Jeff Bolz
36831c9bad
GL_KHR_memory_scope_semantics
2018-09-06 20:36:14 -05:00
John Kessenich
97068d8b30
Merge pull request #1465 from otakuto/remove-execute-permissions
...
Remove execute permissions
2018-08-31 08:14:47 -07:00
John Kessenich
31aa3d6019
SPV: only declare the pure 8/16-bit capabilities when needed.
...
Only when operations stray outside the 8/16-bit storage-capabilities
are the general (pure 8/16-bit) capabilities needed.
2018-08-16 15:54:21 -06:00
John Kessenich
149afc3930
SPV: More corrections of <id> versus "immediate" operands.
2018-08-14 13:31:43 -06:00
otakuto
d03da06ac1
Remove execute permissions
2018-08-07 03:16:20 +09:00
John Kessenich
f04c51b3bd
Non-Functional: Add postprocess as more robust way to add capabilities
...
When capabilities are needed for specific SPIR-V instructions, it is
fragile to do so based on GLSL/AST usage; it should be based on actual
instructions they got translated to.
2018-08-03 15:56:12 -06:00
John Kessenich
5611c6d27b
GLSL/SPV: Implement SPV_EXT_descriptor_indexing and GL_EXT_nonuniform_qualifier
2018-04-05 11:25:02 -06:00
John Kessenich
5d610ee1dc
Implement SPV_GOOGLE_hlsl_functionality1.
...
Enabled via -fhlsl_functionality1
2018-03-16 20:21:44 -06:00
Neil Roberts
eddb1318ae
Use the correct type for the constant for matrix/scalar division
...
When a matrix is divided by a scalar it tries to take the reciprocal
of the scalar to convert the operation into a multiply. However it was
always doing this by making a 32-bit constant. If the scalar is a
double then this would end up making an FDiv instruction with
different types in the operands.
This patch adds a helper method called makeFpConstant which makes a
floating-point constant of the given type. The code to take the
reciprocal now uses it to make the same type as the result.
Fixes https://github.com/KhronosGroup/glslang/issues/1278
2018-03-13 13:50:56 +01:00
John Kessenich
66011cb2c2
SPV: Implement Vulkan 1.1 features and extensions.
2018-03-06 16:12:04 -07:00
John Kessenich
46413d5780
SPV: Fix #1258 : cache constant structs by id, not opcode.
...
Constants were generally cached by type opcode, but all structures share the
same type opcode (OpTypeStruct), so they need to be cached by type id.
2018-02-26 19:35:39 -07:00
John Kessenich
57f6a016f0
SPV: Complete OpModuleProcessed implementation, enabled by have 1.2 headers.
2018-02-22 19:36:18 -07:00
John Kessenich
5c3eed542d
SPV: Create more access chains addressing a few swizzling issues.
...
- Fixes #1233
- Treats local bools like anything else
- more consistently deals with a dynamic component selection
2018-02-06 07:24:12 -07:00
John Kessenich
a2858d9bdd
GLSL: Implement GL_EXT_control_flow_attributes.
...
See https://github.com/KhronosGroup/GLSL/pull/11 .
2018-02-01 00:55:08 -07:00
John Kessenich
2b5ea9f851
SPV Version: Emit the requested SPIR-V version, not the header version.
...
Fixes #1236 .
2018-01-31 18:41:59 -07:00
John Kessenich
2a27116cae
SPV reflection: Add OpModuleProcessed for compile options.
2017-08-25 11:48:02 -06:00
John Kessenich
fad6297206
SPV: Non-functional: support lists of decorations per parameter.
2017-07-18 02:46:59 -06:00
Rex Xu
57e65929e4
HLSL: Translate directive [flatten] and [branch] to SPV control mask.
2017-07-06 11:31:33 +08:00
Rex Xu
cabbb788b4
Implement extension GL_AMD_gpu_shader_int16
...
- Add int16 types (int16_t, uint16_t, i16vec, u16vec).
- Add int16 support to GLSL operators.
- Add int16 type conversions (to int16, from int16).
- Add int16 built-in functions.
2017-06-09 17:11:23 +08:00
John Kessenich
e485c7af58
SPV: Debug output: Include OpLine information for execution path.
...
Note that declaratives are not handled, only procedurals.
2017-05-31 18:50:53 -06:00
John Kessenich
121853f4df
SPV: Add OpSource shader source code and file name.
2017-05-31 17:14:15 -06:00
Rex Xu
470026f9d7
HLSL: Fix an issue of frexp().
...
The "exp" parameter is floating-point type in HLSL intrinsic while it is
integer type in GLSL built-in function.
2017-03-29 17:12:40 +08:00
steve-lunarg
0b5c2ae70e
Preserve signedness in SPV image query ops
...
The AST->SPIRV translation of image queries was dropping signedness,
causing some validation troubles.
2017-03-10 12:51:59 -07:00
Vlad Ivanov
689490fd4d
SpvBuilder: add const specifier to vector reference arguments
2017-01-26 20:46:42 +03:00
Rex Xu
430ef40ab4
Implement new revision of extension GL_AMD_shader_ballot
...
- Add support for invocation functions with "InclusiveScan" and
"ExclusiveScan" modes.
- Add support for invocation functions taking int64/uint64/doube/float16
as inout data types.
2017-01-19 12:09:51 +08:00