239 Commits

Author SHA1 Message Date
Rex Xu
3b1b9e2957 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)
2019-09-09 22:53:02 +08:00
Jeff Bolz
387657e4cf GL_NV_integer_cooperative_matrix support 2019-08-22 20:37:59 -05:00
John Kessenich
369ffa9543 web: Fix accidental additon of refract() prototypes and update README. 2019-08-21 07:54:27 -06:00
John Kessenich
fb4f2333da Web: Use isEsProfile() instead of run-time testing; remove more atomics
Saves 2.5K, and design is better.
2019-08-20 23:21:56 -06:00
John Kessenich
155d351f86 Web: Remove unused stage functionality, SPIR-V logger, and hex_utils
Saves another 20K.
2019-08-20 23:21:56 -06:00
John Kessenich
3e4b6ff76a Web: Tighten up sampling code and interfaces.
Saves about 9K.
2019-08-20 23:21:56 -06:00
John Kessenich
7015bd658e 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.
2019-08-20 23:21:55 -06:00
John Kessenich
e66dace97e Web: First pass of tabling the built-in function declarations.
Doing this much saved about 11.5K, including adding all the infrastructure.
2019-08-20 23:21:55 -06:00
Ashwin Lele
c1e61d6cff Fix bugs in missing Builtin decoration for some NV builtins for tessellation
control shaders.
Fix bug in member remapping.
2019-07-22 12:36:38 -07:00
John Kessenich
9f2236e58e Build: shut up warning to add unnecessary parens. 2019-07-17 19:15:47 -06:00
John Kessenich
33081e01d3 ESSL: Fix #1823: Conditions for when derivatives are in compute shader. 2019-07-15 01:20:18 -06:00
amhagan
91fb0091a2 Add support for SPV_KHR_shader_clock 2019-07-10 21:34:12 -04:00
John Kessenich
8aa9a7bb8f
Merge pull request #1825 from amdrexu/bugfix
Change implementation of gl_SIMDGroupSizeAMD
2019-07-09 00:14:27 -06:00
Rex Xu
e085d83427 Change implementation of gl_SIMDGroupSizeAMD 2019-07-06 23:40:10 +08:00
Jeff Bolz
ba6170b534 Implement GL_EXT_demote_to_helper_invocation 2019-07-01 09:36:15 -05:00
Samuel Iglesias Gonsálvez
2cfde2bdbe Delete duplicated gl_SubGroupSizeARB builtin treatment
Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
2019-06-17 16:05:52 +02:00
John Kessenich
def9662348
Merge pull request #1796 from Igalia/siglesias/fix-gl_SubGroupSizeARB-tese-geom
Add missing GL_ARB_shader_ballot builtins to Geometry and Tessellatio…
2019-06-16 23:02:02 -06:00
Samuel Iglesias Gonsálvez
dbe6b06dde Add missing GL_ARB_shader_ballot builtins to Geometry and Tessellation shaders
When processing Geometry and Tessellation Control/Evaluation shaders,
the builtins defined by GL_ARB_shader_ballot were not processed by
glslang. This specially a problem for gl_SubGroupSizeARB because, it is
treated as shader input instead of uniform on Vulkan.

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
2019-06-15 12:55:50 +02:00
Jeff Bolz
38a52fca93 Add gl_SemanticsVolatile to GL_KHR_memory_scope_semantics, and make volatile-qualified atomics generate MemorySemanticsVolatile when using the Vulkan memory model 2019-06-14 09:57:01 -05:00
Daniel Koch
2cb2f197a7 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!
2019-06-08 08:53:11 -04:00
Jeff Bolz
c6f0ce8dbc Support GL_ARB_fragment_shader_interlock 2019-06-03 11:55:25 -05:00
Daniel Koch
593a4e0aa5 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.
2019-05-31 14:17:36 -04:00
Daniel Koch
3418cb4c98 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
2019-05-31 14:17:13 -04:00
John Kessenich
137e071ca4
Merge pull request #1740 from ewerness-nv/callableincoming
Callables shouldn't have incoming ray flags
2019-03-27 16:19:05 +07:00
Daniel Koch
83170e3f7a 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.
2019-03-26 13:45:33 -04:00
Eric Werness
659060b90a Callables shouldn't have incoming ray flags 2019-03-25 17:09:13 -07:00
Laurie
e442a03897 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.
2019-03-19 08:49:27 +07:00
Jeff Bolz
4605e2ed2b Implement GL_NV_cooperative_matrix 2019-02-25 23:42:59 -06:00
Sahil Parmar
3958927a59 Add missing support for gl_MeshViewCountNV/gl_MeshViewIndicesNV in task shaders 2019-02-07 14:28:12 -08:00
nicebyte
c28369b75f Add support for GL_EXT_YUV_target 2019-01-29 13:17:47 -08:00
Sahil Parmar
6b9a28b9cb Add extension checks for NV block member builtins 2019-01-23 16:24:32 -08:00
John Kessenich
28be4543cd Infrastructure: Generalize and broaden per-variable extension checking. 2019-01-09 22:21:22 +07:00
John Kessenich
b23d232ec5 Licensing. Fixes #958. Add licenes file and update copyrights. 2018-12-14 10:47:35 -07:00
Daniel Koch
5154db5183 Implement GL_EXT_fragment_invocation_density
including SPV generation using SPV_EXT_fragment_invocation_density.
This is an alias of the functionality in SPV_NV_shading_rate, and thus in some
cases we can only have one set of the tokens present (switch statements), so
we have picked the EXT version. This required updating the expected test
results for SPV_NV_shading_rate.

