Commit Graph

2508 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
62c4eaa7bf MSL: Remove stale code for TextureSwizzle.
Was probably added mistakenly during an old rebase.
2019-10-26 16:10:12 +02:00
Hans-Kristian Arntzen
3f569ed5ec GLSL: Minor nit, check flushed_phi_variables with count(). 2019-10-26 16:10:12 +02:00
Hans-Kristian Arntzen
9d18c82364 Clean up call to builtin_translates_to_nonarray.
get_decoration is better than poking in ir.meta manually.
2019-10-26 16:10:12 +02:00
Hans-Kristian Arntzen
3b5c4c7316 Implement constant empty struct correctly on all backends.
MSL actually supports empty structs, so enable that path as well.
2019-10-26 16:10:11 +02:00
Hans-Kristian Arntzen
8066d13599 MSL: Rewrite propagated depth comparison state handling.
Far cleaner, and more correct to run the traversal twice.
Fixes a case where we propagate depth state through multiple functions.
2019-10-26 16:10:11 +02:00
Hans-Kristian Arntzen
830e24c4ba MSL: Do read-only lookups of access_chain_children. 2019-10-26 16:10:11 +02:00
Hans-Kristian Arntzen
efc978177e MSL: Remove stray allow_id_rewrite().
Unclear why it's there, and tests do not break when removed.
2019-10-26 16:10:11 +02:00
Hans-Kristian Arntzen
2767257adc MSL: Do not declare array of UBO/SSBO as spvUnsafeArray<T>.
There is no need for these to be copied, and cuts down on template
stamping bloat.
2019-10-26 16:10:08 +02:00
Hans-Kristian Arntzen
b10f5d48c9
Merge pull request #1184 from billhollings/master
MSL: Support option for treating 1D textures as 2D textures of height 1.
2019-10-25 10:17:24 +02:00
Bill Hollings
53d0dd6741 MSL: Support option for treating 1D textures as 2D textures of height 1.
Fixes from feedback.

Change vertical sampling of 1D texture from 0.0 to 0.5 to avoid edge conditions.
2019-10-24 14:48:21 -04:00
Bill Hollings
4b5c6c188c MSL: Support option for treating 1D textures as 2D textures of height 1.
Add CompilerMSL::Options::texture_1D_as_2D.

Metal imposes significant restrictions on 1D textures, including not being
renderable, clearable, or permitting mipmaps. This option allows SPIR-V 1D
textures to be treated as 2D textures to permit this additional behaviour.
App must of course supply the textures to Metal as 2D textures.
2019-10-24 12:31:20 -04:00
Hans-Kristian Arntzen
a82ecbeba9 MSL: Enable proper value types for return and value-passing of arrays.
Now that we have spvUnsafeArray<T> there is no need to deal with these
special purpose cases.
2019-10-24 13:03:38 +02:00
Hans-Kristian Arntzen
4ac12594c9 MSL: Be a little clearer how needs_base_vertex_idx is implemented.
There is an implicit tristate with {-1, 0, +1} values, but it was not
obvious how this was supposed to work before studying the implementation,
so refactor into a tristate enum class.
2019-10-24 12:41:37 +02:00
Hans-Kristian Arntzen
6ca3fe22c3 MSL: Remove some dead code w.r.t. vertex/instance_idx. 2019-10-24 12:36:01 +02:00
Hans-Kristian Arntzen
d1479f871a MSL: Do not generate UnsafeArray<> for any array inside buffer objects.
This avoids a lot of huge code changes.
Arrays generally cannot be copied in and out of buffers, at least no
compiler frontend seems to do it.

