Commit Graph

1241 Commits

Author SHA1 Message Date
LoopDawg
592860cae5 Add decompositions for some HLSL intrinsics. 2016-06-10 17:11:18 -06:00
John Kessenich
41ebc42926 Merge pull request #335 from jekstrand/sampler-params
SPV: Fix pointer address spaces for sampler function parameters
2016-06-09 20:42:23 -06:00
John Kessenich
077e052a8f HLSL: Implement proper nesting of symbol-table scopes and identifier searching. 2016-06-09 02:03:46 -06:00
John Kessenich
71351de879 HLSL: Add all int/float/bool/uint matrix types, void for functions, and a few others. 2016-06-09 01:33:10 -06:00
Jason Ekstrand
ed15ef1a5b GlslangToSpv: Pass the pointer directly into the client function for opaque types
For opaque types such as samplers, images, and atomic counters, we want to
reference the actual object in the child function.  For a long time, we
used a shadow variable and made a copy of the image/sampler.  In 76d0ac1a,
this was changed to not shadow samplers.  However, this didn't cover all
opaque types and it also didn't get the pointer storage classes right.
This commit fixes both of these issues.

Fixes #324
2016-06-08 17:22:46 -07:00
Jason Ekstrand
228546a8af Types: Add an isOpaque() helper 2016-06-08 17:22:43 -07:00
Jason Ekstrand
c24cc29d37 GlslangToSpv: Properly handle opaque types in TranslateStorageClass 2016-06-08 17:05:19 -07:00
John Kessenich
5022d681d1 Merge pull request #333 from dneto0/defer-capabilities-for-some-struct-members-until-used
SPV: Defer capability decl for ClipDistance, CullDistance, PointSize until…
2016-06-08 10:59:51 -06:00
David Neto
a901ffed40 Defer capability decl for ClipDistance, CullDistance, PointSize until actual use
The compiler will mark struct members with those builtins, but won't
declare the capability until that member is accessed by some executable
instruction.

