- 31 Mar, 2017 9 commits
-
-
steve-lunarg authored
-
John Kessenich authored
This reverts commit 1dd65ca3, reversing changes made to 4960baaf.
-
John Kessenich authored
HLSL: support per control point patch const fn invocation
-
John Kessenich authored
HLSL: Fix #804: crash on empty sequence node passed to intrinsic expansions
-
steve-lunarg authored
-
steve-lunarg authored
The SPIR-V generator had assumed tessellation modes such as primitive type and vertex order would only appear in tess eval (domain) shaders. SPIR-V allows either, and HLSL allows and possibly requires them to be in the hull shader. This change: 1. Passes them through for either tessellation stage, and, 2. Does not set up defaults in the domain stage for HLSl compilation, to avoid conflicting definitions.
-
John Kessenich authored
HLSL: allow length() on scalars
-
John Kessenich authored
-
John Kessenich authored
Covers if(cond), while(cond), do-while(cond), for(;cond;), and (cond ? :). Fixes #778.
-
- 30 Mar, 2017 7 commits
-
-
John Kessenich authored
Unknown how extensive the semantics need to be yet. Need real feedback from workloads. This is just done as part of unifying it with the class/struct namespaces and grammar productions.
-
steve-lunarg authored
HLSL HS outputs a per ctrl point value, and the DS reads an array of that type. (It also has a per patch frequency). The per-ctrl-pt frequency is arrayed on just one side, as opposed to SPIR-V which is arrayed on both. To match semantics, the compiler creates an array behind the scenes and indexes it by invocation ID, assigning the HS return value to it.
-
steve-lunarg authored
-
steve-lunarg authored
SPIR-V requires that tessellation factor arrays be size 4 (outer) or 2 (inner). HLSL allows other sizes such as 3, or even scalars. This commit converts between them by forcing the IO types to be the SPIR-V size, and allowing copies between the internal and IO types to handle these cases.
-
steve-lunarg authored
This PR emulates per control point inputs to patch constant functions. Without either an extension to look across SIMD lanes or a dedicated stage, the emulation must use separate invocations of the wrapped entry point to obtain the per control point values. This is provided since shaders are wanting this functionality now, but such an extension is not yet available. Entry point arguments qualified as an invocation ID are replaced by the current control point number when calling the wrapped entry point. There is no particular optimization for the case of the entry point not having such an input but the PCF still accepting ctrl pt frequency data. It'll work, but anyway makes no so much sense. The wrapped entry point must return the per control point data by value. At this time it is not supported as an output parameter.
-
John Kessenich authored
-
John Kessenich authored
-
- 29 Mar, 2017 5 commits
-
-
John Kessenich authored
HLSL: Fix an issue of frexp().
-
John Kessenich authored
Don't emit NV-specific interface members if NV extensions are disabled.
-
Rex Xu authored
-
Rex Xu authored
The "exp" parameter is floating-point type in HLSL intrinsic while it is integer type in GLSL built-in function.
-
Rex Xu authored
-
- 28 Mar, 2017 1 commit
-
-
John Kessenich authored
-
- 25 Mar, 2017 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
- 24 Mar, 2017 3 commits
-
-
steve-lunarg authored
-
John Kessenich authored
HLSL: fix crash on empty struct return from entry point
-
steve-lunarg authored
-
- 23 Mar, 2017 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
This allows global initializers to use $Global members.
-
- 22 Mar, 2017 3 commits
-
-
John Kessenich authored
-
John Kessenich authored
Thanks to @steve-lunarg for his input and discussions on handling member functions.
-
John Kessenich authored
Another precurser to getting member non-static functions working.
-
- 20 Mar, 2017 4 commits
-
-
John Kessenich authored
HLSL: use prefix for builtin functions names to avoid namespace colli…
-
John Kessenich authored
HLSL: Buffer types should be unsampled.
-
steve-lunarg authored
It would have been possible for globally scoped user functions to collide with builtin method names. This adds a prefix to avoid polluting the namespace. Ideally this would be an invalid character to use in user identifiers, but as that requires changing the scanner, for the moment it's an unlikely yet valid prefix.
-
John Kessenich authored
Still need: pass by reference in SPIR-V and symbol-table level for accessing 'this' members from member functions.
-
- 19 Mar, 2017 3 commits
-
-
John Kessenich authored
-
John Kessenich authored
Also use this to move deferred member-function-body parsing to a better place. This should also be well poised for implementing the 'namespace' keyword.
-
steve-lunarg authored
-
- 17 Mar, 2017 1 commit
-
-
steve-lunarg authored
RWBuffer objects were generating (properly) unsampled resoures, while Buffer objects were not. This fixes that.
-