- Apr 03, 2017
-
-
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)
-
- Apr 02, 2017
-
-
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.
-
- Apr 01, 2017
-
-
John Kessenich authored
HLSL: set combined flag false for Buffer<>
-
- Mar 31, 2017
-
-
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.
-
- Mar 30, 2017
-
-
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
-
- Mar 29, 2017
-
-
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
-
- Mar 28, 2017
-
-
John Kessenich authored
-
- Mar 25, 2017
-
-
John Kessenich authored
-
John Kessenich authored
-
- Mar 24, 2017
-
-
steve-lunarg authored
-
John Kessenich authored
HLSL: fix crash on empty struct return from entry point
-
steve-lunarg authored
-
- Mar 23, 2017
-
-
John Kessenich authored
-
John Kessenich authored
This allows global initializers to use $Global members.
-
- Mar 22, 2017
-
-
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.
-
- Mar 20, 2017
-
-
John Kessenich authored
HLSL: use prefix for builtin functions names to avoid namespace colli…
-
John Kessenich authored
HLSL: Buffer types should be unsampled.
-