- 18 Sep, 2019 1 commit
-
-
Chow authored
[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; }
-
- 16 Sep, 2019 5 commits
-
-
John Kessenich authored
Branch to support SPIR-V 1.5 changes
-
John Kessenich authored
-
John Kessenich authored
The generalization to addIncorporatedExtension() also fixed a 1.3 corner case with SPV_KHR_16bit_storage.
-
John Kessenich authored
Add flags for local size values ( compute shader )
-
Chow authored
Purpose : According to GLSL SPEC 4.6 ( 4.4.1.4 Compute Shader Inputs), for compute shader input qualifiers, we should declare such qualifiers with same values in the same shader (local_size_x, y and z). "If such a layout qualifier is declared more than once in the same shader, all those declarations must set the same set of local work-group sizes and set them to the same values; otherwise a compile-time error results." Why this fix: If we manually set "local_size_x = 1" and directly following a declaration like "local_size_x = 2", this would not be detected. That is because currently we treat all the '1' as default value and could not restrictly detect whether those are default values. Test case: ...... layout(local_size_x=1) in; layout(local_size_x=2) in; ...... So I add test cases for this fix: 1. set local_size_y = 1 => success 2. set local_size_y = 2 => error 3. set local_size_y = 1 => success
-
- 13 Sep, 2019 1 commit
-
-
John Kessenich authored
-
- 12 Sep, 2019 1 commit
-
-
John Kessenich authored
Comment out unused params; Fix type warning.
-
- 11 Sep, 2019 2 commits
-
-
John Kessenich authored
Fix incorrect function prototypes of 64-bit findLSB/findMSB
-
Dan Sinclair authored
-
- 10 Sep, 2019 1 commit
-
-
Dan Sinclair authored
-
- 09 Sep, 2019 1 commit
-
-
Rex Xu authored
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)
-
- 05 Sep, 2019 2 commits
-
-
John Kessenich authored
The order of error checking was not quite being correct (maybe there is no correct ordering, when many checks must be done and they affect each other). So, check for block-name reuse twice.
-
John Kessenich authored
Update spirv-tools and spriv-headers known good.
-
- 04 Sep, 2019 1 commit
-
-
Greg Fischer authored
-
- 03 Sep, 2019 1 commit
-
-
John Kessenich authored
Code refine
-
- 02 Sep, 2019 3 commits
- 30 Aug, 2019 2 commits
-
-
John Kessenich authored
Also fixes, in practice, https://github.com/KhronosGroup/GLSL/issues/83. When the specification language is correctly created, glslang can be revisited for correctness. In the meantime, this seems like the best "bug" to have relative to the specification. Memory qualifiers are only relevant to parameters when they apply to what the argument points to, as otherwise the argument is copied. This leaves the fix from #1870 in place, and then more correctly ignores memory qualifiers when something will be passed by copy.
-
John Kessenich authored
-
- 29 Aug, 2019 1 commit
-
-
John Kessenich authored
Initialize variable to avoid uninitialized variable warnings in Clang
-
- 28 Aug, 2019 5 commits
-
-
Ryan Harrison authored
-
Ryan Harrison authored
In the current version of the code on non-debug builds these cases will fallthrough, since assert is a no-op, and eventually make a call passing in |op| which hasn't been initialized. clang is currently throwing a warning about this behaviour when integrating downstream. This patch changes the behaviour, so that in any branch that has an assert now has a return nullptr, to indicate failure after it and avoid the uninitialized variable usage.
-
John Kessenich authored
GL_NV_integer_cooperative_matrix support
-
John Kessenich authored
-
John Kessenich authored
-
- 27 Aug, 2019 3 commits
-
-
John Kessenich authored
BUILD.gn: Add missing HLSL files.
-
Corentin Wallez authored
-
John Kessenich authored
Dereference any array type before expanding root-level SSBO members
-
- 26 Aug, 2019 4 commits
-
-
John Kessenich authored
GN build (for Chromium): enable HLSL in dependents.
-
Corentin Wallez authored
The previous fix for this only enabled HLSL internally in glslang which means that dependent using HLSL, for example shaderc, failed compilation.
-
baldurk authored
If we don't do this then we get reflection output like so: ArrayedBind[0].a.a: offset 0, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].a.b: offset 4, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].b.a: offset 4, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].b.b: offset 8, type 1406, size 1, index 4, binding -1, stages 0 ArrayedBind[0].b: offset 4, type 1406, size 1, index 4, binding -1, stages 1 When the outer reflection loop that calls blowUpActiveAggregate incorrectly iterates over the struct members.
-
John Kessenich authored
GN build (for Chromium): enable HLSL
-
- 23 Aug, 2019 2 commits
-
-
David Neto authored
-
Jeff Bolz authored
-
- 22 Aug, 2019 4 commits
-
-
John Kessenich authored
-
John Kessenich authored
GLSL: Inherit memory qualifiers, both declaratively and in execution.
-
John Kessenich authored
Fixes #1870, probably others.
-
John Kessenich authored
Fix conformance with -Wextra-tokens
-