Commit Graph

2486 Commits

Author SHA1 Message Date
Piers Daniell
1c5443c693 Add implementation of SPV_EXT_fragment_fully_covered
This implementation uses the GLSL extension
GL_NV_conservative_raster_underestimation to generate the new SPIR-V
FullyCoveredEXT built in.
2017-12-14 07:42:23 -07:00
John Kessenich
e9e0cb60ec Update to latest public headers. 2017-12-14 03:00:44 -07:00
John Kessenich
396de16cfb
Merge pull request #1183 from LoopDawg/builtin-output-array-indirect
HLSL: for split output structs, propagate indirection to builtins.
2017-12-14 01:39:25 -07:00
John Kessenich
69feabc913
Merge pull request #1186 from zeux/master
HLSL: Implement support for RT/Viewport output from VS
2017-12-14 00:39:41 -07:00
Arseny Kapoulkine
c92860e288 HLSL: Implement support for RT/Viewport output from VS
In DX10/DX11 you can only output RT/Viewport indices from GS; however,
DX11.4/DX12 add support for outputting these from VS as well.

This is supported by Vulkan if the relevant extension is available, and
by MSL and by MSL (which you can cross-compile to via SPIRV-Cross).
2017-12-13 16:08:20 -08:00
LoopDawg
0cff51004d HLSL: for split output structs, propagate indirection to builtin.
Some stage (e.g, hull shaders) have arrayed builtin outputs (e.g, position).
When copying from the internal structure to the split form, it is necessary
to propagate that indirection to the actual arrayed outputs.  This was not
happening.

Addresses #1181
2017-12-12 16:22:48 -07:00
John Kessenich
e078059d06
Merge pull request #1174 from LoopDawg/y-flip
HLSL: add optional position.Y inversion
2017-12-12 09:16:01 -07:00
John Kessenich
8116cfc9bf HLSL: Give error on unsupported buffer initializer. 2017-12-09 04:42:42 -07:00
John Kessenich
87982be1a0 HLSL: Remove unintended/untested functionality PrimitiveID.
This was listed as outputs for tessellation stages, but they
are input only.
2017-12-08 19:41:05 -07:00
John Kessenich
67fca7c4ce
Merge pull request #1178 from LoopDawg/primitiveid-hs-input
HLSL: Allow primitive id on hull shader input
2017-12-08 19:35:17 -07:00
John Kessenich
1cfc0f9e8b
Merge pull request #1175 from KhronosGroup/no-flatten-local-opaque
HLSL: Stop flattening non-IO structs containing opaques.
2017-12-08 18:46:34 -07:00
LoopDawg
280c75ca51 HLSL: Allow primitive id on hull shader inputs
Fixes #979
2017-12-08 12:01:16 -07:00
John Kessenich
dc005fb083 HLSL: Stop flattening non-IO structs containing opaques.
This makes struct returns from functions work, but breaks
structs containing arrays, due to limitations in subsequent
transforms in spirv-opt. This is expected to be fixed soon.
2017-12-08 04:30:29 -07:00
LoopDawg
b22c069f7a HLSL: add optional position.Y inversion
Adds command line options:

   --invert-y
   --iy

(synonyms) which invert position.Y on vertex shader output.  Handles these cases:

* Direct single variable return
* Member of direct returned struct
* Single variable output parameter
* Member of struct output parameter

API:

    // Enables position.Y output negation in vertex shader
    void TShader::setInvertY(bool invert);

Fixes #1173
2017-12-07 10:48:14 -07:00
John Kessenich
471bfed062 HLSL: Fix #606: make layout() override register. 2017-12-06 08:17:21 -07:00
John Kessenich
cc951f8183 HLSL: Fix #1154: Support PointSize, as an attribute. 2017-12-06 07:33:36 -07:00
John Kessenich
b0159f8565
Merge pull request #1151 from cgmb/update-readme
Improve build instructions
2017-12-05 04:26:04 -07:00
Cory Bloor
384b20705c Improve build instructions
- Mention that the instructions are written for Bash.
- Quote the CMAKE_INSTALL_PREFIX to handle spaces in $(pwd).
- Remove SSH clone instructions. Instructions on how to clone are for
  those unfamiliar with GitHub, so fewer options are better and SSH
  requires additional configuration to make work.
- Replace ninja with make, because more people are familiar with it and
  we probably don't need to explain how to install it. Fixes #956.
- Remove the section mentioning cygwin, as it's unclear and doesn't
  seem necessary.
- Mention minimum language version in the Dependencies section.
- Move `cd $BUILD_DIR` out of the Linux configuration section because
  it's needed on both platforms. Add a line about creating the build
  directory, too.
2017-12-05 00:28:32 -07:00
John Kessenich
6a14f78061 HLSL: Fix #1163: treat buffers as references when calling functions.
This continues to prevent writing output buffers (out from a function),
but fixes the problem where the copy-in/out was not getting done.

