Skip to content

Releases: KhronosGroup/MoltenVK

Release for Vulkan SDK 1.3.236

09 Dec 00:16
a307b24
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_copy_commands2
  • Fix crash on descriptor update with out-of-bounds descriptor count data.
  • Fix Metal buffer index binding overrides for push constants and attachment clearing.
  • Fix crash when buffer binding updates only offset while it is overridden.
  • Fix app performance regression triggered by the previous introduction of VK_KHR_shader_float_controls.
  • Work around MTLCounterSet crash on additional Intel Iris Plus Graphics devices.
  • Fix mistaken YCBCR format support indication.
  • Fix invalid blit offsets.
  • Wait on emulated semaphores only once to prevent freezing when using prefilled command buffers.
  • MVKPipeline: Stop using vertex-style input for tessellation evaluation shaders.
  • MVKPipeline: Force extra checks for stores after fragment discard.
  • MVKImage: Always use a texel buffer for atomic storage images.
  • MVKDevice: Fix backwards attribution of storage/uniform texel buffer alignments.
  • Document new linkage model used by Xcode 14 and later, and how to link MoltenVK
    to an app or game using Xcode 13 or earlier.
  • Support Xcode 14.1 build settings.
  • Upgrade GitHub CI to use Xcode 14.1 on macOS 12.
  • Update dependency libraries to match Vulkan SDK 1.3.236.
  • Update to latest SPIRV-Cross:
    • MSL: Implement CompositeInsert OpSpecConstantOp.
    • MSL: Support "raw" buffer input in tessellation evaluation shaders.
    • MSL: Don't flatten arrayed per-patch output blocks in tessellation shaders.
    • MSL: Account for composite types when assigning locations.
    • MSL: Handle partial access chains with array-of-UBO/SSBO.
    • MSL: Fix restrict vs __restrict incompatibility.
    • MSL: Handle implicit integer promotion rules.
    • MSL: Manually update BuiltInHelperInvocation when a fragment is discarded.
    • MSL: Add missing casts to Op?MulExtended.
    • MSL: Prevent stores to storage resources in discarded fragments.
    • MSL: Don't dereference forwarded copies of OpVariable pointers.
    • MSL: Refactor member reference in terms of one boolean.
    • Fix MSL Access Chain.

Release for Vulkan SDK 1.3.231

18 Oct 16:54
260bad4
Compare
Choose a tag to compare
  • Add support for Vulkan 1.2.
  • Add support for extensions:
    • VK_KHR_shader_float_controls
    • VK_KHR_spirv_1_4
  • Vulkan semaphore functional improvements:
    • Replace use of MTLFence with an option to limit to a single Vulkan queue and use Metal's implicit submisison order guarantees.
    • Support option to force use of MTLEvents for Vulkan semaphores on NVIDIA and Rosetta2.
    • MVKConfiguration replace booleans semaphoreUseMTLEvent and semaphoreUseMTLFence with enumerated semaphoreSupportStyle.
  • Support config option to automatically use Metal argument buffers when VK_EXT_descriptor_indexing
    extension is enabled. MVKConfiguration::useMetalArgumentBuffers (MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS)
    is now an enum field. The use of Metal argument buffers is still disabled by default (MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS_NEVER).
  • Fix memory leaks when configured for prefilling Metal command buffers.
  • MVKConfiguration replace boolean prefillMetalCommandBuffers with enumeration.
  • MVKPipeline: Add builtins that are read but not written to tessellation pipelines.
  • Fix occassional crash from retention of MVKSwapchain for future drawable presentations.
  • Fix crash in vkCreateSwapchainKHR() on macOS 10.14 and earlier
  • Fix undefined reference to vkGetBufferDeviceAddressEXT when building with MVK_HIDE_VULKAN_SYMBOLS=1.
  • Update Makefile to forward any build setting declared on the command line to Xcode.
  • Add non-functional Vulkan 1.3 core function stubs, to avoid link errors with some external
    libraries that assume Vulkan 1.3 linkages from the standard Vulkan header files included with MoltenVK.
  • Add MVK_USE_CEREAL build setting to avoid use of Cereal external library (for pipeline caching).
  • MoltenVKShaderConverter tool automatically maps bindings when converting GLSL.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 36.
  • Update to latest SPIRV-Cross:
    • MSL: Support OpPtrEqual, OpPtrNotEqual, and OpPtrDiff.
    • MSL: Emit correct address space when casting during OpStore.
    • MSL: Add a mechanism to fix up shader outputs.
    • MSL: Handle descriptor aliasing of raw buffer descriptors.
    • MSL: Do not attempt to alias push constants.
    • MSL: only fix up gl_FragCoord if really necessary.
    • MSL: Expose way to query if a buffer needs array length.
    • MSL: Report unsupported 64-bit atomics.
    • Don't rename remapped variables like gl_LastFragDepthARM

