MoltenVK v1.3.0 has been released and includes several updates, such as support for Vulkan 1.3 and various extensions like VK_KHR_index_type_uint8, VK_KHR_load_store_op_none, VK_KHR_maintenance4, VK_KHR_maintenance6, VK_KHR_maintenance7, VK_KHR_shader_expect_assume, VK_KHR_shader_subgroup_rotate, VK_KHR_shader_terminate_invocation, VK_EXT_depth_clip_control, VK_EXT_external_memory_metal, and formats B5G6R5_UNORM_PACK16 and B8G8R8A8 that use swizzle. Additionally, MVK_CONFIG_USE_MTLHEAP has been updated to an enumeration. Additionally, MVK_CONFIG_USE_MTLHEAP has been converted to an enumeration.
The release eliminates glslang as a dependency library and excludes GLSL's shaders as input. The release also tackles memory management concerns in MVKSwapchain, resolves memory leaks in CAEDRMetadata, and minimizes the number of unused pipeline bindings allocated for argument buffers. The release also resolves issues related to the AMD driver's malfunctioning blit encoder timestamp sampling, incorporates updates for macOS 13/Xcode 14, and corrects compilation with MVK_USE_CEREAL=0. The release also includes the newest SPIRV-Cross, which has better support for matching tessellation input and output, adds SPV_KHR_expect_assume, and improves bindless helper templates, rasterization, and debug labels.
MoltenVK Release v1.3.0
- Add support for Vulkan 1.3.
- Add support for extensions:
VK_KHR_index_type_uint8VK_KHR_load_store_op_noneVK_KHR_maintenance4VK_KHR_maintenance6VK_KHR_maintenance7VK_KHR_shader_expect_assumeVK_KHR_shader_subgroup_rotateVK_KHR_shader_terminate_invocationVK_KHR_vulkan_memory_modelVK_KHR_zero_initialize_workgroup_memoryVK_EXT_depth_clip_controlVK_EXT_external_memory_metal.VK_EXT_image_2d_view_of_3dVK_EXT_index_type_uint8VK_EXT_load_store_op_noneVK_EXT_pipeline_robustnessVK_EXT_tooling_info- Add support for
B5G6R5_UNORM_PACK16B5G5R5A1_UNORM_PACK16, andB8G8R8A8formats using swizzle.- Convert
MVK_CONFIG_USE_MTLHEAPto enumeration, and set active by default to supportVK_EXT_image_2d_view_of_3d, except on AMD devices.- Remove
glslangas dependency library.MoltenVKShaderConverterno longer accepts GLSL` shaders as input.- Fixes to managing descriptor set allocation in a Metal argument buffer.
- Fix SPIRV-Cross namespace build error on some alternate build environments.
- Fix recent failure of
CI.ymlto upload release build artifacts to GitHub.- Fix memory management issue in
MVKSwapchain.- Fix indirect index for triangle fan topology.
- Fix crash when shader validation is enabled.
- Fix dynamic vertex stride with tessellation.
- Fix Metal API violation when using
VK_KHR_swapchain_mutable_format.- Fix designation of
vkGetPhysicalDeviceToolPropertiesas a device entry-point.- Fix memory leak of
CAEDRMetadatainMVKSwapchain.- Fix not saving
shouldFixupClipSpacewhen serializing a pipeline.- Fix header namespace pollution.
- Revert use of size 1 for variable length arrays in shader.
- Add
MTLHeapsexport/import for emulated textures.MTLHeapson Apple Device Simulator must use private storage.- Remove atomic usage for
RG32Uint.- Handle shader specializtion with macros.
- Use Metal residency sets when available.
- Implement barriers using Metal fences.
vkCmdWaitEventsend current encoder beforeencodeWait.- Remove support for deprecated
VK_NV_glsl_shaderextension, and GLSL conversions using MoltenVKShaderConverter.- Remove use of
VK_ERROR_INVALID_SHADER_NVerror code.- Reduce number of unused pipeline bindings reserved for argument buffers.
- Disable unsupported Metal Pixel formats for iOS/tvOS Simulator.
- Revert to fixed number of argument buffer binding reservations.
- Ignore allowed bad
pViewportStatepointer if rasterization is disabled.- Improved estimation of vertex attribute buffer count when reserving for implicit buffer.
- Fix header-hygiene warning violations.
MVKCmdWaitEvents: end current encoder beforeencodeWait.- Add missing
depthClampandshaderTessellationAndGeometryPointSizefeatures to tvOS.- Update features overrides to all Simulators: iOS, tvOS, visionOS.
- Fix a crash when searching the first enabled bit in a completely disabled bit array.
- When shader specifies both WorkgroupSize builtin and LocalSizeId, the builtin takes precedence.
- When logging a pipeline layout, log contained descriptor set layouts.
- Add debug labels to barrier fences.
- Allow the proc address of
vkGetMoltenVKConfigurationMVK()to be retrieved before aVkInstancehas been created.- Work around 10.15 AMD driver's broken blit encoder timestamp sampling.
- GitHub CI update legacy build to macOS 13 / Xcode 14.
- Fix compile with
MVK_USE_CEREAL=0.- Update copyright notices to year 2025.
- Update to latest SPIRV-Cross:
- MSL: Support broader tessellation I/O matching for
VK_KHR_maintenance4.- MSL: Add support for
SPV_KHR_expect_assume.- GLSL/MSL: Implement
SPV_KHR_subgroup_rotate.- MSL: Implement subgroup clustered rotate.
- MSL: Pad array elements in Metal argument buffer when shader declares scalar.
- MSL: Expose information about specialization constants - macro mapping
- MSL: Use unpacked arguments in texture arguments.
- MSL: Fix emission of bindless helper template for bindless SSBO.
- MSL: Use actual result type member as cast type for mulhi.
- MSL: Terminate function with return value using return if ending in unreachable.
- MSL: Add option to disable rasterization depending on usage.
- MSL: Always pass BDA by value into functions.
- MSL: Apply input override on all flattened members in interface block.
- GLSL/MSL: Support
VK_KHR_zero_initialize_workgroup_memory- MSL: Treat pointer to vector as scalar type when bitcasting.
- MSL: Use the more proper pointer typing.
- MSL: Use decltype for getting return of gather.
- MSL: Remove
spvForward().- MSL: Fix gather functions on Sequoia.
- MSL: Fix crash when per-primitive variables are not used.
