Commit Graph

3782 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
2ccc81fd82
Merge pull request #2317 from KhronosGroup/fix-2309
MSL: Handle missing FP16 trancendental overloads.
2024-04-29 12:02:51 +02:00
Hans-Kristian Arntzen
cbaa86982a MSL: Handle missing FP16 trancendental overloads. 2024-04-29 11:49:28 +02:00
Hans-Kristian Arntzen
71fe131ed0
Merge pull request #2314 from js6i/gpu-crash
Remove spvDescriptor wrapper in spvDescriptorArray
2024-04-29 10:17:43 +02:00
Jan Sikorski
84b4a54b0d Updated tests. 2024-04-18 09:19:01 +02:00
Jan Sikorski
298c2315f5 MSL: Remove pointer wrapper stored in spvDescriptorArray.
This works around what looks like a compiler bug which can cause GPU crashes.
2024-04-18 09:13:29 +02:00
Hans-Kristian Arntzen
cb956675fd
Merge pull request #2312 from KhronosGroup/fix-2305
MSL: Inherit interpolation qualifiers through recursive composites.
2024-04-15 16:40:47 +02:00
Hans-Kristian Arntzen
dc6db52356 MSL: Inherit interpolation qualifiers through recursive composites. 2024-04-15 15:44:21 +02:00
Hans-Kristian Arntzen
8edbda4206
Merge pull request #2311 from KhronosGroup/fix-2303
MSL: Handle Atomic{S,U}{Min,Max} with mismatched image sign.
2024-04-15 14:47:18 +02:00
Hans-Kristian Arntzen
4f17bf76b1 MSL: Handle Atomic{S,U}{Min,Max} with mismatched image sign.
Gross reinterpret_cast, but gotta do what you gotta do.
2024-04-15 14:29:01 +02:00
Hans-Kristian Arntzen
25b7772102
Merge pull request #2310 from KhronosGroup/fix-2300
MSL: Fix SUMulExtended for 64-bit inputs.
2024-04-15 13:55:25 +02:00
Hans-Kristian Arntzen
eef4c2af9c MSL: Fix SUMulExtended for 64-bit inputs. 2024-04-15 13:37:00 +02:00
Hans-Kristian Arntzen
56f24d86ec
Merge pull request #2304 from etang-cw/ArrayCleanup
Use recursive template for spvArrayCopy
2024-04-15 11:47:10 +02:00
Hans-Kristian Arntzen
06407561ec
Merge pull request #2306 from KhronosGroup/pr-2292
MSL: Implement support for EXT_mutable_descriptor_type and general aliasing with argument buffers
2024-04-03 15:16:49 +02:00
Hans-Kristian Arntzen
061bf6b445 Fix tabbing nits. 2024-04-03 13:49:41 +02:00
Hans-Kristian Arntzen
8219ccf706 MSL: Reassign bindings so they work with decoration binding in test. 2024-04-03 13:45:18 +02:00
Hans-Kristian Arntzen
ee77265ae5 MSL: Workaround compiler issue with image fence when used as reference. 2024-04-03 13:28:12 +02:00
Hans-Kristian Arntzen
218a8bfd86 MSL: Improve argument buffer descriptor aliasing implementation. 2024-04-03 13:15:51 +02:00
Hans-Kristian Arntzen
32e33e40b5 Cleanup overlap tag from review. 2024-04-02 12:42:12 +02:00
Jan Sikorski
ffb2c9bb6f MSL: Added tests for overlapping bindings. 2024-04-02 12:01:07 +02:00
Jan Sikorski
221a517be5 MSL: Pass variable id when emitting image entry point declarations. 2024-04-02 12:01:07 +02:00
Jan Sikorski
064186e474 MSL: Check for device argument buffers for overlapping bindings. 2024-04-02 12:01:07 +02:00
Jan Sikorski
760a659f5c MSL: Avoid emitting multiple declaration of the same variable. 2024-04-02 12:01:07 +02:00
Jan Sikorski
44a5f1fc3e MSL: Add support for overlapping bindings.
This adds support for bindings which share the same DescriptorSet/Binding pair.

The motivating example is vkd3d, which uses overlapping arrays of resources to
emulate D3D12 descriptor tables. The generated MSL argument buffer only
includes the first resource (in this example 't0'):

struct spvDescriptorSetBuffer2
{
    array<texture2d<float>, 499968> t0 [[id(0)]];
    // Overlapping binding: array<texture3d<float>, 499968> t2 [[id(0)]];
};

When t2 is referenced, we cast the instantiated member:

float4 r1 = spvDescriptorSet2.t0[_79].sample(...);
float4 r2 = (*(constant array<texture3d<float>, 499968>*)&spvDescriptorSet2.t0)[_97].sample(...);
2024-04-02 12:01:07 +02:00
Hans-Kristian Arntzen
f9393f44d3 MSL: Get rid of obsolete "is pointer" methods.
Just use the common ones.
2024-04-02 11:47:54 +02:00
Evan Tang
cc542f8147 Use recursive template for spvArrayCopy
Comment claims we can't, but I tested a number of older Metal compilers (Xcode 8 targeting macOS 10.11, macOS 10.13 online compiler, Xcode 14 targeting iOS 8) and none of them had any issues with it
2024-04-01 17:11:31 -05:00
Hans-Kristian Arntzen
7d92d7d879
Merge pull request #2299 from KhronosGroup/fix-2285
Block loop optimization if Phi is used.
2024-03-18 12:31:21 +01:00
Hans-Kristian Arntzen
b4c84bb135 Block loop optimization if Phi is used.
Somehow this hasn't been caught until now. Impressive.