Release for Vulkan SDK 1.3.224

14 Aug 18:59
b051111
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_metal_objects
    • VK_KHR_buffer_device_address and VK_EXT_buffer_device_address (available on GPUs with Tier 2 argument buffers support).
  • Reducing redundant state changes to improve command encoding performance.
  • Improve performance of vkResetDescriptorPool().
  • Update minimum Xcode deployment targets to macOS 10.13, iOS 11, and tvOS 11,
    to avoid Xcode build warnings in Xcode 14.
  • Work around MTLCounterSet crash on additional Intel Iris Plus Graphics drivers.
  • Check MTLDevice to enable support for VK_KHR_fragment_shader_barycentric
    and VK_NV_fragment_shader_barycentric extensions.
  • Ignore sampler update in descriptor set bindings that use immutable samplers.
  • Fix query pool wait block when query is not encoded to be written to.
  • Fix vkUpdateDescriptorSetWithTemplate() for inline block descriptors.
  • Fix retrieval of accurate vkGetRefreshCycleDurationGOOGLE() across multiple display screens.
  • Fix occasional missing Metal buffer binding when only offset changes.
  • Fix crash creating compute pipelines on macOS versions < 10.14.
  • Apply Apple fix to MTLCaptureScope retention bug to macOS 12.4 and iOS 15.4 and later.
  • Report appropriate values of VkDebugUtilsMessageTypeFlagsEXT for debug util messages generated within MoltenVK.
  • Update macOS Cube demo to demonstrate optimizing the swapchain across multiple display screens.
  • Support building in Xcode 14.
  • Allow building on removable volumes with a space in their name.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 35.
  • Update to latest SPIRV-Cross:
    • MSL: Add support for SPV_KHR_physical_storage_buffer extension.
    • MSL: Use a wrapper type for matrices in workgroup storage.
    • MSL: Fix various bugs with Ptr/U bitcasts.
    • Fix control flow bug with missed continue statement.
    • Handle PHI in collapsed switch constructs.
    • Handle collapsed loops similar to collapsed selections.
    • Handle multiple breaks out of switches.
    • Do not optimize OpCompositeInsert for hoisted temporaries.

Release for Vulkan SDK 1.3.216

06 Jun 19:24
334e0ce
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_portability_enumeration support added to MoltenVK_icd.json, and documentation
      updated to indicate the impact of the VK_KHR_portability_enumeration extension during
      runtime loading on macOS via the Vulkan Loader.
    • VK_KHR_dynamic_rendering
    • VK_KHR_fragment_shader_barycentric
    • VK_KHR_separate_depth_stencil_layouts
    • VK_EXT_separate_stencil_usage
  • Implement vkGetRefreshCycleDurationGOOGLE() for macOS.
  • Support attachment clearing when some clearing formats are not specified.
  • Fix regression error where previously bound push constants can override a descriptor buffer
    binding used by a subsequent pipeline that does not use push constants.
  • Fix error on some Apple GPU's where a vkCmdTimestampQuery() after a renderpass was
    writing timestamp before renderpass activity was complete.
  • Fix regression error in vertex buffer binding counts when establishing implicit buffers binding indexes.
  • Fix vkSetMoltenVKConfigurationMVK() function pointer typedef.
  • Work around zombie memory bug in Intel Iris Plus Graphics driver when repeatedly retrieving GPU counter sets.
  • Fix reorder-ctor warnings and add Xcode clang -Wreorder warning to catch future misalignments.
  • Update build settings to support Xcode 13.4.
  • Update to latest SPIRV-Cross:
    • MSL: Emit interface block members of array length 1 as arrays instead of scalars.
    • MSL: Potentially cast loaded Input variables.
    • Emit KHR barycentrics if source enables the KHR extension.
    • Handle early reads from loop variables with initializers.
    • Attempt more optimal codegen for OpCompositeInsert.

