Skip to content

Releases: KhronosGroup/MoltenVK

Release for Vulkan SDK 1.3.261

17 Aug 23:02
02a8c01
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_incremental_present
    • VK_KHR_shader_non_semantic_info
    • VK_EXT_4444_formats
    • VK_EXT_calibrated_timestamps
    • VK_EXT_pipeline_creation_feedback
    • VK_EXT_shader_demote_to_helper_invocation
    • VK_EXT_shader_subgroup_ballot
    • VK_EXT_shader_subgroup_vote
  • Add support for VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN.
  • Support building MoltenVK for visionOS.
  • Ensure non-dispatch compute commands don't interfere with compute encoding state used by dispatch commands.
  • Support maximizing the concurrent executing compilation tasks via MVKConfiguration::shouldMaximizeConcurrentCompilation
  • Support VK_PRESENT_MODE_IMMEDIATE_KHR if VkPresentTimeGOOGLE::desiredPresentTime is zero.
  • Add support for VK_PRESENT_MODE_IMMEDIATE_KHR to macOS Cube demo.
  • Allow both renderPass and VkPipelineRenderingCreateInfo to be missing.
  • Fix sync delay between calls to vkQueueSubmit() on non-Apple-Silicon devices.
  • Ensure Xcode simulator always uses 256B buffer alignment.
  • Don't attempt to force the window system to use the same high-power GPU as the app, on every swapchain creation.
  • Log more info about SPIR-V to MSL conversion errors.
  • Implement Deferred Host Operations.
  • Support MSL Version 3.1.
  • Drop official support for using Xcode 11 to build MoltenVK.
  • To allow building MoltenVK without an internet connection, don't fetch a submodule if the commit is already known.
  • Update dependency libraries to match Vulkan SDK 1.3.261.
  • Update to latest SPIRV-Cross:
    • MSL: Fix argument buffer padding when content includes arrays.
    • MSL: ray-query intersection params
    • MSL: Support SPV_KHR_shader_ballot and SPV_KHR_subgroup_vote.
    • Skip line directives when emitting loop condition blocks.
    • MSL: Consider changed array types for array-of-constant-bool in struct.
    • MSL: Consider bool-short remapping for constant expressions as well.
    • Minor cleanup in constant_expression().
    • MSL: Add test for bool-in-struct edge cases.
    • MSL: Handle more complex array copy scenarios with bool <-> short.
    • MSL: Handle stores to struct bool[].
    • MSL: Consider bool/short remapping when dealing with composites.
    • MSL: fix function constant deduplication misfire

Release for Vulkan SDK 1.3.250

24 May 00:38
4c6bfbe
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_map_memory2
  • Deprecate the obsolete and non-standard VK_MVK_moltenvk extension.
    • Add mvk_config.h, mvk_private_api.h, and mvk_deprecated_api.h, and deprecate vk_mvk_moltenvk.h.
  • Support BC compression on iOS/tvOS where available (iOS/tvOS 16.4 and above and supported by the GPU).
  • Support separate depth and stencil attachments during dynamic rendering.
  • Fix memory leak when waiting on timeline semaphores.
  • Fix race condition when updating values in VkPastPresentationTimingGOOGLE,
    and ensure swapchain image presented time is always populated when requested.
  • Report error, but do not fail on request for timestamp query pool that is too
    large for MTLCounterSampleBuffer, and fall back to emulation via CPU timestamps.
  • Ensure shaders that use PhysicalStorageBufferAddresses encode the use of the associated MTLBuffer.
  • Disable pipeline cache compression prior to macOS 10.15 and iOS/tvOS 13.0.
  • Accumulate render stages when a resource is used by multiple descriptor bindings.
  • Respect the bind point supplied to vkCmdBindDescriptorSets() / vkCmdPushDescriptorSets().
  • Check if shader compiled before adding it to a pipeline, to avoid Metal validation error.
  • Identify each unsupported device feature flag that the app attempts to enable.
  • Populate deviceUUID from MTLDevice location and peer group info,
    which should be unique, and constant across OS reboots.
  • Populate deviceLUID from MTLDevice.registryID.
  • Avoid Metal validation warning when depth component swizzled away.
  • Fix depth clamp and texture swizzle feature discovery on simulator builds.
  • Advertise VK_KHR_depth_stencil_resolve extension on all devices.
  • For correctness, set VkPhysicalDeviceLimits::lineWidthGranularity to 1.
  • Improve GitHub CI production of binary artifacts on submission and release.
  • Update dependency libraries to match Vulkan SDK 1.3.250.
  • Update to latest SPIRV-Cross:
    • MSL: Fix for argument buffer index compare when invalid.
    • MSL: Fix dref lod workaround on combined texture/samplers.
    • MSL: Do not override variable name with v_ identifier.
    • MSL: Use name_id consistently in argument declaration.
    • MSL: Don't hit array copy path for pointer to array.
    • MSL: Use templated array type when emitting BDA to arrays.