Making everything work will require knowing both in/out-ness and bufferness,
but these are currently mutually exclusive, because both are storage
qualifiers.
2017-12-04 02:48:10 -07:00
John Kessenich
1f89992423
Merge pull request #1171 from greg-lunarg/kg5
Update spirv-tools known-good
2017-12-01 22:16:03 -07:00
John Kessenich
531898a48c
Merge pull request #1170 from LoopDawg/matsize-warnings
HLSL: minor: add warning for mat() matrix size truncation
2017-12-01 01:27:33 -07:00
GregF
3e72d2658d Update spirv-tools known-good
This fixes spirv-tools issue 989 where if-break can be incorrectly
deleted from a loop.
2017-11-30 19:36:16 -07:00
LoopDawg
8c49f9b4e6 HLSL: minor: add warning for mat() matrix size truncation
Minor change to add a compilation warning on implicit matrix size
truncations.
2017-11-30 10:26:21 -07:00
John Kessenich
7199a6d1a9 Add initialization in case it is causing the Apple Clang release failure. 2017-11-29 16:42:42 -07:00
John Kessenich
ffc31cdc5c Tests: Trigger more texture tests, and hopefully see build failure go away.
(This is motivated by wanting to retickle the tests.)
2017-11-28 23:47:08 -07:00
John Kessenich
1ce94b2d68
Merge pull request #1166 from tafuri/#1165-invalid_Store
#1165 invalid store
2017-11-28 19:41:52 -07:00
John Kessenich
b2abe2f0a5
Merge pull request #1169 from LoopDawg/cbuffer-identifier
HLSL: allow keyword-identifiers as cbuffer/struct names.
2017-11-28 16:51:42 -07:00
John Kessenich
c4372e43a1
Merge pull request #1167 from LoopDawg/matmul-truncate-mxm
HLSL: add implicit mat*mat truncations
2017-11-28 11:06:05 -07:00
John Kessenich
72cddd0178
Merge pull request #1168 from greg-lunarg/kg4
Update spirv-tools known-good
2017-11-28 11:04:31 -07:00
LoopDawg
7ee29ba730 HLSL: allow keyword-identifiers as cbuffer/struct names.
Issue #791 was partially fixed by PR #1161 (the mat mul implicit
truncations were its main point), but it still wouldn't compile due to
the use of ConstantBuffer as an identifier.  Apparently those fall into
the same class as "float float", where float is both a type and an
identifier.

This allows struct definitions with such keyword-identifiers,
and adds ConstantBuffer to the set.  'cbuffer int' is legal in HLSL,
and 'struct int' appears to only be rejected due to the redefinition
of the 'int' type.

Fixes #791
2017-11-28 10:17:19 -07:00
GregF
30d92db011 Update spirv-tools known-good
This includes an enhancement to propagate through nested structs.
2017-11-27 14:41:55 -07:00
LoopDawg
cee29b04d6 HLSL: add implicit mat*mat truncations
Goes with PR #1161, and completes the space for mul() implicit truncations.

Note that the v*v and scalar cases are already handled by existing code.
2017-11-27 09:42:53 -07:00
Sebastian Tafuri
66b319d30b Added new test to gtests and updated test data 2017-11-27 17:13:22 +01:00
Sebastian Tafuri
59677daef7 Respect the array type in Store operation 2017-11-27 17:13:21 +01:00
John Kessenich
792a94809b
Merge pull request #1161 from LoopDawg/matmul-truncate
WIP: HLSL: matrix and vector truncations for m*v, v*m, m*m
2017-11-24 19:17:10 -07:00
LoopDawg
2e62910633 HLSL: matrix and vector truncations for m*v, v*m, m*m
HLSL truncates the vector, or one of the two matrix dimensions if there is a
dimensional mismatch in m*v, v*m, or m*m.

This PR adds that ability.  Conversion constructors are added as required.
2017-11-22 12:01:45 -07:00
John Kessenich
698bf7547a Memory: Mak full explicit destructor functionality, techincally correctly.
Completes a TODO from previous commit.
2017-11-21 14:32:39 -07:00
John Kessenich
1cf2b35529 Memory: Fix #705: don't use pool object after invoking destructor. 2017-11-21 00:12:31 -07:00
John Kessenich
fd1d07daf1 Memory: Put pragma tables in the pool.
Fixes #916 (the last change covered by the PR).
3rd list item in #976.
2017-11-20 17:41:39 -07:00
John Kessenich
cbdf871d7f SPV: SampleMask does not depend on SampleRateShading.
Fixes #1158.
Fixes #1159.
2017-11-20 16:32:49 -07:00
John Kessenich
e2c15b4f6e Memory: Reference count number of clients, to support multiple independent clients in same process.
Addresses 2nd item in #976.
2017-11-16 23:02:14 -07:00
John Kessenich
b63f4a3808 Usage: clarify meaning of -s; fixes #1135. 2017-11-16 22:32:20 -07:00
John Kessenich
cb421ef991 Test: Add more legalization tests; those effected by flattening. 2017-11-16 15:02:06 -07:00
John Kessenich
ca4ef9f43b
Merge pull request #1156 from LoopDawg/snorm-uav
HLSL: Accept unorm and snorm on types
2017-11-15 15:30:59 -07:00
John Kessenich
6e49c76ed9
Merge pull request #1157 from LoopDawg/gs-hs-mix
HLSL: ignore geometry attributes on non-GS stages.
2017-11-15 15:30:18 -07:00
LoopDawg
7573a2ab7f HLSL: ignore geometry attributes on non-GS stages.
If a shader includes a mixture of several stages, such as HS and GS,
the non-stage output geometry should be ignored, lest it conflict
with the stage output.
2017-11-15 11:33:25 -07:00
John Kessenich
4036ef154f
Merge pull request #1147 from KhronosGroup/memory1
Memory fixes, round 1
2017-11-14 21:26:42 -07:00
John Kessenich
ab9c6a8aeb
Merge pull request #1155 from antiagainst/skip-tags
Appveyor: avoid double testing on master commits
2017-11-14 15:43:24 -07:00
John Kessenich
5da8ead703 Memory: Remove redundant pool popAll(), which is potentially confusing. 2017-11-14 15:19:41 -07:00
LoopDawg
fa39cffd6a HLSL: Accept unorm and snorm on types
This is currently parsed and ignored, save for some minor validation.
2017-11-14 14:55:40 -07:00