Release for Vulkan SDK 1.3.211

09 Apr 21:45
d2fe5e1
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_sample_locations (Custom locations settable via vkCmdBeginRenderPass() only,
      since
      VkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations is false).
  • Fixes to pipeline layout compatibility between sequentially bound pipelines.
  • Reinstate memory barriers on non-Apple GPUs, which were inadvertently disabled in an earlier update.
  • Support base vertex instance support in shader conversion.
  • Fix alignment between outputs and inputs between shader stages when using nested structures.
  • Fix issue where the depth component of a stencil-only renderpass attachment was incorrectly attempting to be stored.
  • Fix deletion of GPU counter MTLFence while it is being used by MTLCommandBuffer.
  • Fix crash in vkGetMTLCommandQueueMVK().
  • Fix leak of CoreFoundation objects during calls to vkUseIOSurfaceMVK().
  • Remove limit on VkPhysicalDeviceLimits::maxSamplerAllocationCount when not using Metal argument buffers.
  • Avoid adjusting SRGB clear color values by half-ULP on GPUs that round float clear colors down.
  • Fixes to optimize resource objects retained by descriptors beyond their lifetimes.
  • Optimize behavior for VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT when
    MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS is used
  • MoltenVKShaderConverter tool defaults to the highest MSL version supported on runtime OS.
  • Update glslang version, to use python3 in glslang scripts, to replace missing python on macOS 12.3.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 34.
  • Update to latest SPIRV-Cross:
    • MSL: Support input/output blocks containing nested struct arrays.
    • MSL: Use var name instead of var-type name for flattened interface members.
    • MSL: Handle aliased variable names for resources placed in IB struct.
    • MSL: Handle awkward mix and match of Offset / ArrayStride in constants.
    • MSL: Append entry point args to local variable names to avoid conflicts.
    • MSL: Consider that gl_IsHelperInvocation can be Volatile.
    • MSL: Refactor and fix use of quadgroup vs simdgroup.
    • Handle OpTerminateInvocation.
    • Fixup names of anonymous inner structs.
    • Fix regression from adding 64-bit switch support.

Release for Vulkan SDK 1.3.204.1

22 Feb 18:13
2fa625f
Compare
Choose a tag to compare
  • Remove logged warning if MoltenVK does not support VkApplicationInfo::apiVersion value.

Release for Vulkan SDK 1.3.204

07 Feb 01:49
8218606
Compare
Choose a tag to compare
  • Add MVK_HIDE_VULKAN_SYMBOLS env var to support building MoltenVK with static Vulkan linkage symbols hidden.
  • Improve accuracy of VkPhysicalDeviceLimits::timestampPeriod.
  • Do not use MTLEvent for VkSemaphore under Rosetta2.
  • On Apple Silicon (iOS, tvOS & macOS), set VkPhysicalDeviceProperties::deviceID from GPU capabilities.
  • Support compiling MSL 2.4 in runtime pipelines and MoltenVKShaderConverterTool.
  • Fix issue where MSL 2.3 only available on Apple Silicon, even on macOS.
  • Fix memory leak of dummy MTLTexture in render subpasses that use no attachments.
  • Fix Metal object retain-release errors in assignment operators.
  • Fix use of GPU counter sets on older versions of iOS running on the simulator.
  • mvk::getShaderOutputs() in SPRIVReflection.h support flattening nested structures.
  • Replaced ASL logging levels with MVKConfigLogLevel.
  • MoltenVKShaderConverter tool support loading tessellation shader files.
  • MoltenVKShaderConverter tool update to MSL 2.4 by default.
  • Upgrade to Vulkan 1.3 headers.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 33.
  • Update copyright notices to year 2022.
  • Update to latest SPIRV-Cross:
    • MSL: Add 64 bit support for OpSwitch.
    • MSL: Don't output depth and stencil values with explicit early fragment tests.
    • MSL: Fix incorrect MSL gl_TessCoord variable type.
    • MSL: Allow copy array from UniformConstant storage.
    • MSL: Handle signed atomic min/max.
    • Fix normalize on half3/half2.
    • MSL: Handle constant construct of block-like array types.
    • MSL: Rethink how opaque descriptors are passed to leaf functions.
    • Rework how loop iteration counts are validated.
    • Clamp vector element access to vector size.
    • Handle aliased names in spec constants.
    • Add support for LocalSizeId.