Release for Vulkan SDK 1.3.243

23 Mar 03:14
db8512a
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_external_memory_host
    • VK_EXT_pipeline_creation_cache_control
    • VK_EXT_shader_atomic_float
    • VK_EXT_surface_maintenance1
    • VK_EXT_swapchain_maintenance1
  • Fix crash when VkCommandBufferInheritanceInfo::renderPass is VK_NULL_HANDLE during dynamic rendering.
  • Do not clear attachments when dynamic rendering is resumed.
  • Allow ending dynamic rendering to trigger next multiview pass if needed.
  • Fix premature caching of occlusion query results during tessellation rendering.
  • vkCmdCopyQueryPoolResults(): Fix loss of queries when query count is not a multiple of GPU threadgroup execution width.
  • Disable occlusion recording while clearing attachments or render area.
  • Fix issue where extension VK_KHR_fragment_shader_barycentric was sometimes incorrectly disabled due to a Metal driver bug.
  • Detect when size of surface has changed under the covers.
  • Change rounding of surface size provided by Metal from truncation to rounding-with-half-to-even.
  • Queue submissions retain wait semaphores until MTLCommandBuffer finishes.
  • Use a different visibility buffer for each MTLCommandBuffer in a queue submit.
  • Work around problems with using explicit LoD with arrayed depth images on Apple Silicon.
  • Fix issue when VkPipelineVertexInputDivisorStateCreateInfoEXT::vertexBindingDivisorCount
    doesn't match VkPipelineVertexInputStateCreateInfo::vertexBindingDescriptionCount.
  • Support Apple Silicon pixel formats on a MoltenVK x86_64 build that is running on Apple Silicon using Rosetta2.
  • Reduce memory footprint of MSL source code retained in pipeline cache.
  • Add MVKConfiguration::shaderSourceCompressionAlgorithm and
    env var MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM to support
    compressing MSL shader source code held in a pipeline cache.
  • Add MVKShaderCompilationPerformance::mslCompress and mslDecompress
    to allow performance of MSL compression to be tracked and queried.
  • Add support for logging performance stats accumulated in a VkDevice, when it is destroyed.
  • Change MVKConfiguration::logActivityPerformanceInline boolean to activityPerformanceLoggingStyle enumeration value.
  • Add MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE environment variable and
    build setting to set MVKConfiguration::activityPerformanceLoggingStyle value.
  • Expand MVK_CONFIG_TRACE_VULKAN_CALLS to log thread ID only if requested.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 37.
  • Update dependency libraries to match Vulkan SDK 1.3.243.
  • Update to latest SPIRV-Cross:
    • MSL: Add support for OpAtomicFAddEXT atomic add on float types
    • MSL: Add a workaround for broken level() arguments.
    • MSL: Deduplicate function constants.

Release for Vulkan SDK 1.3.239

