Skip to content

Releases: KhronosGroup/MoltenVK

v1.4.1-rc1

25 Nov 13:43
db445ff

Choose a tag to compare

Merge pull request #2666 from billhollings/rel-1.4.1

Update for release 1.4.1.

Release v1.4.1

30 Nov 22:31
db445ff

Choose a tag to compare

  • Add support for the following extensions:
    • VK_KHR_maintenance9
    • VK_KHR_shader_fma
    • VK_KHR_surface_maintenance1
    • VK_KHR_swapchain_maintenance1
  • Add support for new features and extensions when using MVK_USE_METAL_PRIVATE_API:
    • Disabling primitive restart
    • VK_EXT_legacy_dithering
    • VK_EXT_non_seamless_cube_map
    • VK_EXT_primitive_topology_list_restart
    • VK_EXT_provoking_vertex
  • Improved occlusion query support:
    • Add support for occlusion queries across multiple renderpasses.
    • Improve performance by accumulating occlusion quieries in parallel,
      and using untracked buffers to avoid encoder serialization.
  • New descriptor state tracker implementation to improve performance.
  • New descriptor set/pool implementation:
    • The new implementation is less forgiving of applications that don't properly manage the lifetime
      of their descriptors (and bind them after the objects they point to have been destroyed).
      Use MVK_CONFIG_LIVE_CHECK_ALL_RESOURCES=1 to revert any crashes this might cause,
      or mark potentially-destroyed descriptors with VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT.
  • Add CMake build support.
  • Added working demo target for VisionOS in Cube Demo.
  • Raise minimum target to macOS 11.0 / iOS 14.0 / tvOS 14.0
  • Add support for VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT.
  • Reject image usages whose format features are not supported.
  • Return VK_ERROR_OUT_OF_POOL_MEMORY when running out of descriptor sets.
  • Make vkGetPhysicalDeviceToolProperties() an instance function.
  • Enable sample LOD bias for Xcode 26.
  • Update robustness support levels for different GPU types.
  • Update max texture dimensions for Apple10 GPU.
  • Allow host-coherent optimal tiling images on macOS with Apple GPU.
  • Add Metal4 and Apple10 GPU family logs.
  • Fix depth bounds test and logic op implementations.
  • Fix VkExternalMemory*CreateInfo not allowing host memory handle types.
  • Fix improper boundary error when requesting exactly the number of variable descriptors allocated.
  • Fix regression on functions used by multiple extensions.
  • Fix improper use of dynamic depth/stencil attachment.
  • Fix out-of-bound access when using multiview with multiple subpasses.
  • Fix vertexStrideAlignment value without Apple5.
  • Fix tvOS ASTC HDR formats.
  • Add base GPU family for samplerMipLodBias support.
  • Deprecate configuration parameter MVKConfiguration::supportLargeQueryPools and corresponding environment variable
    MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS, as obsolete and ignored. Large query pools are now supported always.
  • Disable Mac Catalyst builds from all and all-debug in Makefile, due to unresolved issues with Mac Catalyst builds.
  • Add CI job for building for macOS with private API.
  • Update to latest SPIRV-Cross:
    • MSL: Support image cube atomics on MSL 4.0+.
    • MSL: Fix array copy to array inside stage IO Blocks.
    • MSL: Fix boolean spec const as_type<> invalid output.
    • MSL: Don't emit const device for readonly SSBO.
    • MSL: Add some extra reserved function names.
    • MSL: Support 64-bit subgroup shuffles.
    • MSL: Get rid of obsolete buffer_aliases_argument vector.
    • MSL: Ensure dynamic buffer offsets get a unique name.
    • MSL: Fix missing use of add_local_variable_name for dynamic offset resources.
    • MSL: Rethink how discrete variable count descriptor arrays are emitted.
    • MSL: Throw on attempting to alias unrolled discrete descriptors.
    • MSL: Fix mesh shader with no vertex outputs.
    • MSL: Fix writing default gl_PointSize in tessellation shaders.
    • MSL: Rethink "const device" handling.
    • MSL: Narrow down which analysis passes need deep ID mapping.
    • MSL: Support OpFmaKHR.

Release v1.4.0

20 Aug 14:04
4588705

