- 13 Jan, 2017 1 commit
-
-
John Kessenich authored
Since EOpMatrixSwizzle is a new op, existing back-ends only work when the front end first decomposes it to other operations. So far, this is only being done for simple assignment into matrix swizzles.
-
- 12 Jan, 2017 3 commits
-
-
John Kessenich authored
This partially addressess issue #670, for when the matrix swizzle degenerates to a component or column: m[c], m[c][r] (where HLSL swaps rows and columns for user's view). An error message is given for the arbitrary cases not covered. These cases will work for arbitrary use of l-values. Future work will handle more arbitrary swizzles, which might not work as arbitrary l-values.
-
John Kessenich authored
This encapsulates where the string could overflow, removing 40 lines of fragile code. It also improves handling of numbers that are too long. There are a couple of open issues that could related to this function being more rational (locale dependence, 1.#INF).
-
John Kessenich authored
add other builtins to interstage IO
-
- 11 Jan, 2017 3 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
Includer interface change to support full include semantics (requires downstream changes)
-
- 10 Jan, 2017 1 commit
-
-
John Kessenich authored
Add a CMake option to disable compilation of HLSL input support.
-
- 09 Jan, 2017 3 commits
-
-
Alex Szpakowski authored
Matches existing options.
-
steve-lunarg authored
(Still adding tests: do not commit) This fixes PR #632 so that: (a) The 4 PerVertex builtins are added to an interface block for all stages except fragment. (b) Other builtin qualified variables are added as "loose" linkage members. (c) Arrayness from the PerVertex builtins is moved to the PerVertex block. (d) Sometimes, two PerVertex blocks are created, one for in, one for out (e.g, for some GS that both reads and writes a Position) -
Alex Szpakowski authored
-
- 08 Jan, 2017 4 commits
-
-
John Kessenich authored
Address several compiler warnings
-
Alex Szpakowski authored
Reorder initializer fields to match variable declaration order (or vice versa) for several class constructors.
-
Alex Szpakowski authored
-
Alex Szpakowski authored
-
- 06 Jan, 2017 6 commits
-
-
John Kessenich authored
-
John Kessenich authored
Any previous use would only be for "", which would probably mean changing include(...) -> includeLocal(...) See comments about includeLocal() being an additional search over includeSystem(), not a superset search. This also removed ForbidIncluder, as - the message in ForbidIncluder was redundant: error results were already returned to the caller, which then gives the error it wants to - there is a trivial default implementation that a subclass can override any subset of (I still like abstract base classes though) - trying to get less implementation out of the interface file anyway -
John Kessenich authored
This is versus a variety of file-related language, designated, requested, etc. Will simplify diffs for next commit.
-
John Kessenich authored
-
John Kessenich authored
- fixed ParseHelper.cpp newlines (crlf -> lf) - removed trailing white space in most source files - fix some spelling issues - extra blank lines - tabs to spaces - replace #include comment about no location
-
John Kessenich authored
PP: #include: simplify the different paths out of #include.
-
- 05 Jan, 2017 5 commits
-
-
John Kessenich authored
- some paths didn't release 'res' - token is always '\n' after proper acceptance of the directive itself, so no need to test it, change it to '\n', etc. - assuming setCurrentColumn(0) is not needed unless there are header tokens, but not clear why it is ever needed Note: much of the simplified code read as if the included header tokens had actually been processed, versus queued up for processing; maybe that explains some things.
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
HLSL: allow destination swizzles when writing RWTexture/RWBuffer
-
John Kessenich authored
This also makes it match how GLSL handles the same thing.
-
- 04 Jan, 2017 2 commits
-
-
John Kessenich authored
HLSL: allow type keywords as identifiers, and add half type
-
John Kessenich authored
HLSL: inter-stage structure splitting.
-
- 03 Jan, 2017 7 commits
-
-
John Kessenich authored
Add D3DCOLORtoUBYTE4 decomposition
-
John Kessenich authored
HLSL: default function parameters
-
steve-lunarg authored
-
John Kessenich authored
Also correctly test and handle missing newline.
-
steve-lunarg authored
Reads and write syntax to UAV objects is turned into EOpImageLoad/Store operations. This translation did not support destination swizzles, for example, "mybuffer[tc].zyx = 3;", so such statements would fail to compile. Now they work. Parial updates are explicitly prohibited. New test: hlsl.rw.swizzle.frag
-
John Kessenich authored
-
John Kessenich authored
-
- 02 Jan, 2017 1 commit
-
-
John Kessenich authored
-
- 30 Dec, 2016 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
- 29 Dec, 2016 1 commit
-
-
steve-lunarg authored
This PR adds support for default function parameters in the following cases: 1. Simple constants, such as void fn(int x, float myparam = 3) 2. Expressions that can be const folded, such a ... myparam = sin(some_const) 3. Initializer lists that can be const folded, such as ... float2 myparam = {1,2} New tests are added: hlsl.params.default.frag and hlsl.params.default.err.frag (for testing error situations, such as ambiguity or non-const-foldable). In order to avoid sampler method ambiguity, the hlsl better() lambda now considers sampler matches. Previously, all sampler types looked identical since only the basic type of EbtSampler was considered.
-
- 27 Dec, 2016 1 commit
-
-
steve-lunarg authored
HLSL allows type keywords to also be identifiers, so a sequence such as "float half = 3" is valid, or more bizzarely, something like "float.float = int.uint + bool;" There are places this is not supported. E.g, it's permitted for struct members, but not struct names or functions. Also, vector or matrix types such as "float3" are not permitted as identifiers. This PR adds that support, as well as support for the "half" type. In production shaders, this was seen with variables named "half". The PR attempts to support this without breaking useful grammar errors such as "; expected" at the end of unterminated statements, so it errs on that side at the possible expense of failing to accept valid constructs containing a type keyword identifier. If others are discovered, they can be added. Also, half is now accepted as a valid type, alongside the min*float types.
-