Release for Vulkan SDK 1.2.198

15 Nov 17:11
b3ef160
Compare
Choose a tag to compare
  • Set maximum point primitive size based on GPU vendor ID, which can now be as large as 511.
  • Improved checks for timestamp GPU counter support on older devices.
  • Fix incorrect validation error on multilayer VkImage marked for rendering, when multilayered-rendering
    is not supported on platform, but app doesn't actually attempt to render to multiple layers.
  • Fix dynamic pipeline state such as vkCmdSetDepthBias() sometimes ignoring pipeline dynamic
    state flags when called before vkCmdBindPipeline().
  • Fix incorrect validation of multilayer-rendering validation when MVKImageView
    does not actually perform multilayer-rendering.
  • Fix issue where dynamic pipeline flags were sometimes read from previously bound pipeline.
  • Fix issue where correct base layer and mipmap for attachment was sometimes not being used.
  • Add MTLFence between Metal encoders and timestamp stage counter BLIT encoder
    to ensure previous work is finished before being timestamped.
  • Fix issue with BC1_RGB compressed format where incorrect alpha value returned.
  • Add vkGetMTLCommandQueueMVK() function to expose underlying MTLCommandQueue object.
  • Add vkSetWorkgroupSizeMVK() function.
  • Add unsupported VkApplicationInfo::apiVersion warning.
  • Update to latest SPIRV-Cross version:
    • MSL: Add support for OpSpecConstantOp ops OpQuantizeToF16 and OpSRem.
    • MSL: Return fragment function value even when last SPIR-V Op is discard (OpKill).
    • MSL: Fix location and component variable matching between shader stages.
    • MSL: Fix type redirection when struct members are reordered to align with offsets.
    • MSL: Remove over-zealous check for struct packing compatibility.
    • MSL: Correctly emit user(clip/cullN) for clip/cull builtins in tess output struct.
    • MSL: Don't output depth and stencil values with explicit early fragment tests.
    • MSL: Track location component to match vecsize between shader stages.
    • MSL: Selectively enable fast-math in MSL code to match Vulkan CTS results.
    • MSL: Honor DecorationNoContraction when compiling using fast-math.
    • MSL: Honor infinities in OpQuantizeToF16 when compiling using fast-math.
    • MSL: Support synthetic functions in function constants.
    • MSL: Improve handling of INT_MIN/INT64_MIN literals.
    • MSL: Consolidate spvQuantizeToF16() functions into a single template function.
    • MSL: Use vec<T, n> in template SpvHalfTypeSelector for function spvQuantizeToF16().
    • MSL: Support more usecases for unpacked vectors.
    • MSL: Workaround compiler crashes when using threadgroup bool.
    • MSL: Handle non-thread storage class in Modf/Frexp pointer versions.
    • Improve handling of INT_MIN/INT64_MIN literals.
    • Per spec, support undefined behavior for out-of-bounds swizzles.
    • Correctly reflect declared buffer size for out of order members.
    • Separate (partially) the tracking of depth images from depth compare ops.

Release for Vulkan SDK 1.2.189

