166 Commits

Author SHA1 Message Date
alelenv
09a9f8353e Re-add NV enums for raytracing to prevent build breaks. 2020-03-18 09:30:05 -07:00
Daniel Koch
db32b243ff Add support for GLSL_EXT_ray_tracing
and SPV_KHR_ray_tracing
2020-03-17 20:42:47 -04:00
John Kessenich
965bd4d966
Merge pull request #2038 from corporateshark/c_interface
Implemented C-language interface for glslang
2020-01-24 04:10:09 -07:00
John Kessenich
273d3a5093 SPV/Vulkan: Add support for Vulkan 1.2, which defaults to SPIR-V 1.5. 2020-01-15 00:10:41 -07:00
Sergey Kosarevsky
77405788a2 Public: replaced tabs with spaces 2020-01-08 14:26:44 +03:00
Sergey Kosarevsky
0e65b31641 Added LAST_ELEMENT_MARKER for every enum used in the C interface 2019-12-30 11:11:55 +03:00
Ryan Harrison
7c9accb653 Remove unnecessary semi-colons and add warning about them
These are causing integration issues with Chromium down stream since
it is more strict about these.
2019-10-11 11:25:04 -04:00
John Kessenich
696703800e
Merge pull request #1888 from Roy-AMD/Adjusting-code-interface
Adjusting code interface
2019-10-11 01:56:05 -06:00
Chow
f4b2ba2c27 Reflection will crash when the VS input symbol defines the same name with FS output symbol
[PURPOSE]:
The current process design for Uniform / Block / Pipe IO symbols reflection (during program linking) is as following :

1.1 using a global mapper called 'TNameToIndex' to store all the relationship of name (of symbols) to their indexes (in their own MapIndexToReflection vectors).

1.2 TNameToIndex mapper will be used during program linking and helps to check and merge duplicate symbols within each stage ( Uniform, Block and Pipe IO)

1.3 Different types of symbols will have their own index mapping storage. All those symbols will share TNameToIndex as a general searching mapper.

1.4 Only IN in first stage and OUT in last stage will be dealed within traversing functions.

Now, here we meet those problems:

2.1 In and Out variables for pipelines are mapping to different MapIndexToReflection vector (ioItems), but they may still have same names within the general symbol search mapper : TNameToIndex.

2.2 Then, when there are same symbols of IN in VS and OUT in FS, TNameToIndex could not tell the difference because it only stores one local index for one symbol (1:1) as a pair of KeyValue.

[What fixed]:

Seperate I/O from other symbols like Uniform and Block (it is wrong to keep them all in TNameToIndex), and save in new searching mappers called pipeInNameToIndex and pipeOutNameToIndex.

Expose new top-level functions defined as getReflectionPipeIOIndex and getPipeIOIndex for users who need to query Pipe I/O information (As they may reach those things through getUniformIndex and getReflectionIndex now, which is a confused way.)

As there are 2 mappers for above symbols, users needs to input second argument when they wanna reach those pipe I/O parameters, that's also why we need to modify GET functions either.

[Test Case]:

The shader is as following:

######### VS ############
layout(location = 0) in vec4 g_position;
layout(location = 1) in vec4 g_color;
out StageData {
vec4 color;
} g_vs_out;
void main() {
gl_Position = g_position;
g_vs_out.color = g_color;
}

########### FS #############
in StageData {
vec4 color;
} g_fs_in;
layout(location = 0) out vec4 g_color;
void main() {
g_color = g_fs_in.color;
}
2019-09-18 14:04:29 +08: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
Roy
b69e8f3aca Adjusting code interface
glslang/include/intermediate.h -> Add a new interface to set TIntermBranch's expression.

glslang/include/Types.h -> Add interface to set Type's basicType and add interface to get basicType form a TSampler.

glslang/MachineIndependent/intermediate.cpp -> Part of the code in createConversion been encapsulating as a new function called buildConvertOp

glslang/MachineIndependent/localintermediate.h -> Export createConversion and
buildConvertOp as a public function