Test changes:
- spv.430.vert: was missing ClipDistance capability.
- spv.precise.tese: remove TessellationPointSize capability.
2016-06-08 09:30:04 -04:00
John Kessenich
95d85ce0ca Merge pull request #331 from jherico/jherico-patch-1
Build: Fix Ubuntu 16.10 build
2016-06-07 18:07:12 -06:00
Brad Davis
880bf36cac Fix Ubuntu 16.10 build 2016-06-07 16:23:44 -07:00
John Kessenich
71d55c090a Merge pull request #128 from dekimir/clang-format
Infrastructure: Add .clang-format.
2016-06-05 21:46:33 -06:00
John Kessenich
80cb324ff6 Front-end: Fix issue #146: which versions allow double in/out. 2016-06-05 18:52:05 -06:00
Dejan Mircevski
738314fe82 Revert SpvBuilder.* to master versions. 2016-06-05 20:46:33 -04:00
Dejan Mircevski
e592652665 Increase column limit to 120. 2016-06-05 20:45:34 -04:00
Dejan Mircevski
f377f5287b Merge branch 'master' of github.com:KhronosGroup/glslang into clang-format 2016-06-05 20:42:20 -04:00
John Kessenich
133253b6ee Front-end: Fix issue #147: ensure layout(index=N) has N in [0,1]. 2016-06-05 17:25:34 -06:00
John Kessenich
119f8f6906 HLSL: Flesh out the loop grammar and productions. 2016-06-05 15:44:07 -06:00
John Kessenich
0d2b6de45b HLSL: Attribute grammar and if-else grammar/productions. 2016-06-05 12:32:18 -06:00
John Kessenich
21472aee75 HLSL: Finish skeletan of the "statement" grammar. 2016-06-04 11:46:33 -06:00
John Kessenich
1cc1a2813e HLSL: 1) Implement lookahead buffers/stacks for token advance/recede, 2) use it for cast operation.
The grammar now accepts type casts, like "(int)x", but that
has to be disambiguated from "(a + b)", needed deeper lookahead
and backing up than what existed so far.
2016-06-03 16:57:53 -06:00
John Kessenich
080cdc1737 Merge pull request #328 from steve-lunarg/intrinsics
HLSL: Add negative intrinsics tests
2016-06-03 16:55:22 -06:00
LoopDawg
643fcb5b43 Add negative intrinsics tests 2016-06-03 16:28:57 -06:00
John Kessenich
54e3bb8a4e Merge pull request #327 from steve-lunarg/empty-statement-fix
HLSL: Fix for empty statement segfault
2016-06-03 12:20:49 -06:00
LoopDawg
ef764a24b2 Fix for empty statement segfault. 2016-06-03 10:57:03 -06:00
John Kessenich
9f1f818083 Merge pull request #326 from greg-lunarg/greg-mr4
remapper: do not eliminate interface variables in dce
2016-06-03 10:48:12 -06:00
John Kessenich
438bb6093a Merge pull request #322 from steve-lunarg/intrinsics
HLSL: Initial implementation of direct-mapped subset of HLSL intrinsics
2016-06-03 10:47:34 -06:00
GregF
39d5e711a7 remapper: do not eliminate interface variables in dce by default
this is done by counting op_entrypoint as a use/def
2016-06-03 09:57:57 -06:00
LoopDawg
4b67732c13 Initial implementation of direct-mapped subset of HLSL intrinsics with type subset.
This checkin implements about half of the HLSL intrinsics for a subset of their
entire type support (but a useful subset).  The uncommented lines in
TBuiltInParseablesHlsl::identifyBuiltIns shows which are connected.
2016-06-03 08:28:29 -06:00
John Kessenich
85b52f304d Merge pull request #323 from dneto0/mingw-static-link-against-basic-runtimes
Build: For MinGW, statically link exes against basic runtimes
2016-06-02 23:51:45 -06:00
John Kessenich
a5c33d6ffb SPV: Fix issue #320: Fetch needs to extract the image.
GLSL takes a traditional sampler, but SPIR-V wants just the
sampled image, not the combined sampler and image.
2016-06-02 23:47:29 -06:00
David Neto
b37dc0e458 For MinGW, statically link exes against basic runtimes
Avoids the need to ship basic runtimes like libgcc_s_sjlj-1.dll
with the executables.
2016-06-02 14:37:24 -04:00
John Kessenich
98f2b3bfe0 Merge pull request #311 from jherico/debug_postfix
Build: Produce different names for files in debug builds on MSVC
2016-06-01 18:39:18 -06:00
John Kessenich
85b332688b Merge pull request #317 from iostrowsINTEL/double_matrix_fix
SPV: Fix double matrix creation
2016-06-01 18:26:52 -06:00
iostrows
af7f1c8f24 Fix double matrix creation 2016-06-01 16:40:00 +02:00
John Kessenich
548c3adecd Front-end: Complete GL_ARB_compute_shader, previous commit was missing new barriers.
This amends the previous commit, which ommitted barriers in version 420 for compute shader.
2016-05-30 19:38:39 -06:00
John Kessenich
d94c003fb7 Front-end: Complete GL_ARB_compute_shader implementation.
Core compute shaders were working, but the extension wasn't implemented.
2016-05-30 19:29:40 -06:00
John Kessenich
0f5e3ad23c Fix issue #313: Catch internal attempts to modify built-in symbols that don't exist.
Also beefed up support for running compute shaders is #version 420, but this
work is only partially done.
2016-05-29 18:24:31 -06:00
John Kessenich
5a7f0eff69 Merge pull request #230 from dekimir/incresconst
Make two more IncludeResult members const.
2016-05-25 17:43:54 -06:00
John Kessenich
7d8141987c Merge pull request #309 from jekstrand/sampler-params
SPV: Don't shadow sampler parameters when performing function calls
2016-05-25 17:35:54 -06:00
John Kessenich
747c328ce4 Merge pull request #308 from thp/multiple-es-compilation-units
Link: Handle multiple ES profile compilation units for a single shader stage
2016-05-25 17:31:58 -06:00
Jason Ekstrand
76d0ac1a6f SPV: Don't shadow sampler parameters when performing function calls
Fixes #179
2016-05-25 13:49:47 -07:00
Brad Davis
1e194e8613 Produce different names for files in debug builds on MSVC 2016-05-25 13:08:34 -07:00
Thomas Perl
7bfd08d21c Check for linking multiple ES shaders to the same stage 2016-05-25 09:26:43 +02:00
Thomas Perl
0bb546f8ae Fix test case for the "empty" linker test case
The test result should only give one error about linking
ES and non-ES shading language compilation units:

 - empty.frag: No version info, interpreted as 100, ES
 - empty2.frag: No version info, interpreted as 100, ES
 - empty3.frag: Version declared as 110, non-ES

Previously, because the new intermediate is always created
without version/profile information, there would be two
linker errors:

 1.) When merging the new intermediate with empty.frag
 2.) When merging (new intermediate + empty.frag + empty2.frag) with empty3.frag

Now, there is only one error; as the error with merging the
new intermediate with empty.frag has been removed.
2016-05-24 13:24:24 +02:00
Thomas Perl
b40a6d6b40 Use version/profile from first compilation stage
When linking multiple compilation units per shader stage,
the code creates a new intermediate, but fails to set its
version and profile.

This change makes it so that the new intermediate inherits
the version and profile of the first compilation unit, so
that two ES SL compilation units can be combined.
2016-05-24 13:24:24 +02:00
Thomas Perl
63d4794e8e Add test case: Link 2 ESSL fragment shader units 2016-05-24 13:15:01 +02:00
John Kessenich
0c968f9d0e Merge pull request #306 from johnkslang/finish-spec-const-semantics
Vulkan: Finish semantics for what creates spec-const-semantics.
2016-05-23 23:37:39 -06:00
John Kessenich
d82c906378 Vulkan: Finish semantics for what creates spec-const-semantics.
Note: This required adding a new test mode to see the AST for vulkan tests.
This also required reworking some deeper parts of type creation, regarding
when storage qualification and constness is deduced bottom-up or dictated
top-down.
2016-05-23 23:10:18 -06:00
John Kessenich
479b4c7ca6 Merge pull request #305 from steve-lunarg/intrinsics
HLSL: Add base class TParseables for intrinsic / builtin generation.
2016-05-23 17:55:07 -06:00