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::preallocateDescriptorsandMVK_CONFIG_PREALLOCATE_DESCRIPTORSenvironment variable.vkAllocateDescriptorSets(): Per Vulkan spec, if any descriptor set allocation
fails, populate all descriptor set pointers withVK_NULL_HANDLE. In addition,
returnVK_ERROR_FRAGMENTED_POOLif 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
VkFormatcapabilities based on latest Metal docs.- Ensure all MoltenVK config info set by
VK_EXT_layer_settingsis used.- Advertise
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BITandVK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BITfor 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
VkImagedestroyed while used by descriptor.- Fix crash in
vkCmdPushDescriptorSetWithTemplateKHR()when entries inVkDescriptorUpdateTemplateCreateInfoare 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
VkDescriptorSetLayoutis destroyed while descriptor set is in use.- Fix build failure on VisionOS 2.0 platform.
- Support
VK_FORMAT_A2B10G10R10_UNORM_PACK32andVK_FORMAT_A2R10G10B10_UNORM_PACK32formats as surface formats on all platforms.- Add
MTLStoreActionmapping forVK_ATTACHMENT_STORE_OP_NONE.- Add estimate of
presentMarginin returned data fromvkGetPastPresentationTimingGOOGLE().- Update value of
minSubgroupSizeon AMD RX6600 to32.- Fix support for running on
tvOS 13.- Only add present handler if
VK_GOOGLE_display_timinginfo 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
fetchDependencieswhen--is missing on platform names.- Update dependency libraries to match Vulkan SDK 1.3.296.
- Update
MVK_PRIVATE_API_VERSIONto version43.- Update to latest SPIRV-Cross:
- Various non-feature maintenance updates.
Release Release for Vulkan SDK 1.3.296 · KhronosGroup/MoltenVK
