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_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_KHR_vulkan_memory_model
VK_KHR_zero_initialize_workgroup_memory
VK_EXT_depth_clip_control
VK_EXT_external_memory_metal
.VK_EXT_image_2d_view_of_3d
VK_EXT_index_type_uint8
VK_EXT_load_store_op_none
VK_EXT_pipeline_robustness
VK_EXT_tooling_info
- Add support for
B5G6R5_UNORM_PACK16
B5G5R5A1_UNORM_PACK16
, andB8G8R8A8
formats using swizzle.- Convert
MVK_CONFIG_USE_MTLHEAP
to enumeration, and set active by default to supportVK_EXT_image_2d_view_of_3d
, except on AMD devices.- Remove
glslang
as dependency library.MoltenVKShaderConverter
no 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.yml
to 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
vkGetPhysicalDeviceToolProperties
as a device entry-point.- Fix memory leak of
CAEDRMetadata
inMVKSwapchain
.- Fix not saving
shouldFixupClipSpace
when serializing a pipeline.- Fix header namespace pollution.
- Revert use of size 1 for variable length arrays in shader.
- Add
MTLHeaps
export/import for emulated textures.MTLHeaps
on 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.
vkCmdWaitEvents
end current encoder beforeencodeWait
.- Remove support for deprecated
VK_NV_glsl_shader
extension, and GLSL conversions using MoltenVKShaderConverter.- Remove use of
VK_ERROR_INVALID_SHADER_NV
error 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
pViewportState
pointer 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
depthClamp
andshaderTessellationAndGeometryPointSize
features 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 aVkInstance
has 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.