MoltenVK Vulkan SDK 1.3.296 has a lot of changes. It now dynamically assigns descriptors when the pool is full, stops using the MVKConfiguration::preallocateDescriptors and MVK_CONFIG_PREALLOCATE_DESCRIPTORS environment variables, and lets you write or copy past the end of a descriptor binding count. The update also includes support for storage images in Metal argument buffers on iOS and updating VkFormat capabilities based on the latest Metal documents. The update also addresses rendering issues, GPU crashes, race conditions, memory leaks, and build failures on VisionOS 2.0 platforms. The update also includes support for running on tvOS 13, a primitive-restart-disabled warning, and support for storage images in Metal argument buffers.
MoltenVK Release for Vulkan SDK 1.3.296
- Support dynamically allocating descriptors when pool is exhausted.
- Deprecate
MVKConfiguration::preallocateDescriptors
andMVK_CONFIG_PREALLOCATE_DESCRIPTORS
environment variable.vkAllocateDescriptorSets()
: Per Vulkan spec, if any descriptor set allocation
fails, populate all descriptor set pointers withVK_NULL_HANDLE
. In addition,
returnVK_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
andVK_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 inVkDescriptorUpdateTemplateCreateInfo
are not sorted by offset.- Fix issue where
vkQueueWaitIdle()
andvkDeviceWaitIdle()
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
andVK_FORMAT_A2R10G10B10_UNORM_PACK32
formats as surface formats on all platforms.- Add
MTLStoreAction
mapping forVK_ATTACHMENT_STORE_OP_NONE
.- Add estimate of
presentMargin
in returned data fromvkGetPastPresentationTimingGOOGLE()
.- Update value of
minSubgroupSize
on AMD RX6600 to32
.- 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 variableMVK_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 version43
.- Update to latest SPIRV-Cross:
- Various non-feature maintenance updates.
Release Release for Vulkan SDK 1.3.296 · KhronosGroup/MoltenVK