Known Limitations

  • Resources created with VK_IMAGE_TILING_OPTIMAL and VK_TENSOR_TILING_OPTIMAL_ARM flags cannot be used with memory aliasing.

  • Data graph pipeline creation without a shader module is not supported.

  • Accuracy of MATMUL computation might be incorrect for mixed reduce float types such as fp8e5m2xfp8e4m3 and fp8e4m3xfp8e5m2.

  • Usage of the ‘shaderFloat64’ feature requires support from the underlying ICD. This relates to high-precision types. Support of it can be checked with:

    vulkaninfo 2>&1 | grep -e 'shaderFloat64\|deviceName'
    

    If this feature is not available, add the --use-float-as-double flag to the build script command to use 32-bit float instead of double. This behavior is automatically enabled on Darwin and Android™.

Darwin driver limitations

Optical-flow workloads are not currently supported on Darwin. MoltenVK and KosmicKrisp also expose different optional Vulkan® features, so a workload can be supported by one driver and rejected by the other. Check vulkaninfo and the selected driver’s release notes when a required extension is unavailable.

MoltenVK does not have full Vulkan® coverage. Some notable issues are:

  • Several Vulkan® extensions are not available in MoltenVK, e.g. custom border color.

  • High-precision types in buffers/push constants is currently not supported, which forces lower precision to be used instead.

  • Passing Shader Storage Buffer Objects, SSBOs, to functions is currently not supported in MoltenVK.

KosmicKrisp is a technical preview with stricter requirements. Timestamp-based graph profiling is unavailable when its selected queue reports timestampValidBits as zero.