Releases: KhronosGroup/MoltenVK
Releases · KhronosGroup/MoltenVK
v1.2.7-rc2
Merge pull request #2124 from billhollings/revert-to-default-static-s…
Release for Vulkan SDK 1.3.275
- Add support for extensions:
VK_KHR_calibrated_timestamp
VK_KHR_format_feature_flags2
VK_KHR_vertex_attribute_divisor
VK_EXT_extended_dynamic_state3
(Metal does not supportVK_POLYGON_MODE_POINT
)VK_EXT_headless_surface
VK_EXT_layer_settings
- Add support for format
VK_FORMAT_B4G4R4A4_UNORM_PACK16
. - Add support for vertex formats
VK_FORMAT_B10G11R11_UFLOAT_PACK32
&VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
. - Fix regression that broke
VK_POLYGON_MODE_LINE
. - Fix regression in marking rendering state dirty after
vkCmdClearAttachments()
. - Fix regression error in argument buffer runtime arrays.
- Fix rare deadlock during launch via
dlopen()
. - Fix initial value of
VkPhysicalDeviceLimits::timestampPeriod
on non-Apple Silicon GPUs. - Fix swapchain and surface bugs when windowing system is accessed from off the main thread.
- Fix system memory size of tvOS.
- Fix
heapUsage
query for non-unified memory devices. - Add a defensive guard to ensure
heapUsage[0]
calculation is correct. - Clamp max per-set descriptor limit to minimum
1024
. - Enable the cube texture gradient workaround for Apple Silicon.
- Ensure
lineWidthGranularity
is zero if thewideLines
feature isn't supported. - Ensure
maxDrawIndexedIndexValue
set toUINT32_MAX
. - Ignore no external handle types specified for buffers and images.
- Expose
VK_EXT_debug_utils
device functions as device functions, not instance functions. - Emit
primitiveRestartEnable
disabled warning only for strip topology. - Enable mandatory
VK_EXT_descriptor_indexing
features, and don't advertise extension if they are not supported. - Reduce disk space consumed after running
fetchDependencies
script by removing intermediate file caches. - Deprecate
vkSetMoltenVKConfigurationMVK()
. - Deprecate
mvk_config.h
and move content tomvk_private_api.h
andmvk_deprecated_api.h
. - The Cube demo is now based on Volk, with dynamic library linking, and dynamic function pointer calls.
- Update copyright notices to year 2024.
- Update dependency libraries to match Vulkan SDK 1.3.275.
- Update to latest SPIRV-Cross:
- MSL: Fix regression error in argument buffer runtime arrays.
- MSL: Work around broken cube texture gradients on Apple Silicon.
- MSL: Ensure discrete runtime arrays of buffers have known length.
- MSL: Implement Metal 3.1 image atomics natively.
- MSL: Fix patch vertex count with raw buffer tese input.
- MSL: Improve handling of sample masks.
- MSL: Add divide to reserved function names.
- MSL: Support std140 half matrices and arrays.
- MSL: Use more appropriate padded types.
- MSL: Don't use swizzle if we have wrapper.
- MSL: Add ray-cull mask
- MSL: Consider PtrAccessChain on array types.
- MSL: Use LHS expression to determine whether or not to do array copy.
- MSL: Only do address-of expression when needed.
- MSL: Improve PtrAccessChain handling.
- MSL: Use powr instead of pow.
- MSL: Remove special case for threadgroup array wrapper.
- MSL: Added an
Op
field toSPIRType
and refactor.
v1.2.7-rc1
Merge pull request #2121 from billhollings/vulkan-sdk-1.3.275 Update dependency libraries to match Vulkan SDK 1.3.275.
v1.2.6-rc2
Merge pull request #2046 from billhollings/fix-prim-rsrt-warn Emit primitiveRestartEnable disabled warning only for strip topology.
Release for Vulkan SDK 1.3.268
- Add support for extensions:
VK_KHR_synchronization2
VK_EXT_extended_dynamic_state
(requires Metal 3.1 forVK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
)VK_EXT_extended_dynamic_state2
- Fix rare case where vertex attribute buffers are not bound to Metal when no other bindings change between pipelines.
- Ensure objects retained for life of
MTLCommandBuffer
duringvkCmdBlitImage()
&vkQueuePresentKHR()
. - Fix case where a
CAMetalDrawable
with invalid pixel format causes onscreen flickering. - Fix deadlock when reporting debug message on
MVKInstance
destruction. - Fix MSL code used in
vkCmdBlitImage()
on depth-stencil formats. - Improve behavior of swapchain image presentation stalls caused by Metal regression.
VkPhysicalDeviceLimits::timestampPeriod
set to 1.0 on Apple GPUs, and calculated dynamically on non-Apple GPUs.- Add
MVKConfiguration::timestampPeriodLowPassAlpha
and environment variable
MVK_CONFIG_TIMESTAMP_PERIOD_LOWPASS_ALPHA
, to add a configurable lowpass filter
for varyingVkPhysicalDeviceLimits::timestampPeriod
on non-Apple GPUs. - Add several additional performance trackers, available via logging, or the
mvk_private_api.h
API. - Deprecate
MVK_DEBUG
env var, and addMVK_CONFIG_DEBUG
env var to replace it. - Update
MVK_CONFIGURATION_API_VERSION
andMVK_PRIVATE_API_VERSION
to38
. - Update dependency libraries to match Vulkan SDK 1.3.268.
- Update to latest SPIRV-Cross:
- MSL: Workaround Metal 3.1 regression bug on recursive input structs.
- MSL: fix extraction of global variables, in case of atomics.
- MSL: Workaround bizarre crash on macOS.
- MSL: runtime array over argument buffers.
- MSL: Make rw texture fences optional.
- MSL: Prevent RAW hazards on read_write textures.
v1.2.6-rc1
Merge pull request #2044 from billhollings/vulkan-sdk-1.3.268 Update dependency libraries to match Vulkan SDK 1.3.268.
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.