24 Jan 01:20
fb581e4
Compare
Choose a tag to compare
  • Fix Metal validation error caused by CAMetalDrawable released before MTLCommandBuffer is finished using it.
  • Fix memory leak of MVKFences and MVKSemaphores when a swapchain image is acquired more than it is presented.
  • Fix issue where fragment shader was not run when no render attachment is available.
  • Ensure Vulkan public symbols are not stripped from the library when statically linked to an app that calls all Vulkan functions dynamically.
  • Per Vulkan 1.2 spec, support calling vkGetInstanceProcAddr() with a null instance, when vkGetInstanceProcAddr itself is the function name.
  • Update VkPhysicalDeviceLimits members maxClipDistances and maxCombinedClipAndCullDistances to more accurate values.
  • Update VkPhysicalDeviceLimits::maxDrawIndexedIndexValue to acknowledge automatic primitive restart.
  • Update copyright notices to year 2023.
  • Update to latest SPIRV-Cross:
    • MSL: Add support for writable images in iOS Tier2 argument buffers.
    • MSL: Fix potentially uninitialized warnings.

Release for Vulkan SDK 1.3.236

09 Dec 00:16
a307b24
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_copy_commands2
  • Fix crash on descriptor update with out-of-bounds descriptor count data.
  • Fix Metal buffer index binding overrides for push constants and attachment clearing.
  • Fix crash when buffer binding updates only offset while it is overridden.
  • Fix app performance regression triggered by the previous introduction of VK_KHR_shader_float_controls.
  • Work around MTLCounterSet crash on additional Intel Iris Plus Graphics devices.
  • Fix mistaken YCBCR format support indication.
  • Fix invalid blit offsets.
  • Wait on emulated semaphores only once to prevent freezing when using prefilled command buffers.
  • MVKPipeline: Stop using vertex-style input for tessellation evaluation shaders.
  • MVKPipeline: Force extra checks for stores after fragment discard.
  • MVKImage: Always use a texel buffer for atomic storage images.
  • MVKDevice: Fix backwards attribution of storage/uniform texel buffer alignments.
  • Document new linkage model used by Xcode 14 and later, and how to link MoltenVK
    to an app or game using Xcode 13 or earlier.
  • Support Xcode 14.1 build settings.
  • Upgrade GitHub CI to use Xcode 14.1 on macOS 12.
  • Update dependency libraries to match Vulkan SDK 1.3.236.
  • Update to latest SPIRV-Cross:
    • MSL: Implement CompositeInsert OpSpecConstantOp.
    • MSL: Support "raw" buffer input in tessellation evaluation shaders.
    • MSL: Don't flatten arrayed per-patch output blocks in tessellation shaders.
    • MSL: Account for composite types when assigning locations.
    • MSL: Handle partial access chains with array-of-UBO/SSBO.
    • MSL: Fix restrict vs __restrict incompatibility.
    • MSL: Handle implicit integer promotion rules.
    • MSL: Manually update BuiltInHelperInvocation when a fragment is discarded.
    • MSL: Add missing casts to Op?MulExtended.
    • MSL: Prevent stores to storage resources in discarded fragments.
    • MSL: Don't dereference forwarded copies of OpVariable pointers.
    • MSL: Refactor member reference in terms of one boolean.
    • Fix MSL Access Chain.

Release for Vulkan SDK 1.3.231

