Software 42773 Published by

MoltenVK Vulkan SDK 1.0.36, an implementation of the Vulkan 1.0 graphics and compute API has been released



MoltenVK is a driver-level implementation of the Vulkan 1.0 graphics and compute API, that runs on Apple's Metal graphics and compute framework on both iOS and macOS.

MoltenVK allows you to use the Vulkan graphics and compute API to develop modern, cross-platform, high-performance graphical games and applications, and to run them across many platforms, including both iOS and macOS.

Metal uses a different shading language, the Metal Shading Language (MSL), than Vulkan, which uses SPIR-V. MoltenVK automatically converts your SPIR-V shaders to their MSL equivalents.

To provide Vulkan capability to the iOS and macOS platforms, MoltenVK uses Apple's publicly available API's, including Metal. MoltenVK does not use any private or undocumented API calls or features, so your app will be compatible with all standard distribution channels, including Apple's App Store.

The recommended method for developing a Vulkan application for macOS is to use the Vulkan SDK.

The Vulkan SDK includes a MoltenVK runtime library for macOS. Vulkan is a layered architecture that allows applications to add additional functionality without modifying the application itself. The Validation Layers included in the Vulkan SDK are an essential debugging tool for application developers because they identify inappropriate use of the Vulkan API. If you are developing a Vulkan application for macOS, it is highly recommended that you use the Vulkan SDK and the MoltenVK library included in it.

Change log:
Add support for extensions:
VK_KHR_device_group_creation
VK_KHR_swapchain_mutable_format
VK_KHR_uniform_buffer_standard_layout
VK_EXT_metal_surface
VK_EXT_post_depth_coverage
VK_EXT_scalar_block_layout
VK_EXT_shader_stencil_export
VK_EXT_swapchain_colorspace
VK_EXT_texel_buffer_alignment
VK_AMD_shader_image_load_store_lod
VK_AMD_shader_trinary_minmax
VK_INTEL_shader_integer_functions2
Support VK_FORMAT_A2R10G10B10_UNORM_PACK32 as a surface format and view format.
For shaders created directly from MSL, set function name from
VkPipelineShaderStageCreateInfo::pName.
On iOS GPU family 2 and earlier, support immutable depth-compare samplers
as constexpr samplers hardcoded in MSL.
vkCmdCopyImage() support copying between compressed and uncompressed formats
and validate that formats are compatible for copying.
vkCmdBufferImageCopy() fix crash when setting bytes per image in non-arrayed images.
vkCmdBlitImage() supports blit between different texture formats, and multisampled images.
vkCmdResolveImage() supports textures of different sizes.
vkCmdClearImage() returns error if texture is not renderable.
Move push constant binding to vkCmdBindPipeline() from vkCmdBindDescriptorSet().
MVKDeviceMemory keep MTLResourceOptions aligned with MTLStorageMode & MTLCPUCacheMode.
Texture memory requirements don't use shared storage on macOS.
Add MTLCommandBuffer completion timing performance tracking option.
Expand MVK_CONFIG_TRACE_VULKAN_CALLS to optionally log Vulkan call timings.
Skip SPIRV-Tools build in Travis because Travis does not support the required Python 3.
Separate SPIRVToMSLConverterContext into input config and output results.
Use native Metal texture buffers when available.
Fix issue with push constants used across multiple draw calls not being applied.
Fix memory leak in debug marker and debug utils labelling.
Reduce memory leaks when autorelease pools are not available.
Fix pipeline cache lookups.
Fix race condition between swapchain image destruction and presentation completion callback.
Set Metal texture usage to allow texture copy via view.
Fix memory leak in debug marker and debug utils labelling.
Fix issue with push constants used across multiple draw calls not being applied.
Fix crash when binding descriptor set to layout that has been destroyed and recreated.
Return error when MVKImage created as 1D attachment.
Reduce use of autoreleased Obj-C objects, and ensure those remaining are
covered by deliberate autorelease pools.
Document that the functions in vk_mvk_moltenvk.h cannot be used with objects
retrieved through the Vulkan SDK Loader and Layers framework.
Update VK_MVK_MOLTENVK_SPEC_VERSION to 21.
Update dependency libraries to match Vulkan SDK 1.1.114.
Update to latest SPIRV-Cross version:
MSL: Support SPV_KHR_multiview extension.
MSL: Support the SPV_KHR_post_depth_coverage extension.
MSL: Support the SPV_AMD_shader_trinary_minmax extension.
MSL: Support the SPV_KHR_device_group extension.
MSL: Support the SPV_INTEL_shader_integer_functions2 extension.
MSL: Support SubgroupSize / SubgroupInvocationID in fragment.
MSL: Support OpImageQueryLod.
MSL: Support MinLod operand.
MSL: Support PrimitiveID in fragment and barycentrics.
MSL: Support 64-bit integers.
MSL: Support OpOuterProduct.
MSL: Support SubgroupLocalInvocationId and SubgroupSize in all stages.
MSL: Support scalar reflect and refract.
MSL: Support scalar block layout.
MSL: Use the select() function for OpSelect.
MSL: Handle coherent, volatile, and restrict.
MSL: Refactor buffer packing logic from ground up.
MSL: Fix alignment of packed types.
MSL: Handle packed matrices.
MSL: Conditionally validate MSL 2.2 shaders.
MSL: Rewrite how resource indices are fallback-assigned.
MSL: Support custom bindings for argument buffers.
MSL: Fix sampling with FP16 coordinates.
MSL: Deal with scalar input values for distance/length/normalize.
MSL: Error out on int64_t/uint64_t buffer members as unsupported by Metal.
MSL: Deal with scalar input values for distance/length/normalize.
MSL: Re-roll array expressions in initializers.
MSL: New SDK errors out on cull distance.
Rewrite how switch block case labels are emitted.
Fixes to handling of OpPhi and case fallthrough.
Fix declaration of loop variables with a OpPhi helper copy.
Handle more cases with FP16 and texture sampling.
Fix variable scope when an if or else block dominates a variable.
Fall back to complex loop if non-trivial continue block is found.
Remove unreasonable assertion for OpTypeImage Sampled parameter.
Propagate NonUniformEXT to dependent expressions.
Deal correctly with return sign of bitscan operations.
  MoltenVK Vulkan SDK 1.0.36 released