Releases: KhronosGroup/MoltenVK
Releases · KhronosGroup/MoltenVK
Release for Vulkan SDK 1.3.211
- Add support for extensions:
VK_EXT_sample_locations(Custom locations settable viavkCmdBeginRenderPass()only,
sinceVkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocationsisfalse).
- 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
MTLFencewhile it is being used byMTLCommandBuffer. - Fix crash in
vkGetMTLCommandQueueMVK(). - Fix leak of
CoreFoundationobjects during calls tovkUseIOSurfaceMVK(). - Remove limit on
VkPhysicalDeviceLimits::maxSamplerAllocationCountwhen 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_BITwhen
MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERSis used MoltenVKShaderConvertertool defaults to the highest MSL version supported on runtime OS.- Update glslang version, to use
python3in glslang scripts, to replace missingpythonon macOS 12.3. - Update
VK_MVK_MOLTENVK_SPEC_VERSIONto version34. - 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/ArrayStridein constants. - MSL: Append entry point args to local variable names to avoid conflicts.
- MSL: Consider that
gl_IsHelperInvocationcan beVolatile. - 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
- Remove logged warning if MoltenVK does not support
VkApplicationInfo::apiVersionvalue.
Release for Vulkan SDK 1.3.204
- Add
MVK_HIDE_VULKAN_SYMBOLSenv var to support building MoltenVK with static Vulkan linkage symbols hidden. - Improve accuracy of
VkPhysicalDeviceLimits::timestampPeriod. - Do not use
MTLEventforVkSemaphoreunder Rosetta2. - On Apple Silicon (iOS, tvOS & macOS), set
VkPhysicalDeviceProperties::deviceIDfrom 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
MTLTexturein 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()inSPRIVReflection.hsupport flattening nested structures.- Replaced ASL logging levels with
MVKConfigLogLevel. MoltenVKShaderConvertertool support loading tessellation shader files.MoltenVKShaderConvertertool update to MSL 2.4 by default.- Upgrade to Vulkan 1.3 headers.
- Update
VK_MVK_MOLTENVK_SPEC_VERSIONto version33. - 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_TessCoordvariable type. - MSL: Allow copy array from
UniformConstantstorage. - MSL: Handle signed
atomic min/max. - Fix
normalizeonhalf3/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.
- MSL: Add 64 bit support for
Release for Vulkan SDK 1.2.198
- 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
VkImagemarked 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 beforevkCmdBindPipeline(). - 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
MTLFencebetween Metal encoders and timestamp stage counter BLIT encoder
to ensure previous work is finished before being timestamped. - Fix issue with
BC1_RGBcompressed format where incorrect alpha value returned. - Add
vkGetMTLCommandQueueMVK()function to expose underlyingMTLCommandQueueobject. - Add
vkSetWorkgroupSizeMVK()function. - Add unsupported
VkApplicationInfo::apiVersionwarning. - Update to latest SPIRV-Cross version:
- MSL: Add support for
OpSpecConstantOpopsOpQuantizeToF16andOpSRem. - 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
vecsizebetween shader stages. - MSL: Selectively enable
fast-mathin MSL code to match Vulkan CTS results. - MSL: Honor
DecorationNoContractionwhen compiling usingfast-math. - MSL: Honor infinities in
OpQuantizeToF16when compiling usingfast-math. - MSL: Support synthetic functions in function constants.
- MSL: Improve handling of
INT_MIN/INT64_MINliterals. - MSL: Consolidate
spvQuantizeToF16()functions into a single template function. - MSL: Use
vec<T, n>in templateSpvHalfTypeSelectorfor functionspvQuantizeToF16(). - MSL: Support more usecases for unpacked vectors.
- MSL: Workaround compiler crashes when using
threadgroup bool. - MSL: Handle non-thread storage class in
Modf/Frexppointer versions. - Improve handling of
INT_MIN/INT64_MINliterals. - 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.
- MSL: Add support for
Release for Vulkan SDK 1.2.189
- Changes to how
VkSemaphoreis supported:- Revert to prefer
MTLEventforVkSemaphore, except on NVIDIA, where emulation on CPU is preferred. - Set default value of the
MVK_ALLOW_METAL_FENCESenvironment variable to0 (false),
- Revert to prefer
- 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_BITfor
VK_FORMAT_E5B9G9R9_UFLOAT_PACK32on macOS Apple Silicon. - Fix execution order of
encodeBindingsforbufferBindings. - Properly ignore non-null pipeline creation pointers that should be ignored.
- Add queue and queue family indices to
MTLCommandBufferlabel. - Update
VK_MVK_MOLTENVK_SPEC_VERSIONto32. - Update to latest SPIRV-Cross version:
- MSL: Adjust
gl_SampleMaskInfor sample-shading and/or fixed sample mask. - MSL: Remove redundant path for
SampleMask. - MSL: Fix setting
SPIRVCrossDecorationInterpolantComponentExprdecoration. - 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_Positionoutputs whengl_Positiondefined but unused. - MSL: Simplify
spvSubgroupBallot(). - MSL: Consider that function/private variables can be block-like.
- Track temporary access for
OpArrayLengthresult.
- MSL: Adjust
Release for Vulkan SDK 1.2.182
- 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()andvkUseIOSurfaceMVK()without requiring Objective-C. - Default MoltenVK build using
C++17and compiler optimization setting-O2. - API fix to remove
#include "SPIRVReflection.h"fromSPIRVToMSLConverter.hheader. - 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
SPIRVToMSLConversionConfigurationstructs to each other
to find a cached shader, by only considering resources from the current shader stage. - Rename
kMVKShaderStageMaxtokMVKShaderStageCount. - Fix crash when requesting
MTLCommandBufferlogs in runtime debug mode on older OS versions. - Fix synchronization issue with locking
MTLArgumentEncoderfor 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::resumeLostDeviceenabled, do not release
waits onVkDevice, and do not returnVK_ERROR_DEVICE_LOST, unlessVkPhysicalDeviceis 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
MTLTexturewhenVkImagehas noVkDeviceMemorybound. - Adjust some
VkPhysicalDeviceLimitsvalues for Vulkan and Metal compliance. - Fix internal reference from
SPIRV_CROSS_NAMESPACE_OVERRIDEtoSPIRV_CROSS_NAMESPACE. - Add label strings to
MTLCommandBuffers, based on use type, for GPU Capture debugging. - Add
Scripts/runctsscript 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.
Release for Vulkan SDK 1.2.176
- Add beta support for using Metal argument buffers for shader resources on macOS, by setting
MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERSenvironment variable (disabled by default). This dramatically
expands the number of resources that can be submitted to a pipeline stage, per the Vulkan
VK_EXT_descriptor_indexingextension. Currently available on macOS 11.0 (Big Sur) or later,
and on earlier macOS versions on Intel GPU's. - Add support for
HDR10colorspace viaVK_COLOR_SPACE_HDR10_HLG_EXTandVK_COLOR_SPACE_HDR10_ST2084_EXT. - Always explicitly set
CAMetalLayercolorspace property based on Vulkan parameters,
and don't rely on Metal default values. - Add
MVKConfiguration::resumeLostDeviceandMVK_CONFIG_RESUME_LOST_DEVICEenv var,
to allowVkDeviceto resume after non-fatalVK_ERROR_DEVICE_LOSTerror. MVKDescriptorPoolpools its descriptor sets.- Enable
MVKConfiguration::preallocateDescriptorsandMVK_CONFIG_PREALLOCATE_DESCRIPTORS
environment variable by default to preallocate descriptors when aVkDescriptorPoolis created. - Avoid use of Metal renderpass load and store actions on memoryless attachments.
- Fix memory leak on swapchain destruction.
- Fix
MVKPhysicalDevice::getSurfaceFormats()returningVK_FORMAT_UNDEFINED. - Fix memory leak where swapchains and images were not destroyed due to a retention loop.
- Fix advertising single-texel alignment capability for texel buffers.
- Fix time and space inefficiencies caused by missed shader cache lookup hits in
MVKShaderLibraryCache. - Log enhanced command buffer errors in debug mode.
- Ensure queue submission message logging occurs before submission object is destroyed.
- Remove project qualifiers from references to
SPIRV-Crossheader files. - Only perform automatic GPU capture on queue identified by
MVKConfiguration::defaultGPUCaptureScopeQueueIndex
anddefaultGPUCaptureScopeQueueFamilyIndex. - Introduce
MVKConfigLogLevelBits,MVKConfigAutoGPUCaptureScopeBits, andMVKConfigTraceVulkanCallsBits
enums to specify config API values in a Vulkan-friendly manner, while automatically documenting the same values for env vars. - Add
MVKConfiguration::apiVersionToAdvertiseandMVK_CONFIG_API_VERSION_TO_ADVERTISE
env var to configure MoltenVK to advertise a particular Vulkan version. - Add
MVKConfiguration::advertiseExtensionsandMVK_CONFIG_ADVERTISE_EXTENSIONS
env var to configure MoltenVK to force advertising support for no, or minimally few, Vulkan extensions. - Remove the
HologramandAPI-Samplesdemo apps, and remove
LunarG/VulkanSamplesas a dependency library. - Add
NDEBUGmacro to all Release builds to removeassert()calls. - Update
VK_MVK_MOLTENVK_SPEC_VERSIONto31. - Update dependency libraries to match Vulkan SDK 1.2.176.
- Update to latest SPIRV-Cross version:
- MSL: Support long
ulongtypes in buffers in 2.3+. - MSL: Support padding Metal argument buffer entries based on argument index.
- Add interfaces to aid with LTO-style optimization
- Handle edge cases in
OpCopyMemory.
- MSL: Support long
Release for Vulkan SDK 1.2.170
- Advertise support for
shaderInt64feature. - Support fast math on MSL compiler via
MVKConfiguration::fastMathEnabledconfiguration
setting andMVK_CONFIG_FAST_MATH_ENABLEDenvironment variable (enabled by default). - Support compiling MSL with position invariance if indicated in SPIRV shader.
vkGetMoltenVKConfigurationMVK()andvkSetMoltenVKConfigurationMVK()functions
can now be used with aVkInstancefrom another Vulkan layer, or with aVK_NULL_HANDLE VkInstance.MVKConfigurationextended to cover all MoltenVK environment variables.- Report accurate value of 8 for
VkPhysicalDeviceLimits::maxBoundDescriptorSets. - Advertise macOS M1 GPU as
VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU. - For Vulkan semaphores, prefer using
MTLFenceoverMTLEvent. - Support
immmutableSamplerswith sampler arrays. - Query pools write to dedicated temporary internal buffer to span multiple render passes
and support larger query counts. - Fixes for race conditions in CTS multithread tests, guarding
MTLDeviceon cross-thread syncing. - Set Metal buffer alignment to 256 on non-Apple Silicon iOS/tvOS simulators.
MVKMTLBufferAllocation: Support device-local temp buffers for tessellation,
indirect multiview, or occlusion queries buffer usage.MVKPixelFormats: EnableRenderTargetusage for linear textures on Apple GPUs.MVKRenderPass: Use a non-trivial granularity for TBDR GPUs.- Don't use barriers in render passes on Apple GPUs.
MVKGraphicsPipeline: Fix color write mask withRGB9E5RTs.MVKImagePlane: When sync'ing, create the texture if it doesn't exist.MVKRenderPass: Don't useLoad/Storeactions for memoryless.MVKRenderPass: Only useMTLStorageModeMemorylesswhere available.MVKDeviceMemory: Don't consider Memoryless host-accessible on macOS/tvOS.MVKCmdResolveImagefix incorrectly changing first resolve layer's src/dst base layer.MVKPhysicalDevice: Require Mac family 2 for render without attachments.MVKPhysicalDevice: Disable SIMD-group permutation for Mac family 1.MVKPhysicalDevice: Clamp maximum buffer range to 4 GiB - 1.MVKMTLBufferAllocation: Mark temp buffers as volatile.SPIRVReflection: Multiple entry point support forgetShaderOutputs().- Remove obsolete
MVKVector, which was long ago replaced withMVKSmallVector. - Remove official support for submitting shaders directly containing MSL source code or compiled MSL code.
MSL shaders may still be directly submitted, and may work, but it is not officially supported at this time.
Future versions of MoltenVK may support direct MSL submission again. - Remove
ONLY_ACTIVE_ARCHfrom Debug builds. MoltenVK Debug builds now build for all platform architectures. - Add ability to automatically capture first GPU frame by setting
MVKConfiguration::autoGPUCaptureScope
(or environment variableMVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE) to2. - Support GitHub Actions for CI builds on pull requests.
- Support pre-built binary artifacts from GitHub Actions CI builds.
MakefileandfetchDependenciessupportxcpretty, if available.- Remove support for Travis-CI.
- Update
VK_MVK_MOLTENVK_SPEC_VERSIONto30. - Update copyright notices to year 2021.
- Update Xcode build settings check to Xcode 12.4.
- Support legacy building on Xcode 11.7.
- Update dependency libraries to match Vulkan SDK 1.2.170.
- Update to latest SPIRV-Cross version:
- MSL: Gracefully assign automatic input locations to builtin attributes.
- MSL: Refactor out location consumption count computation.
- MSL: Always return
[[position]]when required. - MSL: Fix some edge cases in input attachment handling.
- MSL: Fix various bugs with framebuffer fetch on macOS and argument buffers.
- MSL: Always use input_attachment_index for framebuffer fetch binding.
- MSL: Make sure initialized output builtins are considered active.
- MSL: Always enable Outputs in vertex stages.
- MSL: Only consider builtin variables and flatten builtin arrays if they are part of IO interface.
- MSL: Handle load and store to TessLevel array in TESC.
- MSL: Fixup type when using tessellation levels in TESC functions.
- MSL: Fix automatic assign of builtin attributes in tessellation.
- GLSL/MSL: Handle more complicated tessellation Output initializers.
- MSL: Emit correct initializer for tessellation control points.
- MSL: Handle initializers for tess levels.
- MSL: Fix initializer for tess level outputs.
- MSL: Fix broken reserved identifier handling for entry points.
- MSL: Handle reserved identifiers for entry point.
- Fix pathological complexity explosion for certain shaders.
- Improve handling of complex variable initialization.
- Expose position invariance.
Release for Vulkan SDK 1.2.162
- Add support for extensions:
VK_KHR_sampler_mirror_clamp_to_edge(iOS)VK_KHR_timeline_semaphoreVK_EXT_descriptor_indexing(initial release limited to Metal Tier 1: 96/128 textures, 16 samplers)VK_EXT_post_depth_coverage(macOS)VK_EXT_private_dataVK_EXT_subgroup_size_controlVK_EXT_texture_compression_astc_hdrVK_AMD_shader_image_load_store(macOS)VK_IMG_format_pvrtc(macOS)
- Support the Mac Catalyst platform for iOS apps on macOS 11.0+,
under bothx86_64andarm64architectures. - Re-enable
MTLEvent-based semaphores and fix severalMVKSyncissues. - Use
VK_KHR_image_format_listto disableMTLTextureUsagePixelFormatView
if only swizzles orsRGBconversion will be used for image views, improving
performance on iOS by allowing Metal to use lossless texture compression. - Handle device loss.
- Fix crash in
vkUpdateDescriptorSets()when copying inline block descriptors. - Fix Metal validation error when unused elements in an array of sampler are not populated by descriptors.
- Fix crashes in
vkUseIOSurfaceMVK()on chroma sampling and double releasing ofMTLTexture. - Fix potential drawable present race conditions.
- Fix crash in
vkUpdateDescriptorSets()when copying inline block descriptors. - Fix Metal validation error when unused elements in an array of sampler are not populated by descriptors.
- Move Metal drawable presentation from
MTLCommandBuffertoMTLDrawable
to improve performance and reduce blocking. - Allow binding descriptor set using layout different than it was created with.
- Report
VkPhysicalDeviceLimits::maxPerStageDescriptorStorageImagesas Metal limit of8. - Increase per-stage texture count to
96for A11 SoC's and above. - Use variable descriptor count when determining descriptor binding count.
- Support setting sizes of SPIR-V unsized arrays.
- Support
MTLStorageTypeMemorylessfor Apple Silicon on Mac. - Support Apple GPU pixel formats with Apple Silicon on Mac.
- Allow linear images on Apple GPUs in Blit and Clear commands.
- Apple family 7 GPUs (A14) on iOS support multisample layered rendering,
as well as sampler border colors and the mirror clamp to edge sampler address mode. - Set fill mode, depth bias, viewport, and scissor states before clearing attachments
- Disable culling for the duration of
vkCmdClearAttachments() MVKDeviceincrease minimum OS for shared-storage textures.MVKDeviceset properties for Apple Silicon GPUs on macOS.MVKQueueonly create oneGPUCaptureScopeper queue.MVKSamplerYcbcrConversionalways make sure there is one plane.MVKPhysicalDevicecorrect fragment input component limit.MVKPhysicalDeviceset max visibility buffer size to 256 kiB where supported.MVKPhysicalDeviceexpose support for interpolation functions.MVKPhysicalDeviceenable 3D compressed textures on iOS/tvOS, and forbid ETC2 and EAC
3D textures on all platforms. Apple GPUs do not support 3D for those.MVKPhysicalDeviceenable Apple family 7 features on iOS.MVKPhysicalDeviceremove need to callinitGPUInfoProperties()twice.MVKPhysicalDevicecorrect max descriptor set resources.MVKPhysicalDevicereduce maximum point size to 64.MVKPhysicalDeviceenable strictLines for Intel and NVIDIA.MVKPhysicalDeviceenableshaderResourceMinLodon iOS.MVKPhysicalDeviceset correct subgroup properties.MVKPhysicalDeviceenable texture swizzle on all Apple GPUs.MVKPipelineLayoutonly set configuration result if validating.MVKPipelinefix calculation of atomic image buffer addresses.MVKPipelinedisable rasterization if culling both sides and don't try to add a fragment shader.MVKPipelineshorten vertex attribute format's length whenstride<size.MVKGraphicsPipelinehandleminSampleShading.MVKImagealways use texel buffers for linear images inMTLHeaps.MVKImagemake sure plane heap offsets are properly aligned.MVKImagealways set the depth plane when rendering to a 3D image.MVKImageavoid swizzling storage and/or attachment image views.MVKImageavoid texel buffer for atomics if view format list
exists and does not include eitherR32_UINTorR32_SINTformat.MVKImageViewalways ignore transfer usages.MVKBufferViewavoid triggeringbytesPerRowvalidation warning.MVKDescriptorSetLayoutspeed up lookup of descriptor index and streamline binding access.MVKCmdBlitImageuse layered draws when possible.MVKCmdBlitImageadd 0.5 to layer index before interpolating.MVKCmdBlitImagesupport depth/stencil blits with inversion and scaling.MVKSwapchainallow images whose size doesn't match theCAMetalLayer.MVKPixelFormatsadd 0.5 ULP to clear values for normalized formats.MVKCommandEncoderdon't setrenderTargetArrayLengthfor mixed 2D/3D renders.MVKExtensionsadd missing tvOS case for unsupported extensions.MVKDescriptorSetLayoutsort and hold bindings by binding number.MVKDescriptorsimplify subclass implementations.MVKComputePipelineoverride max threads per threadgroup.MVKGPUCapturemake sure theMTLCaptureScopehas only one reference.MoltenShaderConverterfix tvOS build to support tvOS 9.0.- Support building external libraries and dylibs against sanitizers.
- Clarify documentation on mapping limitations for host-coherent image memory on macOS.
- Add validation policy for MoltenVK development to
README.mddocument. - Update Xcode build settings check to Xcode 12.2.
- Update
VK_MVK_MOLTENVK_SPEC_VERSIONto29. - Update dependency libraries to match Vulkan SDK 1.2.162.
- Update to latest SPIRV-Cross version:
- MSL: Support
SPV_EXT_demote_to_helper_invocationfor MSL 2.3. - MSL: Support run-time sized image and sampler arrays
(GL_EXT_nonuniform_qualifier/SPV_EXT_descriptor_indexing). - MSL: Support atomic access to images from argument buffers.
- MSL: Add missing interlock handling to atomic image buffers.
- MSL: Fix calculation of atomic image buffer address.
- MSL: Support querying and modifying generated combined sampler suffix.
- MSL: Don't use a bitcast for tessellation levels in tesc shaders.
- MSL: Handle Offset and Grad operands for 1D-as-2D textures.
- MSL: Don't remove periods from swizzle buffer index exprs.
- MSL: Correct definitions of subgroup ballot mask variables.
- MSL: Extract global variables from subgroup ballot operations.
- MSL: Mask ballots passed to ballot bit ops.
- MSL: Don't mask off inactive bits in ballot masks.
- MSL: Support vectors with
OpGroupNonUniformAllEqual. - MSL: Cast broadcast booleans to
ushort. - MSL: Do not use
component::xgather fordepth2dtextures. - MSL: For 2.1+, don't disable rasterization for vertex writes.
- MSL: Allow post-depth coverage on Mac in MSL 2.3.
- MSL: Allow framebuffer fetch on Mac in MSL 2.3.
- MSL: Allow Bias and Grad arguments with comparison on Mac in MSL 2.3.
- MSL: Support pull-model interpolation on MSL 2.3+
- MSL: Expand subgroup support.
- MSL: Adjust
FragCoordfor sample-rate shading. - MSL: Expose some more features on iOS:
min_lod_clamp(),simd_is_helper_thread(),
barycentric_coord, andprimitive_id. - MSL: Don't add fixup hooks for builtin variables if they're unused.
- MSL: Don't try to use
[[thread_index_in_simdgroup]]in vertex shaders. - Handle case where block is loop header, continue AND break block.
- MSL: Added
fmin3andfmax3library functions to the illegal name list. - Added Metal keyword:
level. - Parser: Don't assume
OpTypePointerwill always take aSPIRType. - Add MIT dual license for the SPIRV-Cross API and CLI.
- MSL: Support
Release for Vulkan 1.1 Support and Vulkan SDK 1.2.154
Note: This release contains changes to library paths and framework linking options.
- Add support for Vulkan 1.1, including:
- The
vkEnumerateInstanceVersion()function - The
vkGetDeviceQueue2()function - Protected memory (non-functional)
- A feature struct for
VK_KHR_shader_draw_parameters - All extensions that were promoted to core in Vulkan 1.1
- The
- Add support for extensions:
VK_KHR_portability_subsetVK_KHR_create_renderpass2VK_KHR_depth_stencil_resolveVK_KHR_external_fence(non-functional groundwork for future extensions,
including support for GCD and Mach semaphores)VK_KHR_external_fence_capabilities(non-functional groundwork for future
extensions, including support for GCD and Mach semaphores)VK_KHR_external_semaphore(non-functional groundwork for future
MTLSharedEventVulkan extension)VK_KHR_external_semaphore_capabilities(non-functional groundwork for
futureMTLSharedEventVulkan extension)VK_KHR_multiviewVK_KHR_shader_subgroup_extended_types
- Remove support for obsolete
VK_EXTX_portability_subsetextension. - Redesign build and linking options that leverage newer framework technology:
- Add comprehensive support for multi-platform, multi-architecture
XCFrameworks. - Build fat single-platform, multi-architecture
dylibs. - Add support for Apple Silicon builds for macOS and Simulators.
- Remove support for distinct legacy frameworks and static libraries.
- Remove support for fat libraries and frameworks that span device and simulators.
- Combine
MoltenVKSPIRVToMSLConverterandMoltenVKGLSLToSPIRVConverterframeworks
into a singleMoltenVKShaderConverterframework.
- Add comprehensive support for multi-platform, multi-architecture
- Support copying between 3D and 2D images.
- Support clearing 3D images.
- Support linear images and buffer views in shared memory on macOS 10.15.5+.
- Support
VK_IMAGE_CREATE_EXTENDED_USAGE_BIT. - Support multiple aliased images for dedicated image memory allocations.
- Improve performance of tessellation control pipeline stage by processing multiple
patches per workgroup. vkCmdBindDescriptorSetsorderpDynamicOffsetsby descriptor binding number
within each descriptor set.vkCmdCopyImageon macOS flush non-coherent image memory before copy operation.- Process multiple patches per workgroup in a tessellation control shader.
- Initialize tessellation related variables conditionally in indirect draws.
- Fix build errors on Simulator not supporting
MTLDrawablepresent time options. - Fix
dynamicOffsetsordering based on binding index. - Ensure the base texture is created when creating a view texture.
- Fix features, alignment, and image properties of chroma subsampled formats.
- Disable
variableMultisampleRatefeature. - Permit renderpass to have no attachments.
- Clear linear images using a compute shader.
- Reject attempts to create compressed linear images.
- Always use a texel buffer for atomic linear storage images.
- Use deferred store actions instead of tracking multi-pass draws.
- Use
MTLRenderPassDescriptor renderTargetWidthandrenderTargetHeighton macOS 10.15 and newer. - Use a 2D non-arrayed view for 2D non-arrayed attachments.
- Use arrayed textures for layered subpass input.
- Use layered rendering when clearing or resolving images whenever possible,
and takerenderAreainto account. - Streamline image copying when the entire source is being copied to the entire destination.
- Don't set
renderTargetArrayLengthon devices that don't support it. - Don't attempt to clear unused attachments and fix vertex count for clearing multiple layers.
- Don't encode commands that draw zero vertices.
- Ignore
addressModeWon samplers with unnormalized coordinates. - Flip GPU when swapchain is created, not when device object is created,
to optimize this condition if it is not needed. - Flush source image of a transfer on macOS.
- Fix offset for texel buffers and heaps for multi-planar images.
- Fix memory leak when object create fails.
- Fix several use-after-freed errors.
- Fix applying divisors to instanced vertex attributes.
- Fix issue in accessing
MTLTexturefor swapchain image planes. - Fix occasional crash on vertex stage indirect draws.
- Fix reported image format properties for 1D images as 2D.
VK_EXT_vertex_attribute_divisorfix issues with zero divisors.- Re-add support for bitcode generation on iOS and tvOS.
fetchDependenciesbuilds serially by default for better build script integration.- Combine
MoltenVKSPIRVToMSLConverterandMoltenVKGLSLToSPIRVConverter
frameworks into a singleMoltenVKShaderConverterframework. - Fix Metal validation error when occlusion query and renderpass are in separate
Vulkan command buffers. - Fix a crash on starting a query outside a render pass.
- Fix Metal validation error that forbids rendering to an image of zero size.
- Fix issue where descriptor pool releasing descriptor sets it doesn't own.
- Fix issue where load/store actions not set in renderpass that includes compute stage.
- Prevent accidental
setColorStoreActionfor non-color attachments. - Fix image copy destination extent of compressed images.
- Fix image resolve sub-region extent.
- Fix owner of merged
MVKShaderLibraries. - Fix rounding of buffer sizing when
VK_WHOLE_SIZEis used. - Fix detection of indexed draw calls.
vkSetMTLTextureMVK()Fix crash if incomingMTLTexturedoes not have an associatedIOSurface.- Update dependency libraries to match Vulkan SDK 1.2.154.
- Update to latest SPIRV-Cross version:
- MSL: Fix handling of matrices and structs in the output control point array.
- MSL: Enclose args when convert
distance(a,b)toabs(a-b). - MSL: Fix multiview view index calculation with a non-zero base instance.
- MSL: Don't set the layer for multiview if the device doesn't support it.
- MSL: Fix
OpCompositeInsertandOpVectorInsertDynamic. - MSL: Support layered input attachments.
- Ensure that we use primary alias type when emitting flattened members.
- Only rewrite type aliases for the base type.
- Overhaul how we deal with reserved identifiers.
- Implement a simple evaluator of specialization constants.
- Deal with case where a selection construct conditionally merges/breaks.
- Allow
flip_vert_yin all relevant stages. - Clean up conditional branch codegen.