18 Oct 16:54
260bad4
Compare
Choose a tag to compare
  • Add support for Vulkan 1.2.
  • Add support for extensions:
    • VK_KHR_shader_float_controls
    • VK_KHR_spirv_1_4
  • Vulkan semaphore functional improvements:
    • Replace use of MTLFence with an option to limit to a single Vulkan queue and use Metal's implicit submisison order guarantees.
    • Support option to force use of MTLEvents for Vulkan semaphores on NVIDIA and Rosetta2.
    • MVKConfiguration replace booleans semaphoreUseMTLEvent and semaphoreUseMTLFence with enumerated semaphoreSupportStyle.
  • Support config option to automatically use Metal argument buffers when VK_EXT_descriptor_indexing
    extension is enabled. MVKConfiguration::useMetalArgumentBuffers (MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS)
    is now an enum field. The use of Metal argument buffers is still disabled by default (MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS_NEVER).
  • Fix memory leaks when configured for prefilling Metal command buffers.
  • MVKConfiguration replace boolean prefillMetalCommandBuffers with enumeration.
  • MVKPipeline: Add builtins that are read but not written to tessellation pipelines.
  • Fix occassional crash from retention of MVKSwapchain for future drawable presentations.
  • Fix crash in vkCreateSwapchainKHR() on macOS 10.14 and earlier
  • Fix undefined reference to vkGetBufferDeviceAddressEXT when building with MVK_HIDE_VULKAN_SYMBOLS=1.
  • Update Makefile to forward any build setting declared on the command line to Xcode.
  • Add non-functional Vulkan 1.3 core function stubs, to avoid link errors with some external
    libraries that assume Vulkan 1.3 linkages from the standard Vulkan header files included with MoltenVK.
  • Add MVK_USE_CEREAL build setting to avoid use of Cereal external library (for pipeline caching).
  • MoltenVKShaderConverter tool automatically maps bindings when converting GLSL.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 36.
  • Update to latest SPIRV-Cross:
    • MSL: Support OpPtrEqual, OpPtrNotEqual, and OpPtrDiff.
    • MSL: Emit correct address space when casting during OpStore.
    • MSL: Add a mechanism to fix up shader outputs.
    • MSL: Handle descriptor aliasing of raw buffer descriptors.
    • MSL: Do not attempt to alias push constants.
    • MSL: only fix up gl_FragCoord if really necessary.
    • MSL: Expose way to query if a buffer needs array length.
    • MSL: Report unsupported 64-bit atomics.
    • Don't rename remapped variables like gl_LastFragDepthARM

Release for Vulkan SDK 1.3.224

14 Aug 18:59
b051111
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_metal_objects
    • VK_KHR_buffer_device_address and VK_EXT_buffer_device_address (available on GPUs with Tier 2 argument buffers support).
  • Reducing redundant state changes to improve command encoding performance.
  • Improve performance of vkResetDescriptorPool().
  • Update minimum Xcode deployment targets to macOS 10.13, iOS 11, and tvOS 11,
    to avoid Xcode build warnings in Xcode 14.
  • Work around MTLCounterSet crash on additional Intel Iris Plus Graphics drivers.
  • Check MTLDevice to enable support for VK_KHR_fragment_shader_barycentric
    and VK_NV_fragment_shader_barycentric extensions.
  • Ignore sampler update in descriptor set bindings that use immutable samplers.
  • Fix query pool wait block when query is not encoded to be written to.
  • Fix vkUpdateDescriptorSetWithTemplate() for inline block descriptors.
  • Fix retrieval of accurate vkGetRefreshCycleDurationGOOGLE() across multiple display screens.
  • Fix occasional missing Metal buffer binding when only offset changes.
  • Fix crash creating compute pipelines on macOS versions < 10.14.
  • Apply Apple fix to MTLCaptureScope retention bug to macOS 12.4 and iOS 15.4 and later.
  • Report appropriate values of VkDebugUtilsMessageTypeFlagsEXT for debug util messages generated within MoltenVK.
  • Update macOS Cube demo to demonstrate optimizing the swapchain across multiple display screens.
  • Support building in Xcode 14.
  • Allow building on removable volumes with a space in their name.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 35.
  • Update to latest SPIRV-Cross:
    • MSL: Add support for SPV_KHR_physical_storage_buffer extension.
    • MSL: Use a wrapper type for matrices in workgroup storage.
    • MSL: Fix various bugs with Ptr/U bitcasts.
    • Fix control flow bug with missed continue statement.
    • Handle PHI in collapsed switch constructs.
    • Handle collapsed loops similar to collapsed selections.
    • Handle multiple breaks out of switches.
    • Do not optimize OpCompositeInsert for hoisted temporaries.

Release for Vulkan SDK 1.3.216

