Releases: KhronosGroup/MoltenVK
Releases · KhronosGroup/MoltenVK
Release for Vulkan SDK 1.3.261
- 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
ifVkPresentTimeGOOGLE::desiredPresentTime
is zero. - Add support for
VK_PRESENT_MODE_IMMEDIATE_KHR
to macOS Cube demo. - Allow both
renderPass
andVkPipelineRenderingCreateInfo
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
andSPV_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
- 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
, andmvk_deprecated_api.h
, and deprecatevk_mvk_moltenvk.h
.
- Add
- 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 forMTLCounterSampleBuffer
, and fall back to emulation via CPU timestamps. - Ensure shaders that use
PhysicalStorageBufferAddresses
encode the use of the associatedMTLBuffer
. - 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
fromMTLDevice
location and peer group info,
which should be unique, and constant across OS reboots. - Populate
deviceLUID
fromMTLDevice.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
to1
. - 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
- 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
isVK_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 matchVkPipelineVertexInputStateCreateInfo::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 varMVK_CONFIG_SHADER_COMPRESSION_ALGORITHM
to support
compressing MSL shader source code held in a pipeline cache. - Add
MVKShaderCompilationPerformance::mslCompress
andmslDecompress
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 toactivityPerformanceLoggingStyle
enumeration value. - Add
MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE
environment variable and
build setting to setMVKConfiguration::activityPerformanceLoggingStyle
value. - Expand
MVK_CONFIG_TRACE_VULKAN_CALLS
to log thread ID only if requested. - Update
VK_MVK_MOLTENVK_SPEC_VERSION
to version37
. - 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.
- MSL: Add support for
Release for Vulkan SDK 1.3.239
- Fix Metal validation error caused by
CAMetalDrawable
released beforeMTLCommandBuffer
is finished using it. - Fix memory leak of
MVKFences
andMVKSemaphores
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, whenvkGetInstanceProcAddr
itself is the function name. - Update
VkPhysicalDeviceLimits
membersmaxClipDistances
andmaxCombinedClipAndCullDistances
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
- 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.
- MSL: Implement
Release for Vulkan SDK 1.3.231
- 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 booleanssemaphoreUseMTLEvent
andsemaphoreUseMTLFence
with enumeratedsemaphoreSupportStyle
.
- Replace use of
- 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 booleanprefillMetalCommandBuffers
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 withMVK_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 version36
. - Update to latest SPIRV-Cross:
- MSL: Support
OpPtrEqual
,OpPtrNotEqual
, andOpPtrDiff
. - 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
- MSL: Support
Release for Vulkan SDK 1.3.224
- Add support for extensions:
VK_EXT_metal_objects
VK_KHR_buffer_device_address
andVK_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 forVK_KHR_fragment_shader_barycentric
andVK_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 version35
. - 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.
- MSL: Add support for
Release for Vulkan SDK 1.3.216
- Add support for extensions:
VK_KHR_portability_enumeration
support added toMoltenVK_icd.json
, and documentation
updated to indicate the impact of theVK_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
- Add support for extensions:
VK_EXT_sample_locations
(Custom locations settable viavkCmdBeginRenderPass()
only,
sinceVkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations
isfalse
).
- 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 byMTLCommandBuffer
. - Fix crash in
vkGetMTLCommandQueueMVK()
. - Fix leak of
CoreFoundation
objects during calls tovkUseIOSurfaceMVK()
. - 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 missingpython
on macOS 12.3. - Update
VK_MVK_MOLTENVK_SPEC_VERSION
to version34
. - 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 beVolatile
. - 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
- Remove logged warning if MoltenVK does not support
VkApplicationInfo::apiVersion
value.