Commit graph

34 commits

Author SHA1 Message Date
Steve Urquhart
42260d1f6d Add C interface glslang::Version counterpart and version getter function 2024-07-24 18:46:04 -04:00
Andrei Alexeyev
bedbe7481e Expose setGlobalUniform* methods to the C API 2024-07-23 18:26:25 -04:00
Antoine
dc9f6f61ad
Add column to location logs
This option can be enabled using the new --error-column option to the command line utility.
It can also be enabled programatically.
2024-07-19 18:37:58 -04:00
Sharo
d73712b8f6
Add flags for outputting absolute paths for messages (#3467)
Uses std::filesystem to create absolute paths.
Also adds "shaderFileName" to TSinkBase so it can be used during message
outputs.
2024-03-07 19:02:45 -05:00
Alexey Ozeritskiy
84d11c472a Use custom callbacks if they are available in 'i->callbacks' 2023-05-09 10:38:08 -06:00
Greg Fischer
90c5214344 Improve ResourceLimits interface to be more forward compatible
New interface allows users to generate ResourceLimits for interface so
that additions to TBuiltInResource do not break the ABI.

Users should use the glslang-default-resource-limits library and the
Public/ResourceLimits.h header. Similar changes have been made to the
C interface. Use Public/resource_limits_c.h.

Fixes #2822
2022-11-01 12:06:51 -06:00
James0124
573e9849be CInterface: Add preamble support.
Add interface for `TShader::setPreamble`.
2022-10-08 09:33:21 +09:00
Pankaj Mistry
228c67228a GL_EXT_mesh_shader/SPV_EXT_mesh_shader implementation
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
2022-09-01 18:02:21 -07:00
James0124
ea024d2bfc CInterface: Add OpSource support.
Add interface for `TIntermediate::addSourceText` and `TIntermediate::setSourceFile`.
2022-06-07 01:13:21 +09:00
Greg Fischer
f1d286fcc2
Merge pull request #2851 from chaoticbob/version-override
Added GLSL version override functionality and CLI
2022-03-24 17:51:54 -06:00
Greg Fischer
9ebd8ff6c1 Add Vulkan 1.3 support
Also update known goods to Vulkan 1.3 support
Also re-enable SPIR-V 1.6 tests with vulkan1.3 target
Also re-cache SPIRV 1.6 header which somehow regressed back to 1.5
2022-01-26 17:57:31 -07:00
Hai Nguyen
1f10dddac4 Revisions to GLSL version override
- Reverted public function interface changes for C++.
- Added override member variable to TShader.
- Added accessor TShader::setOverrideVersion.
- Reverted changes to tests.
2022-01-01 19:02:14 -05:00
Hai Nguyen
9a98d32366 Added GLSL version override interface and CLI
This change list allows a user to override the GLSL version from the
command line or through the C and C++ interfaces. This will override the
override happens in ProcessDeferred() before DeduceVersionProfile() so
the process should still error out if the version is insufficient for
the shader code.

- Added --glsl-version <version> to CLI.
- Added parameter to route glslVersion as override version to
  preprocessor and parse functions to C++ interface.
- Updated C interface with function to override GLSL version.
2022-01-01 04:31:44 -05:00
Greg Fischer
7a49192d23 Add support for spirv1.6
Add command line support which enables the following behavior:

- Remap discard

  Map discard to DemoteToHelperInvocation for HLSL shaders. Map to
  OpTerminateInvocation for GLSL shaders.

- Decorate HelperInvocation with Volatile

- Use localSizeId for execution mode

  WorkGroupSize is deprecated in spirv1.6

Also update known goods to SPIRV 1.6
2021-12-16 15:01:42 -07:00
Hai Nguyen
58fe3a02b8 Fixed copy/paste error 2021-12-01 12:32:02 -05:00
Hai Nguyen
f66fb40149 Changed Vulkan rules relaxed to use shader options
- Removed vulkan_rules_relaxed from glslang_input_s
- Added GLSLANG_SHADER_VULKAN_RULES_RELAXED to glslang_shader_options_t
- Modified glslang_shader_set_options to handle new enum value
- Corrected enum value for GLSLANG_SHADER_AUTO_MAP_LOCATIONS
2021-12-01 03:55:59 -05:00
Hai Nguyen
b8dfe1348a Vulkan rules relaxed for glslang C interface
- Added vulkan_rules_relaxed flag to glslang_input_t to turn on Vulkan
  rules relaxed during shader creation.
2021-11-30 04:55:25 -05:00
Hai Nguyen
febbeb4f83
Support for automap options and resource binding shift (#2834)
* Support for automap options

- Added glslang_shader_options_t with enums for auto map bindings and
  auto map locations.
- Added options param to glslang_shader_parse.
- Modified glslang_shader_parse to call appropriate auto map function if
  auto map bits are set.

* Refactored auto map for C interface

- Added glslang_shader_set_options to independently set options instead
  of being a param on an existing function.
- Added glslang_program_map_io to call mapIO so auto map location
  actually works.

* Added support for shifting resource bindings

- Added resource binding shift functions to match C++ interface

* Uncommented preprocessor call that was commented out for debugging
2021-11-29 14:23:01 -07:00
Lynne
5ec47530b7 Add support for targeting Vulkan 1.2 in the C API 2021-11-08 10:48:38 +01:00
Ez Diy
1fde85ab96 GLSLANG_EXPORT for C APIs.
Fixes FFI breakage introduced in #2283
2020-08-10 22:26:41 +02:00
Ben Clayton
1a6c8ecb20 C Interface: Split SPIR-V C interface to own file
This breaks a cyclic dependency between the SPIRV and glslang build targets.
2020-06-15 13:22:19 +01:00
Daniel Koch
db32b243ff Add support for GLSL_EXT_ray_tracing
and SPV_KHR_ray_tracing
2020-03-17 20:42:47 -04:00
Travis Fort
fd37e0c0f1 add c wrapper for standalone ResourceLimits and remove that dependency from glslang_c_interface 2020-03-06 10:06:47 -05:00
Travis Fort
bdcfc48466 add c interface support for TBuiltInResource and glslang::DefaultTBuiltInResource 2020-03-05 16:05:07 -05:00
Sergey Kosarevsky
a7ff36e6bd Fix for #2075: removed DefaultTBuiltInResource from glslang_c_interface.cpp 2020-02-28 02:18:37 +03:00
David Neto
4bb910cb74 Avoid enum-compare warning 2020-02-06 05:43:43 -05:00
John Kessenich
19ec0d2ff9 Build: Fix more build warnings caused by PR #2038.
Revisit fix for #2062 for consistency with this commit.
2020-01-27 10:16:25 -07:00
Sergey Kosarevsky
e33f4e7bbb CInterface: replaced tabs with spaces 2020-01-08 14:25:56 +03:00
Sergey Kosarevsky
6944b38a78 CInterface: added static asserts to compare C/C++ enums 2019-12-30 11:13:16 +03:00
Sergey Kosarevsky
b80a63a0ba CInterface: replaced SH_ prefix with GLSLANG_ 2019-12-26 21:17:37 +03:00
Sergey Kosarevsky
d7f09317f7 CInterface: added glslang_program_SPIRV_get_ptr() 2019-12-25 01:01:06 +03:00
Sergey Kosarevsky
e9ddba8fd8 CInterface: added _BIT suffix to glslang_messages_t and glslang_reflection_options_t, fixed const-correctness 2019-12-25 00:05:41 +03:00
Sergey Kosarevsky
ca593a98f9 CInterface: reformatted according to .clang-format rules 2019-12-25 00:00:23 +03:00
Sergey Kosarevsky
8cded6ccb9 Added original glslang_c_interface implementation by Viktor Latypov 2019-12-24 23:53:05 +03:00