06 Jun 19:24
334e0ce
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_portability_enumeration support added to MoltenVK_icd.json, and documentation
      updated to indicate the impact of the VK_KHR_portability_enumeration extension during
      runtime loading on macOS via the Vulkan Loader.
    • VK_KHR_dynamic_rendering
    • VK_KHR_fragment_shader_barycentric
    • VK_KHR_separate_depth_stencil_layouts
    • VK_EXT_separate_stencil_usage
  • Implement vkGetRefreshCycleDurationGOOGLE() for macOS.
  • Support attachment clearing when some clearing formats are not specified.
  • Fix regression error where previously bound push constants can override a descriptor buffer
    binding used by a subsequent pipeline that does not use push constants.
  • Fix error on some Apple GPU's where a vkCmdTimestampQuery() after a renderpass was
    writing timestamp before renderpass activity was complete.
  • Fix regression error in vertex buffer binding counts when establishing implicit buffers binding indexes.
  • Fix vkSetMoltenVKConfigurationMVK() function pointer typedef.
  • Work around zombie memory bug in Intel Iris Plus Graphics driver when repeatedly retrieving GPU counter sets.
  • Fix reorder-ctor warnings and add Xcode clang -Wreorder warning to catch future misalignments.
  • Update build settings to support Xcode 13.4.
  • Update to latest SPIRV-Cross:
    • MSL: Emit interface block members of array length 1 as arrays instead of scalars.
    • MSL: Potentially cast loaded Input variables.
    • Emit KHR barycentrics if source enables the KHR extension.
    • Handle early reads from loop variables with initializers.
    • Attempt more optimal codegen for OpCompositeInsert.

Release for Vulkan SDK 1.3.211

09 Apr 21:45
d2fe5e1
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_sample_locations (Custom locations settable via vkCmdBeginRenderPass() only,
      since
      VkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations is false).
  • Fixes to pipeline layout compatibility between sequentially bound pipelines.
  • Reinstate memory barriers on non-Apple GPUs, which were inadvertently disabled in an earlier update.
  • Support base vertex instance support in shader conversion.
  • Fix alignment between outputs and inputs between shader stages when using nested structures.
  • Fix issue where the depth component of a stencil-only renderpass attachment was incorrectly attempting to be stored.
  • Fix deletion of GPU counter MTLFence while it is being used by MTLCommandBuffer.
  • Fix crash in vkGetMTLCommandQueueMVK().
  • Fix leak of CoreFoundation objects during calls to vkUseIOSurfaceMVK().
  • Remove limit on VkPhysicalDeviceLimits::maxSamplerAllocationCount when not using Metal argument buffers.
  • Avoid adjusting SRGB clear color values by half-ULP on GPUs that round float clear colors down.
  • Fixes to optimize resource objects retained by descriptors beyond their lifetimes.
  • Optimize behavior for VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT when
    MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS is used
  • MoltenVKShaderConverter tool defaults to the highest MSL version supported on runtime OS.
  • Update glslang version, to use python3 in glslang scripts, to replace missing python on macOS 12.3.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 34.
  • Update to latest SPIRV-Cross:
    • MSL: Support input/output blocks containing nested struct arrays.
    • MSL: Use var name instead of var-type name for flattened interface members.
    • MSL: Handle aliased variable names for resources placed in IB struct.
    • MSL: Handle awkward mix and match of Offset / ArrayStride in constants.
    • MSL: Append entry point args to local variable names to avoid conflicts.
    • MSL: Consider that gl_IsHelperInvocation can be Volatile.
    • MSL: Refactor and fix use of quadgroup vs simdgroup.
    • Handle OpTerminateInvocation.
    • Fixup names of anonymous inner structs.
    • Fix regression from adding 64-bit switch support.

Release for Vulkan SDK 1.3.204.1

22 Feb 18:13
2fa625f
Compare
Choose a tag to compare
  • Remove logged warning if MoltenVK does not support VkApplicationInfo::apiVersion value.