Choose a tag to compare

  • Add support for Vulkan 1.4.
  • Add support for extensions:
    • VK_KHR_dynamic_rendering_local_read
    • VK_KHR_global_priority
    • VK_KHR_line_rasterization
    • VK_KHR_maintenance5
    • VK_KHR_maintenance8
    • VK_KHR_present_id
    • VK_KHR_present_id2
    • VK_KHR_present_wait
    • VK_KHR_present_wait2
    • VK_KHR_shader_float_controls2
    • VK_KHR_shader_maximal_reconvergence
    • VK_KHR_shader_quad_control
    • VK_KHR_shader_relaxed_extended_instruction
    • VK_KHR_shader_subgroup_uniform_control_flow
    • VK_KHR_surface_protected_capabilities
    • VK_EXT_line_rasterization
  • vkDeviceWaitIdle() & vkQueueWaitIdle() now wait even when VK_ERROR_DEVICE_LOST error is encountered.
  • For behaviouraly consistency, require deprecated unofficial extension VK_MVK_moltenvk be enabled to access
    the proc addrs for functions vkSetMoltenVKConfigurationMVK() and vkGetPhysicalDeviceMetalFeaturesMVK().
  • Fix missed supported usage in image format properties checks.
  • Fix high latency on present wait.
  • Fix shader cache misses within pipeline cache.
  • Fix misalignment between pipeline pixel formats and dynamic rendering attachments.
  • Fix attempting to add memoryless images to residency sets.
  • Fix color-depth image copies and image copies using buffer with multiple layers.
  • Enable shaderRoundingModeRTEFloat16/32.
  • Move vkGetPhysicalDeviceMetalFeaturesMVK() from mvk_private_api.h to mvk_deprecated_api.h.
  • Re-expose proc addr for deprecated VK_MVK_moltenvk extension functions.
  • Add the AMD Radeon PRO W6800X as a device with 32-wide SIMD-groups.
  • Apple, AMD, and Intel devices use parallelograms for lines.
  • Fix counter set memory leak on workaround to AMD RDNA devices
  • Update to latest SPIRV-Cross:
    • MSL: Add support for DebugPrintf.
    • MSL: Fix crash due to regression caused by recent changes to location calculations.
    • MSL: Add option to provide a default point size.
    • MSL: Implement clustered subgroup operations for sizes other than 4.
    • MSL: Fix generation of the WorkgroupSize built-in.
    • MSL: Implement accurate OpSMod.
    • MSL: Always emit gl_Layer for multiview.
    • MSL: Don't emit const for BDA pointers.
    • MSL: Fix loading BDA from std140 UBO.
    • MSL: Fix issues with fp16 trancendentals.
    • MSL: Fix edge case where a reference is taken of packed vector element.
    • MSL: Fix crash when using force-native-arrays in some cases.
    • MSL: Don't use fast::normalize for half at all.
    • MSL: Implement atomic_thread_fence for MSL 3.2+.
    • MSL: Always emit access qualifier when emitting coherency.
    • MSL: Support SPIR-V Fast Math execution modes and decorations.
    • MSL: Deal with spec constant arrays which depend on composite extract.
    • MSL: Attempt to deal with float controls and trancendentals.
    • MSL: Rethink add_pragma_line() and add_typedef_line().
    • GLSL/MSL: Add support for SPV_KHR_quad_control.

v1.4.0-rc1

29 Jul 19:33

Choose a tag to compare

Update Whats_New.md for 1.4.0 release.

v1.3.0-rc1

28 Apr 22:35
49b97f2

Choose a tag to compare

Merge pull request #2509 from billhollings/amd-disable-mtlheap

Disable MVK_CONFIG_USE_MTLHEAP for AMD devices by default.

Release v1.3.0

02 May 00:46
49b97f2

Choose a tag to compare

  • 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, and B8G8R8A8 formats using swizzle.
  • Convert MVK_CONFIG_USE_MTLHEAP to enumeration, and set active by default to support
    VK_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 in MVKSwapchain.
  • 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 before encodeWait.
  • 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 before encodeWait.
  • Add missing depthClamp and shaderTessellationAndGeometryPointSize 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 a VkInstance 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.

