1584 Commits

Author SHA1 Message Date
John Kessenich
854fe24786 HLSL: Fix #747: accept 'struct' in front of previously user-defined type name. 2017-03-02 14:30:59 -07:00
John Kessenich
0479437a5c SPV: Fix #739: OpSelect can only operate on scalars and vectors. 2017-03-01 13:49:11 -07:00
John Kessenich
173c0c01a6 Merge pull request #744 from realitix/sanitize_sh_link
Sanitize ShaderLang.h
2017-03-01 13:17:24 -07:00
John Kessenich
9c3f7b60ae Merge pull request #746 from dgkoch/dgkoch_build_fixes
Fix build warnings on some platforms
2017-03-01 13:14:51 -07:00
John Kessenich
efeefd9833 Build: Another fix for issue #718: implement the hidden methods of tFinalize. 2017-03-01 13:12:26 -07:00
Daniel Koch
197082ca34 Fix build warnings on some platforms
Use an explicit cast from size_t to int to avoid errors like the following:
glslang\glslang\MachineIndependent\preprocessor\Pp.cpp(1053) : error C2220: warning treated as error - no 'object' file generated
glslang\glslang\MachineIndependent\preprocessor\Pp.cpp(1053) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data

affects Pp.cpp, hlslParseHelper.cpp.

Initialize local variable to get rid of warningsa about potentially
uninitialized variables:
glslang\hlsl\hlslparsehelper.cpp(3667) : error C2220: warning treated as error - no 'object' file generated
glslang\hlsl\hlslparsehelper.cpp(3667) : warning C4701: potentially uninitialized local variable 'builtIn' used

affects hlslParseHelper.cpp
2017-03-01 09:50:42 -05:00
Jean-Sebastien Bevilacqua
bc3fdcc8bd Sanitize ShaderLang.h
ShaderLang.h contains declaration for `ShLink` function which is never
defined.

See this grep output:

$grep -Hrn 'ShLink'
glslang/Public/ShaderLang.h:206:SH_IMPORT_EXPORT int ShLink(
glslang/Public/ShaderLang.h:214:SH_IMPORT_EXPORT int ShLinkExt(
glslang/MachineIndependent/ShaderLang.cpp:1268:int ShLinkExt(
2017-03-01 09:23:14 +01:00
John Kessenich
3494d71cfa PP: Fix issue #738: don't assert on characters within a string. 2017-02-28 19:39:51 -07:00
John Kessenich
fb22b69fc6 PP: Partially address issue #738: handle premature end of argument when token pasting. 2017-02-28 18:06:39 -07:00
John Kessenich
5a042c0686 GLSL: Fix #741: rationalize per-block vs. per-member offset checking. 2017-02-28 14:13:48 -07:00
John Kessenich
69a2c69649 Merge pull request #736 from steve-lunarg/structbuffer-params
HLSL: add structuredbuffer pass by reference in fn params
2017-02-28 13:10:51 -07:00
John Kessenich
b67b4a7072 PP: Address #737: accept 'h'/'H' floating-point suffix more broadly. 2017-02-28 12:58:11 -07:00
John Kessenich
42e33c9bec SPV: Update SPV header to official Rev. 10 of 1.0, and fix the consequences of doing so. 2017-02-27 01:50:28 -07:00
John Kessenich
6c8aaacd28 SPV: Implement new extensions GL_KHX_device_group and GL_KHX_multiview.
These correspond to SPV_KHR_device_group and SPV_KHR_multiview.
Also, bring tests up to date with Khronos internals, and some misc. related changes.
2017-02-27 01:20:51 -07:00
steve-lunarg
dd8287a109 WIP: HLSL: add structuredbuffer pass by reference in fn params
This PR adds the ability to pass structuredbuffer types by reference
as function parameters.

It also changes the representation of structuredbuffers from anonymous
blocks with named members, to named blocks with pseudonymous members.
That should not be an externally visible change.
2017-02-26 11:13:42 -07:00
John Kessenich
4a57dced66 SPV: Handle nested opaque types as function parameters. 2017-02-24 19:22:54 -07:00
steve-lunarg
932bb5cc4e Add reflection queries for thread local size and ssbo auto-binding
New command line option --shift-ssbo-binding mirrors --shift-ubo-binding, etc.

New reflection query getLocalSize(int dim) queries local size, e.g, CS threads.
2017-02-22 09:40:28 -07:00
steve-lunarg
5da1f038d8 HLSL: implement 4 (of 6) structuredbuffer types
This is a partial implemention of structurebuffers supporting:

* structured buffer types of:
*   StructuredBuffer
*   RWStructuredBuffer
*   ByteAddressBuffer
*   RWByteAddressBuffer

* Atomic operations on RWByteAddressBuffer

* Load/Load[234], Store/Store[234], GetDimensions methods (where allowed by type)

* globallycoherent flag

But NOT yet supporting:

* AppendStructuredBuffer / ConsumeStructuredBuffer types
* IncrementCounter/DecrementCounter methods

Please note: the stride returned by GetDimensions is as calculated by glslang for std430,
and may not match other environments in all cases.
2017-02-21 15:51:49 -07:00
David Neto
4c64a40d41 Add override where needed by clang++
Otherwise we get an error when we have both
-Werror and -Winconsistent-missing-override.
This is required for building with NDK r14 betas
2017-02-21 14:41:15 -05:00
John Kessenich
8f674e821e Fix issue #676: emit error message on failure to open spv file. 2017-02-18 09:45:40 -07:00
John Kessenich
0302bdf04a SPV: Fix #723: construct vectors from matrices. 2017-02-17 19:06:21 -07:00
Jason Ekstrand
f44d89a398 Implement GL_EXT_shader_image_load_formatted 2017-02-17 13:36:25 -08:00
chaoc
df3956c50f Implement NVX_multiview_per_view_attributes 2017-02-14 15:04:33 -08:00
t.jung
8bb3ee53c5 added semantic handling and support for remapping variables with semantics
Change-Id: I3c6b5fc1d4f1da6ec6f436fea72849453a13559d
2017-02-14 17:58:37 +01:00
John Kessenich
7225a1cb1e Support align/offset for all versions GLSL/ESSL targeting SPIR-V. 2017-02-13 09:09:04 -07:00
John Kessenich
e4e8f7b7a3 Merge pull request #722 from steve-lunarg/tessellation
Add basic HS/DS implementation.
2017-02-10 18:10:46 -07:00
John Kessenich
9a2733a978 PP, nonfunctional: Properly encapsulate a TokenStream. 2017-02-10 18:03:01 -07:00
steve-lunarg
858c928ac7 Add basic HS/DS implementation.
This obsoletes WIP PR #704, which was built on the pre entry point wrapping master.  New version
here uses entry point wrapping.

This is a limited implementation of tessellation shaders.  In particular, the following are not functional,
and will be added as separate stages to reduce the size of each PR.

* patchconstantfunctions accepting per-control-point input values, such as
  const OutputPatch <hs_out_t, 3> cpv are not implemented.

* patchconstantfunctions whose signature requires an aggregate input type such as
  a structure containing builtin variables.  Code to synthesize such calls is not
  yet present.

These restrictions will be relaxed as soon as possible.  Simple cases can compile now: see for example
Test/hulsl.hull.1.tesc - e.g, writing to inner and outer tessellation factors.

PCF invocation is synthesized as an entry point epilogue protected behind a barrier and a test on
invocation ID == 0.  If there is an existing invocation ID variable it will be used, otherwise one is
added to the linkage.  The PCF and the shader EP interfaces are unioned and builtins appearing in
the PCF but not the EP are also added to the linkage and synthesized as shader inputs.
Parameter matching to (eventually arbitrary) PCF signatures is by builtin variable type.  Any user
variables in the PCF signature will result in an error.  Overloaded PCF functions will also result in
an error.

[domain()], [partitioning()], [outputtopology()], [outputcontrolpoints()], and [patchconstantfunction()]
attributes to the shader entry point are in place, with the exception of the Pow2 partitioning mode.
2017-02-10 16:59:09 -07:00
John Kessenich
b49bb2ca5c PP, nonfunctional: Remove crufty bit-twiddling of tokens. 2017-02-10 13:03:40 -07:00
John Kessenich
8e711b84bd Fix issue #708: token pasting within macro argument expansion. 2017-02-10 10:07:03 -07:00
John Kessenich
0793988697 Merge pull request #707 from KhronosGroup/emit-opSelect
SPV: Emit op select
2017-02-08 17:33:10 -07:00
John Kessenich
f8d0d8c2b8 Address issue #718. Should change which warning is generated, hopefully to a better one. 2017-02-08 17:31:03 -07:00
John Kessenich
8e6c6cef6a SPV: Implement specialization constants for ?:. 2017-02-08 17:07:07 -07:00
John Kessenich
dd40260b63 HLSL: don't do a deepCopy() for typedef, as we still want to share the type graph.
This enables the IO type mapping to work transparently for typedefs.
2017-02-08 13:59:30 -07:00
John Kessenich
65ee230f1c HLSL: Add tests and refine what decorations are passed through per stage/in/out. 2017-02-06 23:13:16 -07:00
John Kessenich
bf47286fe7 HLSL: Move to fine-grained control for defining input/output/uniform IO types. 2017-02-06 23:13:16 -07:00
John Kessenich
727b374fd3 HLSL: Build IO types bottom up, as parsed, and cache the original (IO).
Previously, this was done recursively, per object, and the nonIO version
was cached. This reverses both those approaches.
2017-02-06 23:00:51 -07:00
John Kessenich
88c4464df5 HLSL: Have loose uniforms also go through the makeTypeNonIo() path. 2017-02-06 23:00:51 -07:00
John Kessenich
fbb58a4e0b Build: Fix Linux for older compiler: Use TMap instead of TUndorderedMap. 2017-02-06 23:00:51 -07:00
John Kessenich
abd8dca86d HLSL: Make the entry-point shadow function have non-IO params and return.
This also removes an no longer needed makeTemporary() and rationalizes
makeTypeNonIo()'s interface.
2017-02-06 22:58:32 -07:00
steve-lunarg
5d3023af03 HLSL: Type sanitization: create non-IO types for var decl and fn param/ret
This introduces parallel types for IO-type containing aggregates used as
non-entry point function parameters or return types, or declared as variables.
Further uses of the same original type will share the same sanitized deep
structure.

This is intended to be used with the wrap-entry-point branch.
2017-02-06 22:58:32 -07:00
John Kessenich
0fe106afd2 AST: Have type deepCopy() preserve type graphs as graphs.
Previously, a type graph would turn into a type tree. That is,
a deep node that is shared would have multiple copies made.

This is important when creating IO and non-IO versions of deep types.
2017-02-06 22:58:32 -07:00
John Kessenich
02467d8d94 HLSL: Wrap the entry-point; need to write 'in' args, and support 'inout' args.
This needs some render testing, but is destined to be part of master.

This also leads to a variety of other simplifications.
 - IO are global symbols, so only need one list of linkage nodes (deferred)
 - no longer need parse-context-wide 'inEntryPoint' state, entry-point is localized
 - several parts of splitting/flattening are now localized
2017-02-06 22:58:32 -07:00
John Kessenich
18adbdbbb8 Resolve issue #700: allow initializers on struct members. 2017-02-02 15:16:20 -07:00
John Kessenich
32fd5d26e3 Memory/constructor/warning clean-up. Addresses issue #705. 2017-02-02 14:55:02 -07:00
Benjamin Saunders
5a074532af Install headers
This enables the vulkan loader to be built against an installed glslang.
2017-01-29 17:46:44 -08:00
John Kessenich
62c3e400cf Fix bug from PR #678: NV_EXTENSIONS deleted implicit array sizing. 2017-01-26 22:03:57 -07:00
John Kessenich
82e0e58993 Fix issue #693. Ternary operator on void type. 2017-01-26 15:50:10 -07:00
John Kessenich
c0904c15c2 Merge pull request #690 from ligfx/proper_dependencies
CMake: add target_link_libraries internally
2017-01-26 15:13:27 -07:00
John Kessenich
72754864c1 Merge pull request #694 from mtavenrath/fix_origin_link
Use correct OriginUpperLeft when linking more than one shader.
2017-01-26 10:39:54 -07:00