Commit Graph

2751 Commits

Author SHA1 Message Date
John Kessenich
3e8e9f7bbd PP: Implement locale-independent strtod, using istringstream and a fast path.
Fixes #1228. Fixes #234.

This uses imbue() to be locale independent.  Notes:

- 'sstream >> double' is much slower than strtod()
  * this was measurable in the test suite as a whole, despite being
    a tiny fraction of what the test suite does
- so, this embeds a fast path that bypasses sstream most of the time
  => the test suite is faster than before
- sstream is probably slower, because it does more accurate rounding than strtod()
- sstream does not create INFINITY by itself, this was done based on failure inferencing
2018-05-24 22:08:30 -06:00
John Kessenich
6c52f8968c PP: Remove second parsing of numbers recorded in macros; save/use original.
This partly addresses #1228 and #234 by reducing usage of strtod (or atof).
There is now only place to parse a floating-point number.
2018-05-24 18:24:06 -06:00
John Kessenich
1ea1b13f38 Testing: Add new tests, and new ways of testing, for floating-point.
- Adds a pragma to see binary output of double values (not portable)
- Print decimals that show more values, but in a portable way
  (lots of portability issues)
- Expand the tests to test more double values

Note: it is quite difficult to have 100% portable tests for floating point.
The current situation works by not printing full precision, and working around
several portability issues.
2018-05-24 18:18:22 -06:00
John Kessenich
8e4b496d4a
Merge pull request #1388 from greg-lunarg/kg19
Update spirv-tools known-good
2018-05-24 09:42:32 -06:00
GregF
d2b55801b9 Update spirv-tools known-good
Includes:

Fold divide and multiply by same value.
Allow ADCE to remove more instructions.
Remove dead Workgroup variables in ADCE.
Fold fclamp feeding compare.
Add pass to fold a load feeding an extract.
Remove redundant stores.
SROA: Only create symbols that are loaded.
Get ADCE to handle OpCopyMemory
Remove the limit on struct size in SROA.
2018-05-23 18:56:20 -06:00
John Kessenich
c6d255396f
Merge pull request #1384 from LoopDawg/self-cast
HLSL: allow self-type cast (as no-op passthrough)
2018-05-19 13:32:52 -06:00
LoopDawg
c59916710e HLSL: allow self-type cast (as no-op passthrough)
Previously, casting an object of a struct type to an identical type
would produce an error.  This PR allows this case.

As a side-effect of the change, several self-type casts in existing
tests go away.  For example:

    0:10          Construct float ( temp float)
    0:10            'f' ( in float)

becomes this (without the unneeded constructor op):

    0:10          'f' ( in float)

For vector or array types this can result in somewhat less overall code.

Fixes: #1218
2018-05-17 13:03:12 -06:00
John Kessenich
2aaef1221f Bump revision. 2018-05-17 11:26:36 -06:00
John Kessenich
ebec909487 GLSL: Fix #1279: refract does not have a double-type eta. 2018-05-17 10:43:21 -06:00
John Kessenich
a0044f4fee
Merge pull request #1381 from LoopDawg/coverage_array
HLSL: require coverage mask to be arrayed output.
2018-05-17 10:22:40 -06:00
John Kessenich
98e1d7f64b
Merge pull request #1383 from amdrexu/bugfix
Fix issue #1376: SPV_AMD_gpu_shader_half_float is not emitted under vulkan1.1
2018-05-17 10:19:56 -06:00
Rex Xu
b4a2a6cf94 Fix issue #1376: SPV_AMD_gpu_shader_half_float is not emitted under
vulkan1.1

Interpolation functions, using 16-bit interpolants, should always emit
this extension string regardless of vulkan enviornment version.
2018-05-17 13:51:28 +08:00
LoopDawg
4e6d3eaf5d HLSL: require coverage mask to be arrayed output.
SPIR-V requires the coverage mask to be an array of integers, but HLSL
allows scalar integers.  This adds the requisite type conversion and
wrapped entry point handling.

Fixes: #1202
2018-05-16 13:58:10 -06:00
John Kessenich
cfb05ec702
Merge pull request #1379 from LoopDawg/groupid-fix
HLSL: various SPIR-V compute shader IDs must be 3-vectors of integers
2018-05-16 10:36:16 -06:00
LoopDawg
91a8178efb HLSL: various SPIR-V compute shader IDs must be a 3-vector of integers.
This PR forces the external definition of SV_GroupID variables to 3-vectors.
The conversion process between the shader-declared type and the external type
happens in wrapped main IO variable conversion.

The same applies to SV_DispatchThreadID and SV_GroupThreadID.

Fixes: #1371
2018-05-16 06:48:02 -06:00
John Kessenich
90de7a7495
Merge pull request #1378 from LoopDawg/append-decl-order
HLSL: Allow stream output Append() method after entry point.
2018-05-16 00:46:19 -06:00
LoopDawg
1326b8c754 HLSL: Allow stream output Append() method after entry point.
Append() method is special: unlike most outputs, it does not copy
some temporary data to a symbol in the entry point epilogue, but
rather uses an emit builtin after each write to the output stream.

This had been handled by remembering the special output symbol for
the stream as it was declared in the shader entry point before
symbol sanitization.  However the prior code was too simple and
only handled cases where the Append() method happened after the
entry point, so that the output symbol had been seen.

This PR adds a patching step so that the Append()s may appear in
any order WRT the entry point.  They are patched in an epilogue,
whereupon it is guaranteed in a well formed shader that we have
seen the appropriate declaration.

