KhronosGroup / Vulkan-Portability

Apache License 2.0
40 stars 4 forks source link

Add VkPhysicalDevicePortabilitySubsetFeaturesKHR:: shaderAtomicOperationLocal capability #49

Closed billhollings closed 1 year ago

billhollings commented 2 years ago

Some CTS tests fail when using atomic operations on workgroup local variables.

This might be fixable with effort within the implementations.

In the meantime, these use cases can be disabled in CTS and reported as Not Supported, by adding a VkPhysicalDevicePortabilitySubsetFeaturesKHR:: shaderAtomicOperationLocal capability.

This affects 2 CTS tests:

dEQP-VK.compute.basic.image_atomic_op_local_size_1
dEQP-VK.compute.basic.image_atomic_op_local_size_8
validateComputeFunctionArguments, line 745: error 'Compute Function(main0): missing buffer binding at index 2 for _45_atomic[0].'
  Fail (Comparison failed for pixel 0)
kvark commented 2 years ago

I think having atomics on workgroup memory is essential. Please reconsider putting an effort into fixing this instead of flagging off.

cdavis5e commented 1 year ago

Based on that error message, it looks like the problem isn't workgroup variables per se as opposed to the fact that MoltenVK isn't passing down the buffer backing an image being accessed atomically. The names of those tests corroborate this.

billhollings commented 1 year ago

Based on that error message, it looks like the problem isn't workgroup variables per se as opposed to the fact that MoltenVK isn't passing down the buffer backing an image being accessed atomically. The names of those tests corroborate this.

Ah. Good observation. I guess I didn't delve into the error message much before identifying this as an issue.

Should be fixable in MoltenVK then? That's good.

cdavis5e commented 1 year ago

This has been fixed in MoltenVK.