Commit Graph

317 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
41ffb1064e Add basic test for viewport-index builtin. 2018-01-04 13:51:05 +01:00
Hans-Kristian Arntzen
c4e787ccf8
Merge pull request #378 from KhronosGroup/fix-371
Fix swizzling of scalar integers in HLSL.
2018-01-04 13:42:27 +01:00
Hans-Kristian Arntzen
4590c63b40 Fix swizzling of integers.
Add scalar swizzling to constant composites as well.
2018-01-04 13:16:56 +01:00
Hans-Kristian Arntzen
e51b7cd162 Add test for sampler arrays. 2018-01-04 12:28:57 +01:00
Bill Hollings
95910ddd5a MSL test shader refactoring to avoid optimization crashes. 2017-12-26 18:40:46 -05:00
Bill Hollings
a68b32733a CompilerMSL enhancements to nested function use of globals.
Allow function calls to include globals as arguments.
Allow function calls to include built-ins as arguments.
Include all meta info when creating function args from globals.
Do not manufacture a sampler for Buffer-type sampled images.
Add code option to test_shaders.py to preserve SPIR-V code for interactive debugging.
2017-12-26 16:32:45 -05:00
Hans-Kristian Arntzen
789fa91987 Support running FXC on Unix-likes as well.
Assumes a wine wrapper script is set up, but should be good enough.
2017-12-12 13:23:56 +01:00
Hans-Kristian Arntzen
ffad50b3c2 Remove duplicate swizzles in remap_swizzle.
Makes HLSL image-load-store look much nicer.
2017-12-12 13:01:10 +01:00
Hans-Kristian Arntzen
1c7980a778 Swizzle scalars when splatting in HLSL. 2017-12-12 12:52:45 +01:00
Hans-Kristian Arntzen
cc532cb7b6 Use t-namespace for ByteAddressBuffer.
FXC caught it, but not glslang, hm ...
2017-12-11 13:55:26 +01:00
Hans-Kristian Arntzen
3630d7ef75
Merge pull request #360 from KhronosGroup/vulkan-glsl-desktop-mediump
Support mediump in desktop Vulkan GLSL.
2017-12-07 17:40:14 +01:00
Hans-Kristian Arntzen
5e9b53e354 Support VertexID/InstanceID in HLSL. 2017-12-06 11:01:32 +01:00
Hans-Kristian Arntzen
2e68675ef7 Support mediump in desktop Vulkan GLSL. 2017-12-06 10:25:58 +01:00
Hans-Kristian Arntzen
6d7af5c83c Add test for continue block lifting. 2017-12-05 17:44:52 +01:00
Hans-Kristian Arntzen
aa2557c7df Fixups for PR #353. 2017-12-05 09:58:12 +01:00
Bill Hollings
12988801c4 Update reference shaders in reference/opt/shaders-msl.
Remove shaders-msl/comp/bake_gradient.comp, which now breaks spirv-opt.
2017-12-04 18:17:06 -05:00
Bill Hollings
5502b00682 Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2017-12-04 17:02:08 -05:00
Hans-Kristian Arntzen
4a9d3cebd0
Merge pull request #355 from KhronosGroup/fix-345
Improve handling of block name declaration in GLSL.
2017-12-02 13:01:32 +01:00
Hans-Kristian Arntzen
197e5bd7fb
Merge pull request #356 from KhronosGroup/fix-352
Make sure image integer coords are int, not uint.
2017-12-02 12:59:31 +01:00
Hans-Kristian Arntzen
3c52771aee Make sure image integer coords are int, not uint.
HLSL can emit uint here.
2017-12-01 15:02:50 +01:00
Hans-Kristian Arntzen
2c90ea3acc Improve handling of block name declaration in GLSL.
HLSL UAVs are a bit annoying because they can share block types,
so reflection becomes rather awkward. Sometimes we will need to make
some nasty fallbacks, so add a reflection interface which lets you query
post-shader compile which names was actually declared in the shader.
2017-12-01 14:30:10 +01:00
Hans-Kristian Arntzen
aeeb0e3dd0 Support textureQueryLod in HLSL. 2017-12-01 13:30:31 +01:00
Bill Hollings
c93d44ba3c For MSL, use {} instead of constructors to init OpUndef values. 2017-11-30 15:03:27 -05:00
Hans-Kristian Arntzen
975cf86892 Test textureProjLodOffset with compare in HLSL as well. 2017-11-29 12:48:06 +01:00
Hans-Kristian Arntzen
dbfa686990 Emit SampleCmpLevelZero for lod/grad variants of SampleCmp. 2017-11-29 12:38:13 +01:00
Hans-Kristian Arntzen
c65248fdce Support image load-store without format in HLSL. 2017-11-29 12:14:06 +01:00
Hans-Kristian Arntzen
48f3fa4adb Implement bitfield ops in HLSL. 2017-11-29 11:33:44 +01:00
Hans-Kristian Arntzen
656af7e3ed Implement unorm16/snorm16 packing in HLSL. 2017-11-27 15:03:40 +01:00
Hans-Kristian Arntzen
719ba63416 Add pack/unpack snorm8/unorm8. 2017-11-27 14:49:47 +01:00
Hans-Kristian Arntzen
6c7c680d01 Implement FP16 unpack/pack on HLSL. 2017-11-27 14:24:30 +01:00
Hans-Kristian Arntzen
c64c3de01f Add new optimized test shaders. 2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
f929078f1e Disable --opt for in_block_assign for now.
Bug: OpLoad fails when loading an interface struct directly, followed by
OpCompositeExtract. This should be fixed, but not critical enough to
block this PR.
2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
8e14eadb95 Disable opts for loop on MSL as well. 2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
65cd417630 Do not hoist OpUndef variables. 2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
3ce6b2a23b Make bitfield test noopt for now.
SPIRV-Tools trips assertion.
2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
7238e57933 Enforce stable order for dominated phi variables. 2017-11-23 09:59:25 +01:00
Hans-Kristian Arntzen
c52776af78 Update to correct SPIRV-Tools revision. 2017-11-23 09:59:21 +01:00
Hans-Kristian Arntzen
b39e829fc2 Add reference output for --opt. 2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen
3440263d60 Update MSL tests. 2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen
7e02f7fd62 Check more places where we can potentially read phi variables. 2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen
0fd028147f Hoist all phi-local variables to entry block.
We don't have a mechanism to move temporaries to their appropriate
scope, and Phi behavior is weird enough that it will be a heroic effort
to not do this rather ugly codegen :(
2017-11-23 09:50:11 +01:00
Hans-Kristian Arntzen
bcdff2d2e1 Fixups for PR #338 review. 2017-11-22 20:51:26 +01:00
Lou Kramer
6671f52334 Add support for new extensions. 2017-11-22 19:05:38 +01:00
msiglreith
f4bde2b3ef HLSL: Support early fragment tests attribute 2017-11-21 14:51:03 +01:00
Hans-Kristian Arntzen
b629ca1c33 Fix complicated Phi case.
A continue block might have used a temporary which existed only in the
loop body.
2017-11-21 09:27:49 +01:00
Hans-Kristian Arntzen
3cacaf614d
Merge pull request #333 from KhronosGroup/fix-331
Do not allow base expressions when extracting struct members.
2017-11-20 23:29:30 +01:00
Hans-Kristian Arntzen
851e584338 Do not allow base expressions when extracting struct members. 2017-11-20 21:32:13 +01:00
Hans-Kristian Arntzen
5352615ce1 Update tests. 2017-11-20 21:10:00 +01:00
Hans-Kristian Arntzen
dd604fec9a Fix SSO for HLSL vertex shaders. 2017-11-17 13:37:28 +01:00
Bill Hollings
e83e2b2217 CompilerMSL support and tests for OpUndef. 2017-11-15 22:44:42 -05:00
Hans-Kristian Arntzen
4f88f9750f Cleanups for HLSL vertex attribute remap.
Add CLI support as well.
2017-11-13 09:46:45 +01:00
Bill Hollings
ba865733eb Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross 2017-11-05 22:49:08 -05:00
Bill Hollings
1c18078811 Enhancements to MSL compute and entry point naming.
Support Workgroup (threadgroup) variables.
Mark if SPIRConstant is used as an array length, since it cannot be specialized.
Resolve specialized array length constants.
Support passing an array to MSL function.
Support emitting GLSL array assignments in MSL via an array copy function.
Support for memory and control barriers.
Struct packing enhancements, including packing nested structs.
Enhancements to replacing illegal MSL variable and function names.
Add Compiler::get_entry_point_name_map() function to retrieve entry point renamings.
Remove CompilerGLSL::clean_func_name() as obsolete.
Fixes to types in bitcast MSL functions.
Add Variant::get_id() member function.
Add CompilerMSL::Options::msl_version option.
Add numerous MSL compute tests.
2017-11-05 21:34:42 -05:00
Hans-Kristian Arntzen
22e94913d4 Add test for row/col-major matrix read/write for HLSL. 2017-10-26 17:40:45 +02:00
Hans-Kristian Arntzen
2ba7ed1c09 Fix tests after rebase. 2017-10-24 09:56:08 +02:00
Hans-Kristian Arntzen
a95295cb23 Remap swizzle for HLSL and RWBuffer. 2017-10-24 09:55:25 +02:00
Hans-Kristian Arntzen
ae236e7056 Add GroupSync() in HLSL. 2017-10-24 09:55:25 +02:00
Hans-Kristian Arntzen
85eb972259 Add some HLSL tests for atomics and image load store. 2017-10-24 09:55:25 +02:00
James Ross-Gowan
1f16f0d260 Use 'static const' for spec constants in HLSL
If 'const' is used, the shader expects the variable to be backed by a
constant buffer. 'static const' is probably preferred for a value that
is initialized with a constant in the HLSL source code.

FXC also emits a warning for 'const' variables with initializers, since
'static const' was probably intended.
2017-10-21 19:19:32 +11:00
Hans-Kristian Arntzen
d48876ac41 Add test for stripped cbuffer members. 2017-10-10 17:40:37 +02:00
Hans-Kristian Arntzen
94ff355812 Fix some naming issues for stripped and flattened structs. 2017-10-10 17:32:26 +02:00
Hans-Kristian Arntzen
c68c72c5be Fix ARB_enhanced_layout test. 2017-10-10 16:25:47 +02:00
Hans-Kristian Arntzen
620d01c5d6 Generate decorations for row_major/column_major in HLSL. 2017-10-10 16:11:25 +02:00
Hans-Kristian Arntzen
6feff98295 Update HLSL cbuffer tests. 2017-10-10 15:37:53 +02:00
Hans-Kristian Arntzen
4d11220aa8 Add a test for enhanced layouts. 2017-10-10 11:30:29 +02:00
Hans-Kristian Arntzen
6a7b95d2d6 Validate that std140 packing can actually be used. 2017-10-10 10:12:27 +02:00
Hans-Kristian Arntzen
c9168cd981 Merge pull request #299 from KhronosGroup/fix-173
Stamp out all variants for mod().
2017-10-06 13:53:06 +02:00
Hans-Kristian Arntzen
d4727fe696 Stamp out all variants for mod(). 2017-10-06 13:21:42 +02:00
Hans-Kristian Arntzen
8538b4c9c0 Handle empty struct declarations with best effort.
This "feature" is a bit icky as we have no useful representation of it,
so never emit code which has anything to do with empty structs.
2017-10-06 13:05:14 +02:00
Hans-Kristian Arntzen
eb58f67727 Only unroll matrices for vertex input.
Bandaid, might have to revisit this later.
2017-10-05 16:31:52 +02:00
Hans-Kristian Arntzen
067f241bf8 Runtime arrays do not work yet in MSL, so don't try to test that yet. 2017-10-02 09:24:16 +02:00
Hans-Kristian Arntzen
ecaea50739 Add SPVASM test from clspv. 2017-09-29 12:20:57 +02:00
Hans-Kristian Arntzen
aab3107a3f Add WorkGroupID/NumWorkGroups to MSL. Fix block name alias. 2017-09-29 12:16:53 +02:00
Hans-Kristian Arntzen
db5d49f04a Add SPVASM testing support for HLSL/MSL. 2017-09-29 11:07:11 +02:00
Hans-Kristian Arntzen
cff0fb57dc Add specialization constant work group size test for MSL. 2017-09-29 10:22:19 +02:00
Hans-Kristian Arntzen
825f07c04a Add test for specialization constant workgroup size on HLSL. 2017-09-29 10:21:02 +02:00
Hans-Kristian Arntzen
84f8c9935b Declare work group size constants in HLSL and MSL.
Technically not needed, but it does make compute code easier to read
compared to magical constants being used for work group size.
2017-09-29 10:15:33 +02:00
Hans-Kristian Arntzen
0e4ed4102b Only declare with specialization constant when in Vulkan semantics. 2017-09-28 12:24:04 +02:00
Hans-Kristian Arntzen
3339fd4e87 Fix case when Phi variable is a loop variable.
Need to flush variable to static expression rather than a variable.
2017-09-25 10:15:17 +02:00
Hans-Kristian Arntzen
9aa42a87af Just emit textureSize variants we actually need. 2017-09-20 10:31:56 +02:00
Hans-Kristian Arntzen
1bc5b70752 Add exhaustive image query to HLSL.
Need to strip this down somehow ...
2017-09-20 10:00:13 +02:00
Hans-Kristian Arntzen
7064c54820 Various fixes to texture/image query in GLSL. 2017-09-19 16:08:25 +02:00
James Ross-Gowan
02e6be7288 Fix texture GatherRed/Green/etc. methods for SM 5.0
Unlike GLSL, the component is selected by calling a specific method.
2017-09-12 07:20:01 +10:00
Hans-Kristian Arntzen
eab66fcd55 Update HLSL references. 2017-09-08 09:14:00 +02:00
Hans-Kristian Arntzen
656a7ba1d3 Remove irrelevant test.
The UDIV test was testing invalid SPIR-V and recent SPIRV-Tools errors
out on it.
2017-09-06 10:56:14 +02:00
Hans-Kristian Arntzen
a2229a0327 Add regression test for RMW optimizations. 2017-09-06 09:20:55 +02:00
Hans-Kristian Arntzen
9091eadb0d Support FrexpStruct/ModfStruct. 2017-09-04 10:27:08 +02:00
Hans-Kristian Arntzen
11dfcb6531 Add restrict qualifier for images. 2017-08-29 15:54:22 +02:00
Hans-Kristian Arntzen
d55898ec74 Fix declaration of coherent images. 2017-08-29 15:52:59 +02:00
Hans-Kristian Arntzen
536d888a92 Add test shader for coherent SSBO. 2017-08-28 09:02:08 +02:00
Hans-Kristian Arntzen
e8d2c8e710 Support samplerBuffer as function parameters in HLSL. 2017-08-21 10:26:44 +02:00
Hans-Kristian Arntzen
e8d5d71cad Add sampler buffer support to HLSL. 2017-08-21 10:01:03 +02:00
Hans-Kristian Arntzen
d7f38ab4bf Add support for SPV_KHR_multiview. 2017-08-15 13:28:16 +02:00
Hans-Kristian Arntzen
945425eaa8 Add some access chain tests. 2017-08-15 10:23:04 +02:00
Hans-Kristian Arntzen
af2b233582 Add test for ByteAddressBuffer vs. RWByteAddressBuffer. 2017-08-15 09:39:45 +02:00
Hans-Kristian Arntzen
e2bb5b8959 Add test for compute shader builtins. 2017-08-15 09:35:23 +02:00
Bill Hollings
1e84a379ff Fix issue #245: assignment of flattened input struct.
Emit input struct assignment by assigning member by member from stage_in struct.
Map qualified member name from pointer type, not base type.
Add Comiler::expression_type_id() function, similar to expression_type().
2017-08-12 00:21:13 -04:00
Bill Hollings
77f5812c55 Fix issue #239: compilation of shaders-msl/frag/texture-proj-shadow.frag.
Remove unsupported sampler1DShadow from shaders-msl/frag/texture-proj-shadow.frag.
Improve error message response from unsupported depth texture formats.
Fix several integer cast warnings in unrelated code.
Run ./format_all.sh on unrelated files.
2017-08-11 14:54:58 -04:00
Bill Hollings
730257cf67 Merge upstream 2017-08-10 17:27:01 -04:00
Hans-Kristian Arntzen
744d0405b0 Preserve arguments with inout unless complete writes are made. 2017-08-09 17:06:41 +02:00