Arseny Kapoulkine [Thu, 14 Dec 2017 00:08:20 +0000 (16:08 -0800)]
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).
John Kessenich [Tue, 12 Dec 2017 16:16:01 +0000 (09:16 -0700)]
Merge pull request #1174 from LoopDawg/y-flip
HLSL: add optional position.Y inversion
John Kessenich [Sat, 9 Dec 2017 11:42:42 +0000 (04:42 -0700)]
HLSL: Give error on unsupported buffer initializer.
John Kessenich [Sat, 9 Dec 2017 02:41:05 +0000 (19:41 -0700)]
HLSL: Remove unintended/untested functionality PrimitiveID.
This was listed as outputs for tessellation stages, but they
are input only.
John Kessenich [Sat, 9 Dec 2017 02:35:17 +0000 (19:35 -0700)]
Merge pull request #1178 from LoopDawg/primitiveid-hs-input
HLSL: Allow primitive id on hull shader input
John Kessenich [Sat, 9 Dec 2017 01:46:34 +0000 (18:46 -0700)]
Merge pull request #1175 from KhronosGroup/no-flatten-local-opaque
HLSL: Stop flattening non-IO structs containing opaques.
LoopDawg [Fri, 8 Dec 2017 19:01:16 +0000 (12:01 -0700)]
HLSL: Allow primitive id on hull shader inputs
Fixes #979
John Kessenich [Thu, 16 Nov 2017 23:03:18 +0000 (16:03 -0700)]
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.
LoopDawg [Wed, 6 Dec 2017 23:52:03 +0000 (16:52 -0700)]
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
John Kessenich [Wed, 6 Dec 2017 15:17:21 +0000 (08:17 -0700)]
HLSL: Fix #606: make layout() override register.
John Kessenich [Wed, 6 Dec 2017 14:33:36 +0000 (07:33 -0700)]
HLSL: Fix #1154: Support PointSize, as an attribute.
John Kessenich [Tue, 5 Dec 2017 11:26:04 +0000 (04:26 -0700)]
Merge pull request #1151 from cgmb/update-readme
Improve build instructions
Cory Bloor [Tue, 5 Dec 2017 07:28:32 +0000 (00:28 -0700)]
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.
John Kessenich [Mon, 4 Dec 2017 09:48:10 +0000 (02:48 -0700)]
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.
John Kessenich [Sat, 2 Dec 2017 05:16:03 +0000 (22:16 -0700)]
Merge pull request #1171 from greg-lunarg/kg5
Update spirv-tools known-good
John Kessenich [Fri, 1 Dec 2017 08:27:33 +0000 (01:27 -0700)]
Merge pull request #1170 from LoopDawg/matsize-warnings
HLSL: minor: add warning for mat() matrix size truncation
GregF [Fri, 1 Dec 2017 02:36:16 +0000 (19:36 -0700)]
Update spirv-tools known-good
This fixes spirv-tools issue 989 where if-break can be incorrectly
deleted from a loop.
LoopDawg [Wed, 29 Nov 2017 17:00:01 +0000 (10:00 -0700)]
HLSL: minor: add warning for mat() matrix size truncation
Minor change to add a compilation warning on implicit matrix size
truncations.
John Kessenich [Wed, 29 Nov 2017 23:32:46 +0000 (16:32 -0700)]
Add initialization in case it is causing the Apple Clang release failure.
John Kessenich [Wed, 29 Nov 2017 06:47:08 +0000 (23:47 -0700)]
Tests: Trigger more texture tests, and hopefully see build failure go away.
(This is motivated by wanting to retickle the tests.)
John Kessenich [Wed, 29 Nov 2017 02:41:52 +0000 (19:41 -0700)]
Merge pull request #1166 from tafuri/#1165-invalid_Store
#1165 invalid store
John Kessenich [Tue, 28 Nov 2017 23:51:42 +0000 (16:51 -0700)]
Merge pull request #1169 from LoopDawg/cbuffer-identifier
HLSL: allow keyword-identifiers as cbuffer/struct names.
John Kessenich [Tue, 28 Nov 2017 18:06:05 +0000 (11:06 -0700)]
Merge pull request #1167 from LoopDawg/matmul-truncate-mxm
HLSL: add implicit mat*mat truncations
John Kessenich [Tue, 28 Nov 2017 18:04:31 +0000 (11:04 -0700)]
Merge pull request #1168 from greg-lunarg/kg4
Update spirv-tools known-good
LoopDawg [Mon, 27 Nov 2017 21:45:36 +0000 (14:45 -0700)]
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
GregF [Mon, 27 Nov 2017 21:41:55 +0000 (14:41 -0700)]
Update spirv-tools known-good
This includes an enhancement to propagate through nested structs.
LoopDawg [Mon, 27 Nov 2017 16:42:53 +0000 (09:42 -0700)]
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.
Sebastian Tafuri [Mon, 27 Nov 2017 15:53:09 +0000 (16:53 +0100)]
Added new test to gtests and updated test data
Sebastian Tafuri [Mon, 27 Nov 2017 15:27:09 +0000 (16:27 +0100)]
Respect the array type in Store operation
John Kessenich [Sat, 25 Nov 2017 02:17:10 +0000 (19:17 -0700)]
Merge pull request #1161 from LoopDawg/matmul-truncate
WIP: HLSL: matrix and vector truncations for m*v, v*m, m*m
LoopDawg [Wed, 22 Nov 2017 17:33:34 +0000 (10:33 -0700)]
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.
John Kessenich [Tue, 21 Nov 2017 21:32:39 +0000 (14:32 -0700)]
Memory: Mak full explicit destructor functionality, techincally correctly.
Completes a TODO from previous commit.
John Kessenich [Tue, 21 Nov 2017 07:12:31 +0000 (00:12 -0700)]
Memory: Fix #705: don't use pool object after invoking destructor.
John Kessenich [Tue, 21 Nov 2017 00:41:39 +0000 (17:41 -0700)]
Memory: Put pragma tables in the pool.
Fixes #916 (the last change covered by the PR).
3rd list item in #976.
John Kessenich [Mon, 20 Nov 2017 23:32:49 +0000 (16:32 -0700)]
SPV: SampleMask does not depend on SampleRateShading.
Fixes #1158.
Fixes #1159.
John Kessenich [Fri, 17 Nov 2017 05:48:41 +0000 (22:48 -0700)]
Memory: Reference count number of clients, to support multiple independent clients in same process.
Addresses 2nd item in #976.
John Kessenich [Fri, 17 Nov 2017 05:32:20 +0000 (22:32 -0700)]
Usage: clarify meaning of -s; fixes #1135.
John Kessenich [Thu, 16 Nov 2017 22:02:06 +0000 (15:02 -0700)]
Test: Add more legalization tests; those effected by flattening.
John Kessenich [Wed, 15 Nov 2017 22:30:59 +0000 (15:30 -0700)]
Merge pull request #1156 from LoopDawg/snorm-uav
HLSL: Accept unorm and snorm on types
John Kessenich [Wed, 15 Nov 2017 22:30:18 +0000 (15:30 -0700)]
Merge pull request #1157 from LoopDawg/gs-hs-mix
HLSL: ignore geometry attributes on non-GS stages.
LoopDawg [Wed, 15 Nov 2017 18:33:25 +0000 (11:33 -0700)]
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.
John Kessenich [Wed, 15 Nov 2017 04:26:42 +0000 (21:26 -0700)]
Merge pull request #1147 from KhronosGroup/memory1
Memory fixes, round 1
John Kessenich [Tue, 14 Nov 2017 22:43:24 +0000 (15:43 -0700)]
Merge pull request #1155 from antiagainst/skip-tags
Appveyor: avoid double testing on master commits
John Kessenich [Tue, 14 Nov 2017 22:19:41 +0000 (15:19 -0700)]
Memory: Remove redundant pool popAll(), which is potentially confusing.
LoopDawg [Tue, 14 Nov 2017 21:55:40 +0000 (14:55 -0700)]
HLSL: Accept unorm and snorm on types
This is currently parsed and ignored, save for some minor validation.
Lei Zhang [Tue, 14 Nov 2017 19:36:22 +0000 (14:36 -0500)]
Appveyor: avoid double testing on master commits
LoopDawg [Mon, 13 Nov 2017 22:54:12 +0000 (15:54 -0700)]
Implement OS_DumpMemoryCounters for Linux
John Kessenich [Tue, 14 Nov 2017 05:19:21 +0000 (22:19 -0700)]
Memory: Restore unused interfaces, in case other tools called them.
John Kessenich [Tue, 14 Nov 2017 04:43:45 +0000 (21:43 -0700)]
Merge pull request #1150 from antiagainst/readme-release
Update README about the automatic master-tot relase
Lei Zhang [Mon, 13 Nov 2017 20:27:32 +0000 (15:27 -0500)]
Update README about the automatic master-tot relase
John Kessenich [Mon, 13 Nov 2017 18:20:34 +0000 (11:20 -0700)]
Merge pull request #1143 from LoopDawg/texturebuffer
WIP: HLSL: implement TextureBuffer<type>
John Kessenich [Mon, 13 Nov 2017 08:32:06 +0000 (01:32 -0700)]
Memory: Add loop around main, to test tear-down and reuse, and monitor memory changes.
John Kessenich [Mon, 13 Nov 2017 06:12:57 +0000 (23:12 -0700)]
Memory: Remove the need for per-thread tear down.
Make key objects using the memory pool own their own pool and delete it,
such that there is not generic per-thread pool to manage.
John Kessenich [Sun, 12 Nov 2017 22:55:22 +0000 (15:55 -0700)]
Memory: Do process and 1st thread tear down.
Addresses #928, #389, and 1st item in #976. Overlaps #916.
This had been dropped, when moving away from the old Win32 DLL model.
Issue: per-thread tear down for other threads.
John Kessenich [Sun, 12 Nov 2017 22:43:03 +0000 (15:43 -0700)]
Memory: Move to a normal model of ownership of memory pools, for new/delete.
Addresses step 4 of #976, overlaps #916.
For each pool, now, it is newed, remembered, and freed by the same entity,
rather than having a mix (thread finalize freeing current pool) that could
lead to double freeing of the same pool. It is quite rational and simple now.
This will enable reinstalling process and thread tear down.
John Kessenich [Sun, 12 Nov 2017 22:28:58 +0000 (15:28 -0700)]
Memory: Non-Functional: Rationalize and improve encapsulation of TLS usage.
This will make the next (functional) commit easier to see.
John Kessenich [Fri, 10 Nov 2017 20:52:00 +0000 (13:52 -0700)]
Merge pull request #1142 from greg-lunarg/kg3
Update spirv-tools known good.
John Kessenich [Fri, 10 Nov 2017 02:19:56 +0000 (19:19 -0700)]
Merge pull request #1145 from antiagainst/travis-auto-deploy
Travis: auto deploy build artifacts to GitHub Releases
Lei Zhang [Thu, 9 Nov 2017 02:32:01 +0000 (21:32 -0500)]
Travis: auto deploy build artifacts to GitHub Releases
Pushing a commit to the master branch will trigger a build on
Travis. If the build is successful, the artifacts will be
collected and pushed to GitHub Releases, under the "master-tot"
release.
John Kessenich [Thu, 9 Nov 2017 19:10:24 +0000 (12:10 -0700)]
Merge pull request #1114 from LoopDawg/validator-script
Add script to crank test shaders through spirv-val
John Kessenich [Thu, 9 Nov 2017 19:08:28 +0000 (12:08 -0700)]
Merge pull request #1116 from LoopDawg/reverse-shift-args
Reverse order of setShiftBindingForSet parameters
John Kessenich [Thu, 9 Nov 2017 19:07:42 +0000 (12:07 -0700)]
Merge pull request #1144 from antiagainst/appveyor-auto-deploy
Appveyor: auto deploy build artifacts to GitHub Releases
LoopDawg [Sat, 21 Oct 2017 16:46:39 +0000 (10:46 -0600)]
Reverse order of setShiftBindingForSet parameters
Per feedback on PR #1111, this reverses the order of the parameters for the setShiftBinding API.
It is now:
void TShader::setShiftBindingForSet(TResourceType res, unsigned int base, unsigned int set);
LoopDawg [Thu, 19 Oct 2017 18:09:56 +0000 (12:09 -0600)]
Add script to crank test shaders through spirv-val
This script will crank a supplied set of glslang test shaders through the
spirv-val tool, reporting on the results.
There are some important things to note:
* Like 'runtests', this must be invoked from the 'Test' subdirectory.
* This is mostly useful on the hlsl.* tests, although it is not strictly
limited to those. The reason is that most of the glsl tests either contain
validation error cases, and so fail to compile, or are not using a #version
compatible with producing SPIR-V modules.
* Some tests, such as negative tests, or most of the glsl tests, have
intentional compilation errors. This script treats that as OK. Failures
are successfully compiling shaders which proceed to fail spirv-val.
* spirv-val is looked for in either the External directory, or if not
found there, in a sibling directory of glslang, and if not found there
either, in /usr/local/bin.
* There are a bunch of command line options. ./validate-shaders.sh --help
will describe them.
Some examples to try:
./validate-shaders.sh hlsl.* # exercise all hlsl.* tests.
./validate-shaders.sh --terse hlsl.* # same, but tersely.
# dump validator results for problems in something.frag:
./validate-shaders.sh --quiet --dump-val something.frag
Lei Zhang [Wed, 8 Nov 2017 22:26:51 +0000 (17:26 -0500)]
Appveyor: auto deploy build artifacts to GitHub Releases
Pushing a commit to the master branch will trigger a build on
Appveyor. If the build is successful, the artifacts will be
collected and pushed to GitHub Releases, under the "master-tot"
release.
LoopDawg [Thu, 9 Nov 2017 02:48:11 +0000 (19:48 -0700)]
HLSL: implement TextureBuffer<type>
Almost equivalent to tbuffer, except members not at global scope.
So, reference is "TextureBuffer_var.member", not simply "member".
GregF [Wed, 8 Nov 2017 20:56:08 +0000 (13:56 -0700)]
Update spirv-tools known good.
John Kessenich [Fri, 3 Nov 2017 09:39:48 +0000 (03:39 -0600)]
SPV: Don't support noise*() when generating SPV.
John Kessenich [Fri, 3 Nov 2017 04:48:15 +0000 (22:48 -0600)]
Errors: Have a whole set of tool-level error messages report to stderr.
John Kessenich [Fri, 3 Nov 2017 04:32:14 +0000 (22:32 -0600)]
Versioning: Update some version strings. Still need better overall version.
John Kessenich [Fri, 3 Nov 2017 03:53:25 +0000 (21:53 -0600)]
Merge pull request #1139 from greg-lunarg/remap2
Remapper: Fix strip algo when strip ranges overlap
GregF [Thu, 2 Nov 2017 20:01:57 +0000 (14:01 -0600)]
Remapper: Fix strip algo when strip ranges overlap
John Kessenich [Thu, 2 Nov 2017 12:48:32 +0000 (06:48 -0600)]
Fix #1079: don't give error when macro() name used without open (.
John Kessenich [Thu, 2 Nov 2017 06:05:53 +0000 (00:05 -0600)]
John Kessenich [Thu, 2 Nov 2017 04:33:45 +0000 (22:33 -0600)]
Fix #1065: don't validate Vulkan binding numbers.
To handle sparse assignments, don't check maxCombinedTextureImageUnits.
John Kessenich [Sat, 28 Oct 2017 20:42:44 +0000 (14:42 -0600)]
Non-functional: copyright update, to help with non-determinism test.
John Kessenich [Sat, 28 Oct 2017 18:55:02 +0000 (12:55 -0600)]
Tests: Non-determinancy: Add back in the IntMin tests.
John Kessenich [Sat, 28 Oct 2017 08:03:09 +0000 (02:03 -0600)]
Merge pull request #1133 from greg-lunarg/kg2
Add python3 compatibility to update_glslang_sources.py
GregF [Fri, 27 Oct 2017 21:39:45 +0000 (15:39 -0600)]
Add python3 compatibility to update_glslang_sources.py
John Kessenich [Fri, 27 Oct 2017 10:15:57 +0000 (04:15 -0600)]
Non-determinant tests: Remove recent tests, to see if things stabelize.
Both debug and release clang builds have segfaulted on recent
changes, non deterministically, while doing the single/multi-thread
test all test files. Removing recent test files, to see if it gives
a clue.
John Kessenich [Fri, 27 Oct 2017 09:10:21 +0000 (03:10 -0600)]
Non-functional: Add {} expected by convention; retrigger failed bot tests.
John Kessenich [Fri, 27 Oct 2017 07:30:03 +0000 (01:30 -0600)]
Merge pull request #1129 from xorgy/const-fold-int-min-modulo-negative-one
GLSL: Fold constant SHRT_MIN/INT_MIN/LLONG_MIN % -1 to 0.
Aaron Muir Hamilton [Wed, 25 Oct 2017 00:11:53 +0000 (00:11 +0000)]
GLSL: Fold constant SHRT_MIN/INT_MIN/LLONG_MIN % -1 to 0.
John Kessenich [Tue, 24 Oct 2017 14:18:09 +0000 (08:18 -0600)]
Merge pull request #1124 from xorgy/check-inner-implicit-atomic-uint
GLSL: Check for implicit inner dimension in array of atomic_uint.
John Kessenich [Tue, 24 Oct 2017 14:14:38 +0000 (08:14 -0600)]
Merge pull request #1127 from xorgy/preprocessor-int-min-mod-negative-one
Preprocessor: Evaluate INT_MIN % -1 to 0.
Aaron Muir Hamilton [Tue, 24 Oct 2017 10:59:01 +0000 (10:59 +0000)]
Preprocessor: Evaluate INT_MIN % -1 to 0.
John Kessenich [Tue, 24 Oct 2017 04:11:42 +0000 (22:11 -0600)]
Merge pull request #1125 from greg-lunarg/kg1
Update spirv-tools known-good
GregF [Mon, 23 Oct 2017 22:48:42 +0000 (16:48 -0600)]
Update spirv-tools known-good
Aaron Muir Hamilton [Mon, 23 Oct 2017 15:31:10 +0000 (15:31 +0000)]
GLSL: Check for implicit inner dimension in array of atomic_uint.
John Kessenich [Mon, 23 Oct 2017 05:28:22 +0000 (23:28 -0600)]
Merge pull request #1118 from xorgy/only-swizzle-numbers-and-bools
Only try swizzles on vectors, numbers, and booleans.
John Kessenich [Mon, 23 Oct 2017 05:19:02 +0000 (23:19 -0600)]
Merge branch 'only-parse-inf-constant-in-hlsl' of https://github.com/xorgy/glslang into xorgy-only-parse-inf-constant-in-hlsl
John Kessenich [Mon, 23 Oct 2017 05:17:18 +0000 (23:17 -0600)]
Tests: Add test for GLSL +-#INF.
John Kessenich [Mon, 23 Oct 2017 05:09:32 +0000 (23:09 -0600)]
Merge pull request #1120 from xorgy/overlong-hex-literal
Check for hexadecimal literals exceeding MaxTokenLength.
Aaron Muir Hamilton [Mon, 23 Oct 2017 02:56:27 +0000 (02:56 +0000)]
GLSL: Only parse [-]1.#INF in HLSL mode.
Aaron Muir Hamilton [Sun, 22 Oct 2017 17:41:13 +0000 (17:41 +0000)]
Check for hexadecimal literals exceeding MaxTokenLength.
Aaron Muir Hamilton [Sat, 21 Oct 2017 19:13:42 +0000 (19:13 +0000)]
Only try swizzles on vectors, numbers, and booleans.
John Kessenich [Fri, 20 Oct 2017 22:31:26 +0000 (16:31 -0600)]
Merge pull request #1115 from LoopDawg/stdarray-binding-set
Nonfunctional: minor: use std::array for per-set shifts, fix warning.
LoopDawg [Fri, 20 Oct 2017 18:02:38 +0000 (12:02 -0600)]
Nonfunctional: minor: use std::array for per-set shifts, fix warning.
Two unrelated, minor tweaks:
(1) Use std::array for shiftBindingForSet. Now matches shiftBinding.
(2) Add parens in shouldFlatten() to make compiler warning happy.
John Kessenich [Fri, 20 Oct 2017 17:35:29 +0000 (11:35 -0600)]
Merge pull request #1111 from LoopDawg/per-set-binding-offsets
Add per-descriptor-set IO mapping shift values.
John Kessenich [Fri, 20 Oct 2017 16:56:50 +0000 (10:56 -0600)]
SPV: Don't emit StorageImageMultisample capability for subpass images.