glslang/Public/ShaderLang.h -> Add interface to get shader object and shader source.
2019-09-02 15:01:06 +08:00
John Kessenich
df1d4ccf5f ESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V. 2019-08-28 02:51:38 -06:00
John Kessenich
efd47a8fae Documentation: Provide more detail in setting up the environment. 2019-08-28 02:25:26 -06:00
John Kessenich
c817600491 Bump version. 2019-08-21 11:12:43 -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
b6d3ee5aca Web: Turn off bracket-style attributes, reflection, and IO mapping. 2019-08-20 23:21:55 -06:00
John Kessenich
d4ed5158d1 Web: Remove a few additional HLSL constructs with ENABLE_HLSL.
Saves about 3K.
2019-08-20 23:21:55 -06:00
Canon lee
1247baa678 Merge branch 'sync' into automapping-opengl-location
Sync code from KhronosGroup/glslang.
2019-07-26 00:47:16 +08:00
John Kessenich
e5c394bcba Standalone: Fix #1814: Check that linkage was specified for reflection. 2019-07-02 09:47:42 -06:00
John Kessenich
605afc7b1b SPV: Add a switch for favoring non-NaN operands in min, max, and clamp. 2019-06-17 23:33:09 -06:00
Roy
a137d2ba86 Add interface symbol and uniform symbol location auto mapping for OpenGL shader. 2019-06-06 17:54:04 +08:00
John Kessenich
08e01e79c5 Bump version and revision. 2019-05-10 00:34:10 -06:00
Christoph Kubisch
55ba3eaf89 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
2019-04-13 22:18:16 +02:00
baldurk
1905069857 Add option to unwrap I/O block aggregates in reflection
* We follow similar rules to uniform block exploding.
2019-02-11 11:53:52 +00:00
John Kessenich
d83344fc4e
Merge pull request #1684 from baldurk/reflection-interface-improve
Opt-in improvements to reflection interface
2019-02-09 12:59:30 +07:00
baldurk
4513df9175 Reflow for better readability 2019-02-08 10:48:48 +00:00
John Kessenich
377bccb143 Build: Fix #1665: remove __fastcall 2019-02-07 23:28:37 -07:00
baldurk
a972e73ad7 Add option to reflect all block members, inactive or active.
* The stages mask is more fine-grained, and each variable or block's mask
  indicates which stages it's active in.
2019-02-04 12:02:59 +00:00
baldurk
657acc0c40 Add option to reflect buffer blocks & variables separately to uniforms
* Also note the uniform indices of atomic counter buffers
2019-02-04 12:02:59 +00:00
baldurk
4a2aa82236 Reflect array stride, top-level array stride, and block member count 2019-02-04 12:02:59 +00:00
baldurk
0af5e3e346 Reflect pipeline outputs as well as inputs, optionally from other stages
* We add an option to reflect inputs from other stages than vertex, if only a
  later subset of the stages is linked into the program.
2019-02-04 12:02:59 +00:00
baldurk
edf8212ab8 Add an option to report array variables with trailing [0] suffix
* This is as expected by ARB_program_interface_query
2019-02-04 11:21:09 +00:00
baldurk
15c37f79a9 Include array index in reflected uniform names more consistently
* This comes from the resolution of issues 4, 5 & 6 in
  ARB_program_interface_query, stating that uniform buffers should have their
  members expanded out as normal and arrays should have elements added.
* If a buffer block has a large array e.g. [10000] we don't want to iterate over
  every array element. Instead we should only expand out the first [0] element,
  then expand as normal from there.
* The array name should still be appended with [0] to indicate that it's an
  array.
2019-02-04 11:21:09 +00:00
baldurk
6d47785825 Add options to control how reflection information is built 2019-02-04 11:21:09 +00:00
baldurk
1dc5dcf0a5 Move TObjectReflection into public interface to clean up reflection
* Forwarding functions are left to preserve source compatibility with code using
  the old queries.
2019-02-04 11:21:07 +00:00
John Kessenich
b23d232ec5 Licensing. Fixes #958. Add licenes file and update copyrights. 2018-12-14 10:47:35 -07:00
Rémi Verschelde
ebfd91a719 Remove Unix executable permission from text files 2018-12-10 10:49:16 +01:00
John Kessenich
bd1c1831d5 Manually merge ClemensRognerSD-dx9-sampler and resolve conflicts. 2018-12-07 18:38:26 -07:00
John Kessenich
1a5e3a9ba6 Bump minor version. 2018-11-16 10:02:18 -07:00
John Kessenich
8717a5d39a SPV/Standalone: Support specifying arbitrary versions of SPIR-V. 2018-10-26 10:16:47 -06:00
Neil Roberts
b0f3d794c8 Add an option to set the base uniform location
This will be used to generate uniform locations with --aml
2018-10-02 12:15:22 +02:00
Neil Roberts
16f53474c8 Add a command-line option to override uniform locations 2018-10-02 12:15:22 +02:00
Jeff Bolz
27f5db0537 Remove NV_EXTENSION ifdefs from ShaderLang.h 2018-09-26 09:03:57 -05:00
John Kessenich
8751c13ce2 Bump minor version. 2018-09-19 16:50:05 -06: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
John Kessenich
546b78854a Printing preprocessed shaders (not a supported path): Fix #1490: strings
Put quote marks around strings, due to a change in how tokenization works.
2018-09-10 11:42:16 -06:00
John Kessenich
1ca0f8e8eb Bump version and revision. 2018-09-07 09:07:03 -06:00
otakuto
d03da06ac1 Remove execute permissions 2018-08-07 03:16:20 +09:00
dmpakas
f556e5da26 Reflection exposes the Shader Stages where a Uniform is present 2018-07-10 18:25:48 +03:00