diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md index 6cad0eec..dba1e584 100644 --- a/Docs/Whats_New.md +++ b/Docs/Whats_New.md @@ -16,21 +16,8 @@ Copyright (c) 2015-2025 [The Brenwill Workshop Ltd.](http://www.brenwill.com) MoltenVK 1.4.1 -------------- -Released TBD +Released 2025-11-24 -- Improved occlusion query support: - - Add support for occlusion queries across multiple renderpasses. - - Improve performance by accumulating occlusion quieries in parallel, - and using untracked buffers to avoid encoder serialization. -- New descriptor state tracker implementation to improve performance. -- New descriptor set/pool implementation: - - The new implementation is less forgiving of applications that don't properly manage the lifetime - of their descriptors (and bind them after the objects they point to have been destroyed). - Use `MVK_CONFIG_LIVE_CHECK_ALL_RESOURCES=1` to revert any crashes this might cause, - or mark potentially-destroyed descriptors with `VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT`. -- Added working demo target for VisionOS in Cube Demo. -- Raise minimum target to _macOS 11.0 / iOS 14.0 / tvOS 14.0_ -- Add support for `VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT`. - Add support for the following extensions: - `VK_KHR_maintenance9` - `VK_KHR_shader_fma` @@ -42,21 +29,60 @@ Released TBD - `VK_EXT_non_seamless_cube_map` - `VK_EXT_primitive_topology_list_restart` - `VK_EXT_provoking_vertex` +- Improved occlusion query support: + - Add support for occlusion queries across multiple renderpasses. + - Improve performance by accumulating occlusion quieries in parallel, + and using untracked buffers to avoid encoder serialization. +- New descriptor state tracker implementation to improve performance. +- New descriptor set/pool implementation: + - The new implementation is less forgiving of applications that don't properly manage the lifetime + of their descriptors (and bind them after the objects they point to have been destroyed). + Use `MVK_CONFIG_LIVE_CHECK_ALL_RESOURCES=1` to revert any crashes this might cause, + or mark potentially-destroyed descriptors with `VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT`. +- Add CMake build support. +- Added working demo target for VisionOS in Cube Demo. +- Raise minimum target to _macOS 11.0 / iOS 14.0 / tvOS 14.0_ +- Add support for `VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT`. - Reject image usages whose format features are not supported. - Return `VK_ERROR_OUT_OF_POOL_MEMORY` when running out of descriptor sets. - Make vkGetPhysicalDeviceToolProperties() an instance function. - Enable sample LOD bias for Xcode 26. +- Update robustness support levels for different GPU types. +- Update max texture dimensions for Apple10 GPU. +- Allow host-coherent optimal tiling images on macOS with Apple GPU. +- Add Metal4 and Apple10 GPU family logs. +- Fix depth bounds test and logic op implementations. - Fix VkExternalMemory*CreateInfo not allowing host memory handle types. - Fix improper boundary error when requesting exactly the number of variable descriptors allocated. - Fix regression on functions used by multiple extensions. - Fix improper use of dynamic depth/stencil attachment. - Fix out-of-bound access when using multiview with multiple subpasses. +- Fix vertexStrideAlignment value without Apple5. +- Fix tvOS ASTC HDR formats. +- Add base GPU family for `samplerMipLodBias` support. - Deprecate configuration parameter `MVKConfiguration::supportLargeQueryPools` and corresponding environment variable `MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS`, as obsolete and ignored. Large query pools are now supported always. - Disable Mac Catalyst builds from `all` and `all-debug` in `Makefile`, due to unresolved issues with Mac Catalyst builds. +- Add CI job for building for macOS with private API. - Update to latest SPIRV-Cross: - - + - MSL: Support image cube atomics on MSL 4.0+. + - MSL: Fix array copy to array inside stage IO Blocks. + - MSL: Fix boolean spec const as_type<> invalid output. + - MSL: Don't emit const device for readonly SSBO. + - MSL: Add some extra reserved function names. + - MSL: Support 64-bit subgroup shuffles. + - MSL: Get rid of obsolete buffer_aliases_argument vector. + - MSL: Ensure dynamic buffer offsets get a unique name. + - MSL: Fix missing use of add_local_variable_name for dynamic offset resources. + - MSL: Rethink how discrete variable count descriptor arrays are emitted. + - MSL: Throw on attempting to alias unrolled discrete descriptors. + - MSL: Fix mesh shader with no vertex outputs. + - MSL: Fix writing default gl_PointSize in tessellation shaders. + - MSL: Rethink "const device" handling. + - MSL: Narrow down which analysis passes need deep ID mapping. + - MSL: Support OpFmaKHR. + + MoltenVK 1.4.0 -------------- diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision index b1eb55f1..a6fa6eaa 100644 --- a/ExternalRevisions/SPIRV-Cross_repo_revision +++ b/ExternalRevisions/SPIRV-Cross_repo_revision @@ -1 +1 @@ -97709575e2332548603d308890423126100608ae +adec7acbf41a988713cdb85f93f26c8ca5ea863e diff --git a/ExternalRevisions/SPIRV-Headers_repo_revision b/ExternalRevisions/SPIRV-Headers_repo_revision index 41f26418..50f3cb8a 100644 --- a/ExternalRevisions/SPIRV-Headers_repo_revision +++ b/ExternalRevisions/SPIRV-Headers_repo_revision @@ -1 +1 @@ -9268f3057354a2cb65991ba5f38b16d81e803692 +b824a462d4256d720bebb40e78b9eb8f78bbb305 diff --git a/ExternalRevisions/SPIRV-Tools_repo_revision b/ExternalRevisions/SPIRV-Tools_repo_revision index baabd9a3..3ffe5948 100644 --- a/ExternalRevisions/SPIRV-Tools_repo_revision +++ b/ExternalRevisions/SPIRV-Tools_repo_revision @@ -1 +1 @@ -021f92a757002fcdba6a73154ed46a203d3a56b8 +262bdab48146c937467f826699a40da0fdfc0f1a diff --git a/ExternalRevisions/Volk_repo_revision b/ExternalRevisions/Volk_repo_revision index ca678f52..4c787908 100644 --- a/ExternalRevisions/Volk_repo_revision +++ b/ExternalRevisions/Volk_repo_revision @@ -1 +1 @@ -9767549a8bba5454555764ee0f3319bc5d205da9 +59660878571aa99e3c9a366bb1d19fdcd701f0e7 diff --git a/ExternalRevisions/Vulkan-Headers_repo_revision b/ExternalRevisions/Vulkan-Headers_repo_revision index dd9b9870..8fca7ea5 100644 --- a/ExternalRevisions/Vulkan-Headers_repo_revision +++ b/ExternalRevisions/Vulkan-Headers_repo_revision @@ -1 +1 @@ -33d7f512583b8de44d1b6384aa1cf482f92e53e9 +6aefb8eb95c8e170d0805fd0f2d02832ec1e099a diff --git a/ExternalRevisions/Vulkan-Tools_repo_revision b/ExternalRevisions/Vulkan-Tools_repo_revision index 6a2434d7..4dc65e0b 100644 --- a/ExternalRevisions/Vulkan-Tools_repo_revision +++ b/ExternalRevisions/Vulkan-Tools_repo_revision @@ -1 +1 @@ -17c41541e8e43364af6ccb4a6ce167274152cd7a +013058f74e2356347f8d9317233bc769816c9dfb diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index d7f9a442..e1f3c04e 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -820,7 +820,7 @@ void MVKPhysicalDevice::getProperties(VkPhysicalDeviceProperties2* properties) { // Create a SSOT for these Vulkan 1.2 properties, which can be queried via two mechanisms here. bool isTier2 = isTier2MetalArgumentBuffers(); - static constexpr VkConformanceVersion testedCTSVer = { 1, 4, 2, 0 }; // Latest version of CTS used to test + static constexpr VkConformanceVersion testedCTSVer = { 1, 4, 4, 0 }; // Latest version of CTS used to test VkPhysicalDeviceVulkan12Properties supportedProps12; supportedProps12.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES; supportedProps12.pNext = nullptr; diff --git a/Templates/spirv-tools/build.zip b/Templates/spirv-tools/build.zip index 999db4ff..e996152f 100644 Binary files a/Templates/spirv-tools/build.zip and b/Templates/spirv-tools/build.zip differ