Is programmable blending with order-independent transparency possible with Vulkan?

Ah, a typical Microsoft feature: incorrectly designed and underspecified. I have no idea why Microsoft felt the need to associate critical sections with access to particular objects. Especially since the inference is that reading and writing would be individually atomic, but not the stuff between the read and the write (which is not the case).

The OpenGL equivalent, ARB_fragment_shader_interlock, is far superior. You name a critical section of code which is locked, and everything works. You can even specify whether you want the locking done per-pixel or per-sample. You can specify whether ordering matters or not (your blend function may not care about order).

In any case, Vulkan does not (as of yet) have interlocking. There are no interlock opcodes for it in SPIR-V either. But when it does get this feature, I guarantee you it’ll work more like the OpenGL equivalent than the D3D12 one…