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
Hans-Kristian Arntzen
48ccde3779
Support OpConstantNull.
2017-08-03 14:32:29 +02:00
Hans-Kristian Arntzen
a4fafa0607
Fix edge-case where do/while body is a dominator.
...
Shows up quite a lot in inlined code, should get more test coverage in
this area ...
2017-08-02 11:58:24 +02:00
Hans-Kristian Arntzen
f337e50844
Remove MSL textureProj test shader. Need to sort it out later.
2017-07-31 10:16:07 +02:00
Hans-Kristian Arntzen
cbcaca5a39
Fix textureProj with shadow on GLSL.
2017-07-31 10:05:32 +02:00
Hans-Kristian Arntzen
24c35e3fb3
Merge pull request #235 from KhronosGroup/hlsl-spec-constant
...
Declare specialization constants in HLSL.
2017-07-30 06:32:20 +02:00
Hans-Kristian Arntzen
98c76eed69
Declare specialization constants in HLSL.
2017-07-29 22:13:27 +02:00
Hans-Kristian Arntzen
dbaaf1b69e
Add test for default member names.
2017-07-29 21:58:37 +02:00
Hans-Kristian Arntzen
955319aa66
Update test files.
2017-07-29 21:47:28 +02:00
Hans-Kristian Arntzen
6ff9007311
Fix unary enclosures.
2017-07-24 10:17:19 +02:00
Hans-Kristian Arntzen
c8d60914c4
Add support for SampleId/SampleMask/SamplePosition builtins.
2017-07-24 10:07:31 +02:00
Hans-Kristian Arntzen
df6aa0e609
Support SampleCmpLevelZero on cubes as well.
2017-07-24 09:28:24 +02:00
Bill Hollings
5f42746389
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2017-06-30 19:11:46 -04:00
Bill Hollings
f591bc0d4a
CompilerMSL enhancements.
...
Support BuiltInFragDepth.
Emit interface block for StorageClassUniformConstant.
Throw exception when output or fragment input structs contain matrix or array.
Dynamically created interface structs sorted by location number instead of alphabetically.
Add Compiler::is_array() function.
2017-06-30 19:10:46 -04:00
Hans-Kristian Arntzen
ecf56cff2b
Add support for SM5.1 ConstantBuffer<T>.
2017-06-30 10:34:21 +02:00
David Srbecky
77b5b4446b
Always make a copy when handling OpCompositeInsert
...
The modified object might not be mutable (e.g. shader input).
Added a test for the case when this happens.
2017-06-26 18:32:53 +01:00
Hans-Kristian Arntzen
ad2b7c05e7
Implement workaround for textureLod on 2D array shadow.
...
This does not exist in GLSL, but it exists in HLSL if LOD == 0.0.
2017-06-23 09:45:42 +02:00
Hans-Kristian Arntzen
a1f5453519
Assign block locations to members in MSL.
2017-06-21 09:55:46 +02:00
Hans-Kristian Arntzen
de33d89074
Add explicit in/out locations everywhere.
...
Needed for newer glslang. With Vulkan semantics for SPIR-V, all
locations must be explicitly defined.
2017-06-21 09:39:08 +02:00
Hans-Kristian Arntzen
620da7b943
Add basic support for : register() declaration in HLSL.
2017-06-17 10:15:32 +02:00
Bill Hollings
1f83856366
CompilerMSL add support for MSL specialization function constants.
...
CompilerMSL add emit_custom_functions() function.
CompilerMSL restrict use of as_type<> cast to necessary conditions.
CompilerMSL refactor get_declared_struct_member_size() and
get_declared_struct_member_alignment() functions, and remove
unnecessary get_declared_type_size() functions.
Add test shaders-msl/vulkan/frag/spec-constant.vk.frag.
2017-06-15 15:24:22 -04:00
Bill Hollings
ba245697f1
Merge branch 'master' of https://github.com/KhronosGroup/SPIRV-Cross
2017-06-01 10:20:00 -04:00
Hans-Kristian Arntzen
470ae7a7f6
Add multidimensional array flattening test.
2017-05-31 10:00:52 +02:00
Hans-Kristian Arntzen
842eff9647
Merge pull request #188 from KhronosGroup/sso
...
Add support for Separate Shader Objects
2017-05-31 09:55:34 +02:00
Bill Hollings
192bdc9516
CompilerMSL elide unused builtins from entry function input and output structs.
...
Add Compiler::has_active_builtin() function.
Update test reference shaders that included unused builtins.
2017-05-24 09:31:38 -04:00
Bill Hollings
d77de7ab80
CompilerMSL add support for MSL qualifiers on gl_ClipDistance and other array-based builtins.
2017-05-23 13:24:41 -04:00
Bill Hollings
0f97ffd8be
Fix merge conflicts with upstream master, plus fixes from review of PR #186 .
2017-05-23 10:44:10 -04:00
Hans-Kristian Arntzen
91379fb0d0
Implement more sophisticated check for point_size.
2017-05-23 10:15:22 +02:00