It can't be safely used unilaterally on other stages, since that will
result in output/input mismatches between stages. They arn't
having their output variables eliminated accordingly.
The glslang cmake build system installs static libraries in addition to
the dynamic glslang library, which are required when used in a package
that uses glslang when calling find_package().
Distributions such as openSUSE (and perhaps others) use a "shared only"
strategy, which conflicts with the current state of the glslang build
system.
The static libraries mentioned are already all included in glslang and
thus not needed. With this commit, these will no longer install the
associated cmake support files when glslang is built shared.
At least on openSUSE, the usual installation location for cmake support
files is ${MAKE_INSTALL_LIBDIR}/cmake/<name>
$ find /usr/lib64 -name '*.cmake' | grep /cmake/ | wc -l
834
$ find /usr/lib64 -name '*.cmake' | grep -v /cmake/ | wc -l
8
which is also used by glslang with these changes.
Since 12e27e17de, it was assumed that the
MINGW_HAS_SECURE_API macro was unconditionally defined. This is not
always the case, and GCC produces -Wundef warnings when that happens.
Fix this, by first checking if MINGW_HAS_SECURE_API is defined, and if
so, also check that it does not evaluate to zero.
As a drive-by, place parentheses around _MSC_VER for consistency.
This bug got introduced as part of EXT_mesh_shader changes 228c672
Also updated barycentric test cases to add coverage for multiple pervertexEXT array inputs
gl_SubGroupARB was being correctly declared as an Input variable in
Vulkan but it was missing the Flat decoration, which made spirv-val emit
the VUID-StandaloneSpirv-Flat-04744 validation error with shaders using
that built-in.
since we are changing the type before the visitBinary now, we need to be
comparing against the new type.
Previous test cases worked since the 'unitType' was a shallow copy and
ended up getting updated in some cases to match the new type, but not all.
Added following updates to GL_EXT_mesh_shader implementation:
1. Added SPIRV and GLSL test cases
2. Added checks to ensure NV and EXT mesh shader builtins cannot be used interchangeably.
3. Updated the language name by removing the postfix "NV" to MeshShader and TaskShader.
4. Added checks for grammar checking to comply with the spec.
5. Added gl_NumWorkGroups builtin to Mesh shader
6. Fixed data type of gl_PrimitiveLineIndicesEXT and gl_PrimitiveTriangleIndicesEXT
7. Added new constants to the resources table
8. Updates to handle new storage qualifier "taskPayloadSharedEXT"
9. Updated test cases by replacing "taskEXT" with storage qualifier "taskPayloadSharedEXT"
Addressed Review comments
1. Fixed instruction description used by glslang disassembly.
2. Updated OpEmitMeshTasksEXT as per spec update
3. Fixed implementation that errors out if there are more then one taskPayloadSharedEXT varjables.
4. Fixed miscellaneous error logs and removed unwanted code.
SPIRV 1.6 related build failure fixes
- Update SPIRV header to 1.6
- Fix conflict wiht SPIRV 1.6 change, where localSizeId is used for execution mode for mesh/task shaders
Enable SPIRV generated for EXT_mesh_shader to be version 1.4
GL_EXT_mesh_shader: Add checks for atomic support and corresponding test cases
* Avoid double-free in functions cloned for vulkan relaxed mode
When rewriting function calls atomicCounterIncrement and
atoicCounterDecrement, clone the parameters so that the TParameter
'type' field is cloned. This avoids double-free when both the original
and transformed functions are deleted by the parser.
Fixes a ubsan failure.
Previously, GL_KHR_ray_tracing was a required extension to generate
OpConvertUToAccelerationStructureKHR conversion instructions from uint64
and uvec2. However, both GL_KHR_ray_tracing and GL_KHR_ray_query should
provide this construction.
Change-Id: I6564c127fd28d9b527d334958a5adc168f5cdd9a
These were defined backwards to the usual convention.
#if GLSLANG_VERSION_GREATER_THAN(11, 10, 0)
This reads as "if glslang version is greater than 11.10.0" to any
reasonable sane programmer, and should therefore expand to
"glslang_version > macro_argument".
Yet the check it references was actually written as "macro_argument >
glslang_version", thus expressing the completely opposite condition of
"if glslang version is *less than* 11.10.0". This is definitely
backwards and extremely, dangerously surprising behavior to any
programmer familiar with such version macros.
I'm not sure if anybody actually ever used them. I certainly didn't, on
account of them being backwards. I could not find a single reference to
them on GitHub (other than in copies of this header) - every project I
found just used the GLSLANG_VERSION_MAJOR etc. macros directly.