30 Aug 20:10
c1d0332
Compare
Choose a tag to compare
  • Changes to how VkSemaphore is supported:
    • Revert to prefer MTLEvent for VkSemaphore, except on NVIDIA, where emulation on CPU is preferred.
    • Set default value of the MVK_ALLOW_METAL_FENCES environment variable to 0 (false),
  • Vulkan timestamp query pools use Metal GPU counters when available.
  • Support resolving attachments with formats that Metal does not natively resolve.
  • Support stencil-only partial attachment clearing.
  • Support alpha-to-coverage without a color attachment.
  • Fix issue where swapchain images were acquired out of order under heavy load.
  • Fix issue with vkCmdBlitImage() from compressed textures.
  • Fix incorrect translation of clear color values on Apple Silicon.
  • Fix swizzle of depth and stencil values into RGBA (float4) variable in shaders.
  • Fix occasional crash when swizzling used but shader swizzling not enabled.
  • Fix pipeline barriers not working inside self-dependent subpasses on Apple GPUs.
  • Fix GPU race condition when clearing a renderpass input attachment on Apple GPUs.
  • Disable VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT for
    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 on macOS Apple Silicon.
  • Fix execution order of encodeBindings for bufferBindings.
  • Properly ignore non-null pipeline creation pointers that should be ignored.
  • Add queue and queue family indices to MTLCommandBuffer label.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 32.
  • Update to latest SPIRV-Cross version:
    • MSL: Adjust gl_SampleMaskIn for sample-shading and/or fixed sample mask.
    • MSL: Remove redundant path for SampleMask.
    • MSL: Fix setting SPIRVCrossDecorationInterpolantComponentExpr decoration.
    • MSL: Support row-major transpose when storing matrix from constant RHS matrix.
    • MSL: Fix casting in constant expressions with different sizes.
    • MSL: Fix duplicate gl_Position outputs when gl_Position defined but unused.
    • MSL: Simplify spvSubgroupBallot().
    • MSL: Consider that function/private variables can be block-like.
    • Track temporary access for OpArrayLength result.

Release for Vulkan SDK 1.2.182

28 Jun 15:23
4f7f0dc
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_imageless_framebuffer
  • Advertise Vulkan extension functions only from enabled extensions.
  • Make vkGetPastPresentationTimingGOOGLE() queuing behavior compliant with Vulkan spec.
  • Expose vkGetIOSurfaceMVK() and vkUseIOSurfaceMVK() without requiring Objective-C.
  • Default MoltenVK build using C++17 and compiler optimization setting -O2.
  • API fix to remove #include "SPIRVReflection.h" from SPIRVToMSLConverter.h header.
  • Support Xcode 12.5 build settings, build warnings, and SDK change to availability of
    [MTLDevice supportsBCTextureCompression] on Mac Catalyst.
  • Add support for new AMD devices supporting 32 lanes.
  • Improve handling of sampler border color and mirror edge clamp.
  • Improve cache hits when matching SPIRVToMSLConversionConfiguration structs to each other
    to find a cached shader, by only considering resources from the current shader stage.
  • Rename kMVKShaderStageMax to kMVKShaderStageCount.
  • Fix crash when requesting MTLCommandBuffer logs in runtime debug mode on older OS versions.
  • Fix synchronization issue with locking MTLArgumentEncoder for Metal Argument Buffers.
  • Fix race condition on submission fence during device loss.
  • Fix crash due to incorrect number of attachments when clearing.
  • Fix crash using memoryless storage for input attachments on Apple Silicon.
  • Fix issue where M1 GPU does not support reusing Metal visibility buffer offsets
    across separate render encoders within a single Metal command buffer (Vulkan submit).
  • On command buffer submission failure, if MVKConfiguration::resumeLostDevice enabled, do not release
    waits on VkDevice, and do not return VK_ERROR_DEVICE_LOST, unless VkPhysicalDevice is also lost.
  • Fix inconsistent handling of linear attachment decisions on Apple Silicon.
  • Fix small memory leak during swapchain creation.
  • Fix stencil clear incorrectly using using the depth loadOp, when stencil is smaller than render area.
  • Reorganize coherent texture flushing on memory map and unmap`.
  • Fix issues where data in temporary internal buffers are discarded while in use.
  • Protect against crash when retrieving MTLTexture when VkImage has no VkDeviceMemory bound.
  • Adjust some VkPhysicalDeviceLimits values for Vulkan and Metal compliance.
  • Fix internal reference from SPIRV_CROSS_NAMESPACE_OVERRIDE to SPIRV_CROSS_NAMESPACE.
  • Add label strings to MTLCommandBuffers, based on use type, for GPU Capture debugging.
  • Add Scripts/runcts script as a convenience for running Vulkan CTS tests.
  • Support Xcode 13 SDK APIs and build settings.
  • Update dependency libraries to match Vulkan SDK 1.2.182.
  • Update to latest SPIRV-Cross version:
    • MSL: Handle array of IO variable with Component decoration.
    • MSL: Handle array with component when we cannot rely on user() attrib.
    • MSL: Improve handling of split tessellation access chains.
    • MSL: Always enable support for base vertex/index on iOS.