Also avoids a lot of issues surrounding packed vectors and matrices.
2019-10-24 12:22:30 +02:00
Hans-Kristian Arntzen
b433836b08 MSL: Simplify framebuffer fetch implementation. 2019-10-24 11:48:29 +02:00
Hans-Kristian Arntzen
2ca725a78d MSL: Fall back to GLSL path for non-invariant matrix multiply as well. 2019-10-24 11:37:22 +02:00
Hans-Kristian Arntzen
ba4b31e46f MSL: Fall back to GLSL path for non-invariant FP implementation. 2019-10-24 11:34:52 +02:00
Hans-Kristian Arntzen
6edbf0c9e9 MSL: Minor cleanups for texture atomic emulation.
Storing pointers to internal objects is generally not done, IDs are
preferred.
2019-10-24 11:30:20 +02:00
Hans-Kristian Arntzen
43842cefb3 MSL: Cleanup decoration forwarding for SampleMask.
Don't want to create Meta instances unless we have to.
2019-10-24 11:15:35 +02:00
Hans-Kristian Arntzen
db55d474f9 MSL: Do not declare complex composite array in main for non-inlined.
Need to consider that complex composite arrays may be used in leaf
functions, and avoid the MSL library link fix unless everything is
nicely inlined.
2019-10-24 11:12:01 +02:00
Hans-Kristian Arntzen
8ad9584c2e Fix formatting in main.cpp. 2019-10-24 10:56:36 +02:00
Hans-Kristian Arntzen
b1fd6c1990 Add new UE4 folders to CMake testing as well. 2019-10-24 10:54:32 +02:00
Lukas Hermanns
c236ca4572 Moved all UE4 test shaders into 'shaders-ue4/' folder. 2019-10-23 17:39:05 -04:00
Lukas Hermanns
b0d616aa6d Removed 'argument_buffer_offset' and fixed packed matrix Metal output. 2019-10-23 16:28:32 -04:00
Lukas Hermanns
6673a675ba Simplified overriding of 'access_chain_internal' function in CompilerMSL. 2019-10-22 11:06:16 -04:00
Lukas Hermanns
84351d3aed Merge remote-tracking branch 'upstream/master' 2019-10-21 18:55:36 -04:00
Lukas Hermanns
e1b161b54b Removed bounds checks in favor of SPIRV-Tools pass '--graphics-robust-access' 2019-10-21 16:39:53 -04:00
Hans-Kristian Arntzen
ff1897ae0e
Merge pull request #1181 from KhronosGroup/cfg-immediate-dominators
CFG: Compute actual immediate dominators.
2019-10-21 13:46:09 +02:00
Hans-Kristian Arntzen
7be1e51b5a CFG: Compute actual immediate dominators.
This wasn't really a visible bug, since the DominatorBuilder would resolve this
issue, but it is still a bug.
2019-10-21 10:58:25 +02:00
Hans-Kristian Arntzen
a92668bc11
Merge pull request #1179 from KhronosGroup/fix-1178
Fix OpVectorExtractDynamic with spec constant op index.
2019-10-17 13:03:35 +02:00
Hans-Kristian Arntzen
4550f18b37 Fix OpVectorExtractDynamic with spec constant op index.
We cannot lower this to a swizzle, keep it dynamically indexed.
2019-10-17 11:12:14 +02:00
Hans-Kristian Arntzen
87dffb7231
Merge pull request #1177 from KhronosGroup/travis-python-roll
Travis: Update PATH for Python3 on Windows.
2019-10-16 09:26:13 +02:00
Hans-Kristian Arntzen
b8952c4567 Travis: Update PATH for Python3 on Windows.
Version was updated to 3.8, so need to change the custom PATH.
2019-10-16 00:36:14 +02:00
Hans-Kristian Arntzen
4d6a223cbe
Merge pull request #1175 from KhronosGroup/fix-1164
Implement unordered compare on GLSL/HLSL.
2019-10-14 19:01:00 +02:00
Hans-Kristian Arntzen
4acfcb3822
Merge pull request #1174 from KhronosGroup/fix-1170
MSL: Add opt-in support for huge IABs.
2019-10-14 19:00:41 +02:00
Lukas Hermanns
2482ff708c Merge remote-tracking branch 'upstream/master' 2019-10-14 11:06:15 -04:00
Hans-Kristian Arntzen
4bb673a626 MSL: Add opt-in support for huge IABs.
If there are enough members in an IAB, we cannot use the constant
address space as MSL compiler complains about there being too many
members. Support emitting the device address space instead.
2019-10-14 16:20:34 +02:00
Hans-Kristian Arntzen
a9be92569f HLSL: Fix unrolled S/G LE/LT/GE/GT opcodes.
Need to bitcast the unrolled expressions as well.
2019-10-14 16:08:39 +02:00
Hans-Kristian Arntzen
3bf9fa7ed6 GLSL: Deal correctly with bitwidth on integer compares. 2019-10-14 15:23:38 +02:00
Hans-Kristian Arntzen
b960ae3b70 HLSL: Partially implement Unordered compare.
We cannot correctly implement unordered equal/ordered not equal without
a lot of extra instructions which slows normal code down.
2019-10-14 15:15:03 +02:00
Hans-Kristian Arntzen
14a4b087fb GLSL: Support unordered floating point compare.
There is no direct way to express this, so invert boolean results to
force any NaN -> true. glslang emits Ordered compare instructions
everywhere, and the GLSL spec is not clear on this, so assume this is
fine.
2019-10-14 13:48:22 +02:00
Hans-Kristian Arntzen
7cc84020b3
Merge pull request #1173 from KhronosGroup/fix-1172
MSL: Fix regression with OpCompositeConstruct from std140 float[].
2019-10-11 11:58:14 +02:00
Hans-Kristian Arntzen
07e9501ae1 MSL: Fix regression with OpCompositeConstruct from std140 float[].
Simple fix, just need to use to_unpacked_expression rather than to_expression here to
deal with this.
2019-10-11 11:21:43 +02:00
Lukas Hermanns
0853bcaee1 Disabled spvUnsafeArray<> type for packed vectors and added test cases for those arrays. 2019-10-09 17:59:47 -04:00
Lukas Hermanns
ffbd801853 Added '--msl-invariant-float-math' option and new test case for it. 2019-10-09 14:03:06 -04:00
Lukas Hermanns
688a39e7f8 Merge remote-tracking branch 'upstream/master' 2019-10-09 10:12:04 -04:00
Hans-Kristian Arntzen
e5d3a6655e
Merge pull request #1169 from zoddicus/updateSPV_VERSION
Update SPV_VERSION from 1.4 to 1.5
2019-10-07 19:47:59 +02:00
Ryan Harrison
2d1e20d8f3 Update SPV_VERSION from 1.4 to 1.5
Missed this when I did the update to tests and such for 1.5.
2019-10-07 13:37:45 -04:00
Hans-Kristian Arntzen
43f7618194
Merge pull request #1168 from KhronosGroup/fix-1167
Do not consider aliased struct types if the master is not a block
2019-10-07 13:41:26 +02:00