Vulkan SDK 1.3.275.0 Release Notes
Version 1.3.275.0 for macOS
January 17, 2024
Removal Notice
The /MoltenVK folder in the root of the SDK has been removed. This folder contained duplicate headers that are found in /macOS/include. The MoltenVK specific internal headers have been moved to /macOS/include as well so that all required headers for Vulkan development on Apple platforms are in one location. In additon, the libraries and .xcFramework in /MoltenVK has been moved to macOS/lib, so that again, all libraries needed for macOS development are in one location.
Overview of new features in SDK 1.3.275.0
iOS is now a supported platform for the Vulkan Loader and Layers. See the getting started guide for details.
All iOS libraries are found in /iOS/lib off of the SDK root folder, this includes the loader, MoltenVK, the validation layers, and the shader tool chain libraries.
Support for the iOS simulator is not currently avaialable in this SDK. Apple Silicon machines can run and debug iOS applications directly on the macOS desktop.
iOS support is BETA, and currently does not support iOS app store requirments (naked .dylibs) but can be fully used for internal development.
tvOS is also now an optional component. It's version of libMoltenVK.dylib is found in /tvOS off the SDK root if it is selected for installation. Note the static library support is still included in /macOS/lib/MoltenVK.xcFramework.
VK_EXT_layer_settings was created to enable configuring any layer programmatically, from the Vulkan application code. To provide a consistent Vulkan developer experience with Vulkan layers, we provide an implementation of this extension with the Vulkan::LayerSettings C++ library (https://github.com/KhronosGroup/Vulkan-Utility-Libraries/blob/main/README.md) that is used by the Vulkan Validation layer, the Vulkan Extension layers, the Vulkan Profiles layer and the LunarG Utility layers. This behavior consistency is ensure across the three different approach to configure layers: Using Vulkan Configurator, using environment variables and now programmatically, using a generic Vulkan extension for all layers.
- Note: Your Vulkan Loader must be revision 1.3.275.0 to expose this instance extension. In addition the layer manifest json files (found in the macOS/share/vulkan/explicit_layer.d directory) need to be updated with the following (before the device_extensions):
"instance_extensions": [ { "name": "VK_EXT_layer_settings", "spec_version": "2" } ],
"instance_extensions": [ { "name": "VK_EXT_layer_settings", "spec_version": "2" } ],
- MoltenVK is a layered Vulkan implementation on top of Apple's Metal API. There are behaviors of Metal that can be adjusted for performance and appearance tweaking that are not available via Vulkan. Mac/iOS developers do not wish to have these features withheld because they chose Vulkan as their primary API. Vulkan application developers need a method to get access to some Apple/Metal only features in a Vulkan conformant method. There are many functions that are currently available when linking to MoltenVK statically or dynamically that do not work when using the Vulkan Loader and Layers. As of this SDK, these functions are being marked as deprecated and will be removed from future MoltenVK releases. Access to these Metal capabilities will be achieved by the VK_EXT_metal_objects, and the VK_EXT_layer_settings extensions.
- The screenshot layer has been ported to macOS and now included in the macOS SDK.
- By default, Synchronization Validation now also reports issues between or outside of recorded command buffers. Supported commands include Queue submit, swapchain acquire and present operations, and additional synchronization operations including queue, device, and fence wait operations. (These checks were previously disabled by default.)
- Added to the Vulkan Profiles API library the capability to check the support of a Vulkan Profile that supports multiple variants, a profile that may be satisfied by multiple sets of Vulkan capabilities.
- Added to the Vulkan Profiles API library ability to create VkDevice and VkInstance instances using specific capabilities blocks of profiles.
- Added the support of a Vulkan Profile requiring other profiles.
- Changes to profiles included in the SDK:
- Replaced VP_KHR_roadmap_2022.json by VP_KHR_roadmap.json that will store future Roadmap profiles
- Replaced VP_LUNARG_desktop_baseline_2022 and VP_LUNARG_desktop_portability_2022 for devices that actually represent what's available in the ecosystem in 2024.
- New profiles:
- Config\VK_LAYER_KHRONOS_profiles\VP_ANDROID_15_minimums.json
- Config\VK_LAYER_KHRONOS_profiles\VP_KHR_roadmap.json
- Config\VK_LAYER_KHRONOS_profiles\VP_LUNARG_desktop_baseline_2024.json
- Config\VK_LAYER_KHRONOS_profiles\VP_LUNARG_minimum_requirements.json
- Removed profiles:
- Config\VK_LAYER_KHRONOS_profiles\VP_KHR_roadmap_2022.json
- Config\VK_LAYER_KHRONOS_profiles\VP_LUNARG_desktop_baseline_2022.json
- Config\VK_LAYER_KHRONOS_profiles\VP_LUNARG_desktop_portability_2022.json
- The Vulkan Configurator (vkconfig) has been updated to improve quality and stability. See the fixes included in this SDK here. See the Vulkan Configurator documentation for more information.
- The Vulkan headers now include the following new extensions. Note that extensions are optional and may not be implemented by the underlying driver/ICD. Applications can now query for the presence of these new features.
- VK_KHR_maintenance6
- Video Encode Extensions
- VK_KHR_video_encode_queue
- VK_KHR_video_encode_h264
- VK_KHR_video_encode_h265
- VK_KHR_video_maintenance1
- VK_NV_per_stage_descriptor_set
- VK_KHR_calibrated_timestamps
- VK_KHR_vertex_attribute_divisor
- VK_EXT_layer_settings
- VK_ARM_render_pass_striped
- VK_IMG_relaxed_line_rasterization
- VK_ARM_scheduling_controls
- VK_NV_cuda_kernel_launch
- Improved validation coverage. VUID validation coverage documentation (validation_error_database.csv and validation_error_database.html) has been updated to represent the validation layer VUID coverage status.
- The glslang legacy libraries named HLSL and OGLCompiler have been removed. To avoid future disruptions, please use cmake's find_package mechanism rather than hard coding library dependencies. Only the headers that are part of glslang's public interface are included in the install target.
- Updated to MoltenVK version 1.2.7 with the following highlights:
- Added extensions:
- VK_KHR_calibrated_timestamps
- VK_KHR_format_feature_flags2
- VK_KHR_vertex_attribute_divisor
- VK_EXT_extended_dynamic_state3 (Metal does not support VK_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_LINE_MODE
- 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.
- Update to the latest SPIRV-Cross
- MSL: Fix regression error in argument buffer runtime arrays.
- MSL: Work around broken cube texture gradients on Apple Silicon
- MSL: Implement Metal 3.1 image atomics natively.
- MSL: Improve handling of sample masks.
- Many other miscellaneous bug fixes
- see the MoltenVK release notes for additional and more detailed update information
- Added extensions:
Platform Support Matrix
Feature | Windows | Linux tarball | Ubuntu Packages | macOS SDK (iOS) |
---|---|---|---|---|
Tools | ||||
Vulkan Configurator | X | X | X | X |
Vulkaninfo | X | X | X | X |
VIA (Vulkan Installation Analyzer) | X | X | X | X |
Vulkan Profiles API Library | X | X | X | X |
VOLK (a meta-loader for Vulkan) | X | X | X | X (*) |
AMD Memory Allocator | X | X | X | X (*) |
Validation Layers | ||||
Validation | X | X | X | X (*) |
Best Practices | X | X | X | X (*) |
GPU Assisted Validation | X | X | X | |
Debug Printf | X | X | X | |
Synchronization Validation | X | X | X | X (*) |
Utility Layers | ||||
Profiles Layer | X | X | X | X |
API Dump | X | X | X | X (*) |
Monitor | X | X | X | |
Screenshot | X | X | X | X |
GFXReconstruct | X | X | X | |
Extension Layers | ||||
Synchronization 2 | X | X | X | X (*) |
Shader object | X | X | X | X (*) |
Shader Tools | ||||
glslangValidator | X | X | X | X (*) |
SPIR-V Optimizer | X | X | X | X (*) |
SPIR-V Disassembler, Assembler, Validator | X | X | X | X (*) |
SPIR-V Remapper | X | X | X | X (*) |
SPIR-V Control Flow Visualization | X | X | X | X (*) |
SPIR-V Cross-Compilation and Reflection | X | X | X | X (*) |
shaderc | X | X | X | X (*) |
DXC (DirectX Shader Compiler) | X | X | X | X |
SPIRV-reflect | X | X | X | X (*) |
MoltenVKConvertShader | X (*) |
SDK Components
This version of the SDK is based on the following specifications, source code repositories, and commits:
- Vulkan Specification
- SPIR-V Specification (Version 1.6, Revision 3)
- GLSL Specification (Version 4.6)
- GitHub Repo: KhronosGroup/glslang, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/SPIRV-Cross Version Tag: vulkan-sdk-1.3.275.0
- Github Repo: SPIRV-Reflect Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/SPIRV-Tools, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-Headers, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-Loader, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-Tools, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-ValidationLayers, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-Profiles, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-ExtensionLayer, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: KhronosGroup/Vulkan-Utility-Libraries, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: LunarG/VulkanTools, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: volk, Version Tag: vulkan-sdk-1.3.275.0
- GitHub Repo: AMD Memory Allocator commit: 5e43c795daf43dd09398d8307212e85025215052
- GitHub Repo: microsoft/DirectXShaderCompiler commit: 7d2f9c74d53dcbb9de4e148b68c99e5986875be6
- GitHub Repo: google/shaderc commit: 93b465f4f2eb5ef92004231b3c099944cd5cbf5b
- GitHub Repo: SaschaWillems/VulkanCapsViewer tag: 3.32
- GitHub Repo: sdl, Version Tag: release-2.28.5
- GitHub Repo: glm, Version Tag: 0.9.9.8
- GitHub Repo: KhronosGroup/MoltenVK, Version Tag: v1.2.7
LunarG would like to thank all of the many contributors to all of the above repositories and the contributions they are making to the Vulkan Ecosystem.
Submitting Issues
If while using the tools and layers included in the SDK you find a defect in that tool or layer, the most expedient way to get a resolution is to submit to its corresponding repository. For example, if you believe you have found a defect in the Validation Layers, submit an issue at the repository for Validation Layers. The only exception to this is for the shader tool chain (glslang, SPIRV-Cross, SPIRV-Tools, shaderc). For these repositories you can submit issues against the SDK at vulkan.lunarg.com.
Developer Notes
The new installation app optionally (but by default) runs the script install_vulkan.py
with administrative privileges. This copies the Vulkan Loader, MoltenVK, and command line utilities into system folders (/usr/local
) for easier access during development.
Known Issues
- Both the dxc command line program and libdxcompiler.dylib were inadvertently build as debug mode for this SDK. This will be corrected in the next SDK release.
- Vulkan Configurator known issues are documented in the Vulkan Configurator Change Log
- Both XCode AND the XCode command line tools are required to run the installer due to it's dependency on Python3 being present on your system.