- 11 Aug, 2017 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
This prevents potentional sharing from inadvertently affecting other arrays.
-
- 10 Aug, 2017 1 commit
-
-
John Kessenich authored
-
- 09 Aug, 2017 2 commits
-
-
John Kessenich authored
This will help in expanding flattening and reducing splitting.
-
John Kessenich authored
-
- 08 Aug, 2017 1 commit
-
-
John Kessenich authored
-
- 07 Aug, 2017 3 commits
-
-
John Kessenich authored
HLSL: implement #pragma pack_matrix(layout)
-
LoopDawg authored
This adds support for #pragma pack_matrix() to the HLSL front end. The pragma sets the default matrix layout for subsequent unqualified matrices in structs or buffers. Explicit qualification overrides the pragma value. Matrix layout is not permitted at the structure level in HLSL, so only leaves which are matrix types can be so qualified. Note that due to the semantic (not layout) difference in first matrix indirections between HLSL and SPIR-V, the sense of row and column major are flipped. That's independent of this PR: just a factor to note. A column_major qualifier appears as a RowMajor member decoration in SPIR-V modules, and vice versa.
-
John Kessenich authored
Includes related trackLinkage() code removal and name improvements.
-
- 05 Aug, 2017 1 commit
-
-
John Kessenich authored
HLSL: fix qualifier propagation from user struct types to block defin…
-
- 04 Aug, 2017 5 commits
-
-
LoopDawg authored
The HLSL FE tracks four versions of a declared type to avoid losing information, since it is not (at type-decl time) known how the type will be used downstream. If such a type was used in a cbuffer declaration, the cbuffer type's members should have been using the uniform form of the original user structure type, but were not. This would manifest as matrix qualifiers (and other things, such as pack offsets) on user struct members going missing in the SPIR-V module if the struct type was a member of a cbuffer, like so: struct MyBuffer { row_major float4x4 mat1; column_major float4x4 mat2; }; cbuffer Example { MyBuffer g_MyBuffer; }; Fixes: #789 -
John Kessenich authored
This allows removal of isPerVertexBuiltIn(). It also leads to removal of addInterstageIoToLinkage(), which is no longer needed. Includes related name improvements.
-
John Kessenich authored
-
John Kessenich authored
The goal is to flatten all I/O, but there are multiple categories and steps to complete, likely including a final unification of splitting and flattening.
-
John Kessenich authored
-
- 02 Aug, 2017 1 commit
-
-
John Kessenich authored
-
- 01 Aug, 2017 1 commit
-
-
John Kessenich authored
GLSL: Add GLSL 4.60 features
-
- 31 Jul, 2017 7 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
Most of this was obsoleted by entry-point wrapping. Some other is just unnecessary. Also, includes some spelling/name improvements. This is to help lay ground work for flattening user I/O.
-
- 29 Jul, 2017 2 commits
-
-
John Kessenich authored
HLSL: Non-functional: warning fix + remove unused member
-
- 28 Jul, 2017 3 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-
- 27 Jul, 2017 2 commits
-
-
John Kessenich authored
SPV: Memory qualifiers should decorate top-level block members
-
Rex Xu authored
-
- 26 Jul, 2017 3 commits
-
-
John Kessenich authored
HLSL: handle multiple clip/cull semantic IDs
-
LoopDawg authored
HLSL allows several variables to be declared. There are packing rules involved: e.g, a float3 and a float1 can be packed into a single array[4], while for a float3 and another float3, the second one will skip the third array entry to avoid straddling This is implements that ability. Because there can be multiple variables involved, and the final output array will often be a different type altogether (to fuse the values into a single destination), a new variable is synthesized, unlike the prior clip/cull support which used the declared variable. The new variable name is taken from one of the declared ones, so the old tests are unchanged. Several new tests are added to test various packing scenarios. Only two semantic IDs are supported: 0, and 1, per HLSL rules. This is encapsulated in static const int maxClipCullRegs = 2; and the algorithm (probably :) ) generalizes to larger values, although there are a few issues around how HLSL would pack (e.g, would 4 scalars be packed into a single HLSL float4 out reg? Probably, and this algorithm assumes so). -
John Kessenich authored
-
- 25 Jul, 2017 2 commits
-
-
John Kessenich authored
Fix dref explicit LOD form of sample with cube texture arrays
-
LoopDawg authored
The dref parameter was being used as the LOD. Now it it's properly the dref.
-
- 23 Jul, 2017 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
- 21 Jul, 2017 2 commits
-
-
John Kessenich authored
-
John Kessenich authored
HLSL: Fix crash with --resource-set-binding [n] (global form, not per-register form)
-