We'll have to emit side effects in condition block to make this work,
which breaks loop conditionals.
2024-03-18 12:09:38 +01:00
Hans-Kristian Arntzen
1e3f31e69c
Merge pull request #2298 from KhronosGroup/pr-2297
Land PR 2297
2024-03-18 11:56:15 +01:00
Hans-Kristian Arntzen
48aba6ab03 Add test for multi-function Private LUT. 2024-03-18 11:25:59 +01:00
Hans-Kristian Arntzen
48bede6a2a Smaller cleanups on multi-function Private LUTs. 2024-03-18 11:25:38 +01:00
Hans-Kristian Arntzen
6ee80151e4 Merge branch 'global-luts' of https://github.com/js6i/SPIRV-Cross into pr-2297 2024-03-18 11:04:53 +01:00
Hans-Kristian Arntzen
326199641d
Merge pull request #2296 from KhronosGroup/vulkan-sdk-1.3.280-moltenvk
MSL: Merge `vulkan-sdk-1.3.280-moltenvk` branch into `main` branch.
2024-03-18 10:50:37 +01:00
Jan Sikorski
8465ec8109 Support cases of LUTs which are not function local.
Prevent cases where arrays that are globally defined constants are redeclared
on stack. On Intel macs, declaring a large, statically initialized
spvUnsafeArray on stack may cause an internal compiler error.
2024-03-15 17:19:49 +01:00
Bill Hollings
de0e72a0db
Merge pull request #2293 from billhollings/atomic_compare_exchange_weak-texture_1D_as_2D
MSL: atomic_compare_exchange_weak() support CompilerMSL:msl_options.texture_1D_as_2D.
2024-03-11 23:27:25 -04:00
Bill Hollings
5e6500466c MSL: atomic_compare_exchange_weak() support CompilerMSL:msl_options.texture_1D_as_2D.
CompilerMSL:msl_options.texture_1D_as_2D emulates a Metal 1D texture
as a 2D texture in order to expand features available for 1D textures.
Support accessing such textures as 2D for atomic_compare_exchange_weak().
2024-03-11 22:42:43 -04:00
Hans-Kristian Arntzen
2a7c818492
Merge pull request #2290 from KhronosGroup/fix-2287
MSL: Fix type hierarchy for extended vectors.
2024-03-06 15:26:57 +01:00
Hans-Kristian Arntzen
261589a5b2 MSL: Fix type hierarchy for extended vectors. 2024-03-06 14:33:02 +01:00
Hans-Kristian Arntzen
c2eb27c172
Merge pull request #2289 from KhronosGroup/fix-2279
Fix crash when traversing PtrAccessChain to OpTypeStruct.
2024-03-06 14:32:27 +01:00
Hans-Kristian Arntzen
572c413176 Fix crash when traversing PtrAccessChain to OpTypeStruct. 2024-03-06 13:14:54 +01:00
Hans-Kristian Arntzen
4db95b762f
Merge pull request #2288 from KhronosGroup/fix-2272
MSL: Improve handling of BDA + atomics.
2024-03-05 15:03:56 +01:00
Hans-Kristian Arntzen
c524e3396f MSL: Improve handling of BDA + atomics. 2024-03-05 14:30:46 +01:00
Hans-Kristian Arntzen
5f7a6de552
Merge pull request #2282 from hypengw/main
GLSL: Fix atomic_uint being incorrectly generated as uint
2024-02-26 16:31:26 +01:00
Hans-Kristian Arntzen
346c734955
Merge pull request #2283 from KhronosGroup/pr-2281
Land PR 2281
2024-02-26 16:31:07 +01:00
Hans-Kristian Arntzen
855a5c369f MSL: Also test image atomic for image2DArray. 2024-02-26 15:51:32 +01:00
Hans-Kristian Arntzen
7e0c9ab9ed MSL: Nit from review. 2024-02-26 15:51:32 +01:00
Jan Sikorski
052c57e2f2 MSL: Pass texture array index separately to atomic texture operations. 2024-02-26 15:51:32 +01:00
Hans-Kristian Arntzen
08391d91f0
Merge pull request #2278 from billhollings/fix-opcopyobject-temp-var
OpCopyObject declare a temp var of base type, not pointer type.
2024-02-26 15:35:01 +01:00
penghaiyi
18cb2ce961 GLSL: Fix atomic_uint being incorrectly generated as uint 2024-02-23 09:33:08 +08:00
Bill Hollings
fa0d4b9057 OpCopyObject declare a temp var of base type, not pointer type.
Fixes MSL issue where temp variable was declared as pointer var, and
OpCopyObject attempted to copy a base type var into the pointer var.
2024-02-15 19:34:30 -05:00
Hans-Kristian Arntzen
b8fcf307f1
Merge pull request #2274 from DmitryTsyganov/error_message_fix
Add CompilerError constructor that accepts const char* as a parameter (Fixes #2273)
2024-02-05 12:54:10 +01:00