- 04 Apr, 2017 1 commit
-
-
steve-lunarg authored
Previously, patch constant functions only accepted OutputPatch. This adds InputPatch support, via a pseudo-builtin variable type, so that the patch can be tracked clear through from the qualifier.
-
- 03 Apr, 2017 6 commits
-
-
John Kessenich authored
HLSL: fix GS to work with EP wrapping
-
steve-lunarg authored
The prior implementation of GS did not work with the new EP wrapping architecture. This fixes it: the Append() method now looks up the actual output rather than the internal sanitized temporary type, and writes to that.
-
John Kessenich authored
-
John Kessenich authored
HLSL: handle PCF input to DS in arbitrary argument position
-
steve-lunarg authored
In the hull shader, the PCF output does not participate in an argument list, so has no defined ordering. It is always put at the end of the linkage. That means the DS input reading PCF data must be be at the end of the DS linkage as well, no matter where it may appear in the argument list. This change makes sure that happens. The detection is by looking for arguments that contain tessellation factor builtins, even as a struct member. The whole struct is taken as the PCF output if any members are so qualified.
-
John Kessenich authored
Refactor TType::contains* methods (nonfunctional)
-
- 02 Apr, 2017 1 commit
-
-
steve-lunarg authored
There were many (~8) different places in TType which all knew how to traverse the struct/type hierarchy. There's a need to add another, but I didn't want to duplicate the traversal code again. This is a small refactoring which passes a predicate to a single traverse-and-test method. That also shortens all the containsSomething() methods from 9 lines of body to 1. There are no test differences: it's nonfunctional.
-
- 01 Apr, 2017 1 commit
-
-
John Kessenich authored
HLSL: set combined flag false for Buffer<>
-
- 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 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
Thanks to @steve-lunarg for his input and discussions on handling member functions.
-