- 07 Apr, 2017 4 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
HLSL: cast bracket dereference index to int type if not.
-
steve-lunarg authored
HLSL can index arrays using operator[] with non-integer types, and inserts a conversion to a uint if needed.
-
- 06 Apr, 2017 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
HLSL: allow non-vec3 tessellation coordinate declarations
-
- 05 Apr, 2017 2 commits
-
-
John Kessenich authored
Corresponds to the EShMsgHlslOffsets flag in messages. Works for both GLSL and HLSL.
-
steve-lunarg authored
HLSL requires vec2 tessellation coordinate declarations in some cases (e.g, isoline topology), where SPIR-V requires the TessCoord qualified builtin to be a vec3 in all cases. This alters the IO form of the variable to be a vec3, which will be copied to the shader's declared type if needed. This is not a validation; the shader type must be correct.
-
- 04 Apr, 2017 10 commits
-
-
John Kessenich authored
-
Juan Lopez authored
C++11 features remove the dependencies from OS specific code. Changes: - Making WorkList class to have its own mutex instead of the OS specific global one. The new mutex is the one from std library. The OS specific code is also removed. - Using the C++11 std library to handle threads in StandAlone application and enabling concurrent processing on non-windows platforms. - converting the global variable Worklist into local variable workList.
-
John Kessenich authored
-
John Kessenich authored
Somewhat complex due to recognizing a general scalar, but not replicating it for each member to avoid side effects.
-
John Kessenich authored
HLSL: Decompose OpIsFinite to avoid capability restrictions
-
John Kessenich authored
Improves foundation for adding scalar casts. Makes handle/make names more sane, better commented, uses more precise subclass typing, and removes mutual recursion between converting initializer lists and making constructors.
-
John Kessenich authored
HLSL: Support InputPatch variables in patch constant functions
-
steve-lunarg authored
OpIsFinite is not available everywhere: decompose isfinite to !isinf && !isnan.
-
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 5 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.
-