Fixes #1217.
2018-05-15 15:13:09 -06:00
John Kessenich
1831087e48 SPV: Fix #1374: For an SSBO 16-bit access, only emit StorageUniformBufferBlock16 capability. 2018-05-14 22:08:53 -06:00
John Kessenich
2fb966aad2
Merge pull request #1375 from Igalia/nroberts/aml-arrayio
Skip outermost array when assigning locations to auto-array interfaces
2018-05-12 14:24:05 -06:00
John Kessenich
ecbd056b75 Tests: Fix #1372: Don't legalize runtests HLSL tests.
We want these tests to be independent of whether SPIRV-opt is used.
2018-05-10 10:22:13 -06:00
Neil Roberts
22b71f9af9 Skip outermost array when assigning locations to auto-array interfaces
When assigning a location to an interface whose stage automatically
converts the interfaces to an array, it now strips off the outermost
array from the type before calculating how many locations it consumes.
2018-05-10 16:53:49 +02:00
John Kessenich
fd9d9ef436 Bump version. 2018-05-04 21:35:05 -06:00
John Kessenich
d2e9829a88
Merge pull request #1370 from KhronosGroup/fix-param-types
Fix #944: Convert argument type to match formal parameter type.
2018-05-04 21:19:47 -06:00
John Kessenich
115c3b1469
Merge pull request #1369 from greg-lunarg/kg18
Update spirv-opt known-good
2018-05-04 21:19:29 -06:00
John Kessenich
d3ed90be3a Fix #944: Convert argument type to match formal parameter type. 2018-05-04 11:43:03 -06:00
GregF
517eabb47d Update spirv-opt known-good
Notably, this includes the following:

- Fix exponential performance of DeadInsertElim
- Constant folding of OpVectorTimesScalar
- Add Vector DCE
- Add store-store elimination to LocalSingleBlockElim
- Improve folding of OpVectorTimesScalar and OpPhi
- Fixes handling of kill and unreachable ops in inlining
2018-05-04 11:22:55 -06:00
John Kessenich
25bef9300d
Merge pull request #1363 from mattparks/patch4
Fixed install for SPIRV, glslang, and hlsl when building shared libs
2018-05-03 01:18:37 -06:00
John Kessenich
115cf8ea2c
Merge pull request #1368 from danginsburg/issue_1367
Fix issue #1367 - change the I/O remapper to ignore push constants so…
2018-05-03 01:16:40 -06:00
danginsburg
fb6924d23b Fix issue #1367 - change the I/O remapper to ignore push constants so it does not apply a binding/descriptor set to them. 2018-05-02 16:42:22 -04:00
John Kessenich
9cf275bb9e Build: Add missing break statements. Fixes #1052. 2018-04-26 14:12:29 -06:00
Matthew Albrecht
1199cf92f7 Fixed install for SPIRV, glslang, and hlsl when building shared libs 2018-04-26 14:07:46 -05:00
John Kessenich
e375dad660
Merge pull request #1364 from greg-lunarg/kg17
Update known-good.
2018-04-26 08:11:04 -06:00
GregF
6b5d52a672 Update known-good.
Notably, reduces spirv-opt time and adds folding of OpDot and OpFNegate.
2018-04-25 11:48:51 -06:00
John Kessenich
46e07313f9 GLSL/Vulkan: Warn about arrays of arrays of resources that need bindings.
Initial way of addressing #1362.
2018-04-24 13:29:12 -06:00
John Kessenich
b4cb70fcd9 GLSL: Fix #1359: don't allow unsized arrays as initializers. 2018-04-23 15:32:47 -06:00
John Kessenich
d8462c6f49 validate script: fix path 2018-04-23 15:17:21 -06:00
John Kessenich
c325f43646 GLSL: Fix #1300: Can redeclare without size a sized built-in block array. 2018-04-19 19:42:50 -06:00
John Kessenich
3beac945ff Infrastructure: If using .hlsl suffix, default is -D. 2018-04-17 21:02:19 -06:00
John Kessenich
4c57470872 Bump revision. 2018-04-17 17:46:33 -06:00
John Kessenich
2ead40ffa8 Tests: Add usage and tests for previous commit. 2018-04-17 17:44:11 -06:00
John Kessenich
fccbb8b40a Merge branch 'nicebyte-glsl-ext' 2018-04-17 17:30:20 -06:00
John Kessenich
62f84fd5a3 Merge branch 'glsl-ext' of https://github.com/nicebyte/glslang into nicebyte-glsl-ext 2018-04-17 17:23:31 -06:00
John Kessenich
3bb4c48cd9 Bump revision. 2018-04-16 16:02:21 -06:00
John Kessenich
16b80f7897
Merge pull request #1345 from amdrexu/bugfix
Add AMD float16/int16 SPV extension string when GLSL specifies them
2018-04-14 22:01:55 -06:00
Rex Xu
7c88aff1a9 Specify SPV_AMD_gpu_shader_int16 extension string when frexp() takes 16-bit
exp operand
2018-04-14 21:40:49 +08:00
John Kessenich
6cf7645c6d Bump revision. 2018-04-13 21:01:01 -06:00
John Kessenich
c034c5a8a2 HLSL/SPV: Declare DepthReplacing for shaders declaring SV_Depth* outputs. 2018-04-13 18:36:58 -06:00
John Kessenich
24eae066bb
Merge pull request #1348 from greg-lunarg/kg16
Update spirv-opt known good
2018-04-13 10:38:20 -06:00
John Kessenich
d91e0360d4
Merge pull request #1351 from danginsburg/issue_1350
Fix issue #1350 - set the node type to match the atomic TIntermAggreg…
2018-04-13 09:36:22 -06:00
danginsburg
5a69b675d6 Update gold results 2018-04-13 09:51:22 -04:00