v1.2.11-artifacts

08 Oct 20:12
1a2a131

Choose a tag to compare

Build artifacts for release v1.2.11.

v1.2.11-rc1

01 Oct 15:34
81541f6

Choose a tag to compare

Merge pull request #2360 from billhollings/vulkan-sdk-1.3.296

Update dependency libraries to match Vulkan SDK 1.3.296.

Release for Vulkan SDK 1.3.296

02 Oct 22:35
81541f6

Choose a tag to compare

Note: An issue occurred in publishing the build artifacts for this release. If you are looking for the release build artifacts, you can find them here.

  • Support dynamically allocating descriptors when pool is exhausted.
  • Deprecate MVKConfiguration::preallocateDescriptors and MVK_CONFIG_PREALLOCATE_DESCRIPTORS environment variable.
  • vkAllocateDescriptorSets(): Per Vulkan spec, if any descriptor set allocation
    fails, populate all descriptor set pointers with VK_NULL_HANDLE. In addition,
    return VK_ERROR_FRAGMENTED_POOL if failure was due to pool fragmentation.
  • vkUpdateDescriptorSets(): Per Vulkan spec, allow write or copy beyond the
    end of a descriptor binding count, including inline uniform block descriptors.
  • Update VkFormat capabilities based on latest Metal docs.
  • Ensure all MoltenVK config info set by VK_EXT_layer_settings is used.
  • Advertise VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT and
    VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT for storage texel buffers.
  • Support storage images in Metal argument buffers on iOS.
  • vkUpdateDescriptorSets(): Support writing beyond descriptor binding size if subsequent bindings are of same type.
  • Fix rendering issue with render pass that immediately follows a kernel dispatch.
  • Fix occasional GPU crash when a smaller descriptor set replaces a larger one.
  • Fix race condition when VkImage destroyed while used by descriptor.
  • Fix crash in vkCmdPushDescriptorSetWithTemplateKHR() when entries in
    VkDescriptorUpdateTemplateCreateInfo are not sorted by offset.
  • Fix issue where vkQueueWaitIdle() and vkDeviceWaitIdle() were not
    waiting for all commands to be enqueued before enqueuing wait operation.
  • Fix occassional incorrect detection of available descriptor sets during vkAllocateDescriptorSets().
  • Fix shader conversion failure when using storage images on iOS & tvOS with Tier 1 argument buffer support.
  • Fix occasional memory leak where spurious texel buffer was accidentally created during image-memory unbinding.
  • Fix memory leak in debug utils messenger.
  • Fix crash when VkDescriptorSetLayout is destroyed while descriptor set is in use.
  • Fix build failure on VisionOS 2.0 platform.
  • Support VK_FORMAT_A2B10G10R10_UNORM_PACK32 and VK_FORMAT_A2R10G10B10_UNORM_PACK32 formats as surface formats on all platforms.
  • Add MTLStoreAction mapping for VK_ATTACHMENT_STORE_OP_NONE.
  • Add estimate of presentMargin in returned data from vkGetPastPresentationTimingGOOGLE().
  • Update value of minSubgroupSize on AMD RX6600 to 32.
  • Fix support for running on tvOS 13.
  • Only add present handler if VK_GOOGLE_display_timing info is available during presentation.
  • Move primitive-restart-disabled warning from renderpass to pipeline creation, to reduce voluminous log noise.
  • iOS: Support storage images in Metal argument buffers.
  • Add MVKConfiguration::shaderLogEstimatedGLSL, and environment variable MVK_CONFIG_SHADER_LOG_ESTIMATED_GLSL,
    to enable or disable the logging of estimated GLSL code, and disable it by default
  • Fix endless loop in fetchDependencies when -- is missing on platform names.
  • Update dependency libraries to match Vulkan SDK 1.3.296.
  • Update MVK_PRIVATE_API_VERSION to version 43.
  • Update to latest SPIRV-Cross:
    • Various non-feature maintenance updates.

v1.2.11-b1

10 Sep 22:15
cf3a02d

Choose a tag to compare

Merge pull request #2333 from billhollings/sdk-1.3.295b

Update dependency libraries to match Vulkan SDK 1.3.295 beta.