Also updated the known-good for spirv-headers so that the validator in
spirv-tools knows about the new extension.
2018-11-26 10:01:58 -05:00
Ashwin Lele
ff1783db87 Multiple features and misc fixes for final raytracing non experimental version. 2018-10-31 07:55:24 -07:00
Sahil Parmar
035cbbe3d0 Allow redeclaration of builtin interface blocks in mesh shader
Apart from allowing redeclaration of gl_MeshPerVertexNV and gl_MeshPerPrimitiveNV blocks, this change also -
- Resize clip/cull perview distances based on static index use
- Error out use of both single-view and per-view builtins
- Add new gtests with redeclared blocks and edit existing test output
- Fix couple of typos
2018-10-04 16:39:18 -07:00
Sahil Parmar
95e2d4ec02 Add ES 320 support and additional error checks for SPV_NV_mesh_shader
- Add ES 320 support
- Error out use of perprimitiveNV for non mesh/fragment shaders
- Error out use of mesh/task shaders w/o use of NV_mesh_shader
- Error out use of NV_mesh_shader for non task/mesh shaders
- Error out use of perviewNV for non mesh shaders
- Error out use of taskNV for non mesh/task shaders
- Add test case for mesh shader with ES 320 profile
2018-09-25 13:45:32 -07:00
Chao Chen
5b2203db04 Add-support-for-SPV_NV_shading_rate 2018-09-19 13:07:43 -07:00
Chao Chen
b50c02ef53 Add-support-for-SPV_NVX_raytracing 2018-09-19 13:07:43 -07:00
Chao Chen
3c3669904c Add-support-for-SPV_NV_mesh_shader 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
Chao Chen
beae2251b7 Add-support-for-SPV_NV_compute_shader_derivatives 2018-09-19 13:07:42 -07:00
Chao Chen
9eada4b971 Add-support-for-SPV_NV_fragment_shader_barycentric 2018-09-19 13:07:42 -07:00
Norbert Garnys
dad0c1bed0 Add GL_EXT_shader_atomic_int64 2018-09-13 15:34:26 +02:00
Jeff Bolz
36831c9bad GL_KHR_memory_scope_semantics 2018-09-06 20:36:14 -05:00
otakuto
d03da06ac1 Remove execute permissions 2018-08-07 03:16:20 +09:00
Alex Smith
e47bfaedf6 Add support for GL_EXT_samplerless_texture_functions 2018-07-01 10:58:53 +01:00
John Kessenich
2a805d9cea Revert "GLSL: Fix #1279: refract does not have a double-type eta."
This reverts commit ebec909487b8c44a8c28b40c9899857593cc9bb5.

Khronos decided glslang was originally correct, and the specifications
are incorrect.
2018-06-19 09:43:09 -06:00
John Kessenich
ebec909487 GLSL: Fix #1279: refract does not have a double-type eta. 2018-05-17 10:43:21 -06:00
John Kessenich
9cf275bb9e Build: Add missing break statements. Fixes #1052. 2018-04-26 14:12:29 -06:00