Skip to content

Releases: KhronosGroup/MoltenVK

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.

Release for Vulkan SDK 1.2.176

27 Apr 17:14
55dd4ed
Compare
Choose a tag to compare
  • Add beta support for using Metal argument buffers for shader resources on macOS, by setting
    MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS environment 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_indexing extension. Currently available on macOS 11.0 (Big Sur) or later,
    and on earlier macOS versions on Intel GPU's
    .
  • Add support for HDR10 colorspace via VK_COLOR_SPACE_HDR10_HLG_EXT and VK_COLOR_SPACE_HDR10_ST2084_EXT.
  • Always explicitly set CAMetalLayer colorspace property based on Vulkan parameters,
    and don't rely on Metal default values.
  • Add MVKConfiguration::resumeLostDevice and MVK_CONFIG_RESUME_LOST_DEVICE env var,
    to allow VkDevice to resume after non-fatal VK_ERROR_DEVICE_LOST error.
  • MVKDescriptorPool pools its descriptor sets.
  • Enable MVKConfiguration::preallocateDescriptors and MVK_CONFIG_PREALLOCATE_DESCRIPTORS
    environment variable by default to preallocate descriptors when a VkDescriptorPool is created.
  • Avoid use of Metal renderpass load and store actions on memoryless attachments.
  • Fix memory leak on swapchain destruction.
  • Fix MVKPhysicalDevice::getSurfaceFormats() returning VK_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-Cross header files.
  • Only perform automatic GPU capture on queue identified by MVKConfiguration::defaultGPUCaptureScopeQueueIndex
    and defaultGPUCaptureScopeQueueFamilyIndex.
  • Introduce MVKConfigLogLevelBits, MVKConfigAutoGPUCaptureScopeBits, and MVKConfigTraceVulkanCallsBits
    enums to specify config API values in a Vulkan-friendly manner, while automatically documenting the same values for env vars.
  • Add MVKConfiguration::apiVersionToAdvertise and MVK_CONFIG_API_VERSION_TO_ADVERTISE
    env var to configure MoltenVK to advertise a particular Vulkan version.
  • Add MVKConfiguration::advertiseExtensions and MVK_CONFIG_ADVERTISE_EXTENSIONS
    env var to configure MoltenVK to force advertising support for no, or minimally few, Vulkan extensions.
  • Remove the Hologram and API-Samples demo apps, and remove
    LunarG/VulkanSamples as a dependency library.
  • Add NDEBUG macro to all Release builds to remove assert() calls.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 31.
  • Update dependency libraries to match Vulkan SDK 1.2.176.
  • Update to latest SPIRV-Cross version:
    • MSL: Support long ulong types 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.

Release for Vulkan SDK 1.2.170

23 Feb 02:37
40f5cbb
Compare
Choose a tag to compare
  • Advertise support for shaderInt64 feature.
  • Support fast math on MSL compiler via MVKConfiguration::fastMathEnabled configuration
    setting and MVK_CONFIG_FAST_MATH_ENABLED environment variable (enabled by default).
  • Support compiling MSL with position invariance if indicated in SPIRV shader.
  • vkGetMoltenVKConfigurationMVK() and vkSetMoltenVKConfigurationMVK() functions
    can now be used with a VkInstance from another Vulkan layer, or with a VK_NULL_HANDLE VkInstance.
  • MVKConfiguration extended 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 MTLFence over MTLEvent.
  • Support immmutableSamplers with 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 MTLDevice on 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: Enable RenderTarget usage 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 with RGB9E5 RTs.
  • MVKImagePlane: When sync'ing, create the texture if it doesn't exist.
  • MVKRenderPass: Don't use Load/Store actions for memoryless.
  • MVKRenderPass: Only use MTLStorageModeMemoryless where available.
  • MVKDeviceMemory: Don't consider Memoryless host-accessible on macOS/tvOS.
  • MVKCmdResolveImage fix 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 for getShaderOutputs().
  • Remove obsolete MVKVector, which was long ago replaced with MVKSmallVector.
  • 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_ARCH from 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 variable MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE) to 2.
  • Support GitHub Actions for CI builds on pull requests.
  • Support pre-built binary artifacts from GitHub Actions CI builds.
  • Makefile and fetchDependencies support xcpretty, if available.
  • Remove support for Travis-CI.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 30.
  • 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

09 Dec 16:39
49de660
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_sampler_mirror_clamp_to_edge (iOS)
    • VK_KHR_timeline_semaphore
    • VK_EXT_descriptor_indexing (initial release limited to Metal Tier 1: 96/128 textures, 16 samplers)
    • VK_EXT_post_depth_coverage (macOS)
    • VK_EXT_private_data
    • VK_EXT_subgroup_size_control
    • VK_EXT_texture_compression_astc_hdr
    • VK_AMD_shader_image_load_store (macOS)
    • VK_IMG_format_pvrtc (macOS)
  • Support the Mac Catalyst platform for iOS apps on macOS 11.0+,
    under both x86_64 and arm64 architectures.
  • Re-enable MTLEvent-based semaphores and fix several MVKSync issues.
  • Use VK_KHR_image_format_list to disable MTLTextureUsagePixelFormatView
    if only swizzles or sRGB conversion 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 MTLCommandBuffer to MTLDrawable
    to improve performance and reduce blocking.
  • Allow binding descriptor set using layout different than it was created with.
  • Report VkPhysicalDeviceLimits::maxPerStageDescriptorStorageImages as Metal limit of 8.
  • Increase per-stage texture count to 96 for A11 SoC's and above.
  • Use variable descriptor count when determining descriptor binding count.
  • Support setting sizes of SPIR-V unsized arrays.
  • Support MTLStorageTypeMemoryless for 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()
  • MVKDevice increase minimum OS for shared-storage textures.
  • MVKDevice set properties for Apple Silicon GPUs on macOS.
  • MVKQueue only create one GPUCaptureScope per queue.
  • MVKSamplerYcbcrConversion always make sure there is one plane.
  • MVKPhysicalDevice correct fragment input component limit.
  • MVKPhysicalDevice set max visibility buffer size to 256 kiB where supported.
  • MVKPhysicalDevice expose support for interpolation functions.
  • MVKPhysicalDevice enable 3D compressed textures on iOS/tvOS, and forbid ETC2 and EAC
    3D textures on all platforms. Apple GPUs do not support 3D for those.
  • MVKPhysicalDevice enable Apple family 7 features on iOS.
  • MVKPhysicalDevice remove need to call initGPUInfoProperties() twice.
  • MVKPhysicalDevice correct max descriptor set resources.
  • MVKPhysicalDevice reduce maximum point size to 64.
  • MVKPhysicalDevice enable strictLines for Intel and NVIDIA.
  • MVKPhysicalDevice enable shaderResourceMinLod on iOS.
  • MVKPhysicalDevice set correct subgroup properties.
  • MVKPhysicalDevice enable texture swizzle on all Apple GPUs.
  • MVKPipelineLayout only set configuration result if validating.
  • MVKPipeline fix calculation of atomic image buffer addresses.
  • MVKPipeline disable rasterization if culling both sides and don't try to add a fragment shader.
  • MVKPipeline shorten vertex attribute format's length when stride < size.
  • MVKGraphicsPipeline handle minSampleShading.
  • MVKImage always use texel buffers for linear images in MTLHeaps.
  • MVKImage make sure plane heap offsets are properly aligned.
  • MVKImage always set the depth plane when rendering to a 3D image.
  • MVKImage avoid swizzling storage and/or attachment image views.
  • MVKImage avoid texel buffer for atomics if view format list
    exists and does not include either R32_UINT or R32_SINT format.
  • MVKImageView always ignore transfer usages.
  • MVKBufferView avoid triggering bytesPerRow validation warning.
  • MVKDescriptorSetLayout speed up lookup of descriptor index and streamline binding access.
  • MVKCmdBlitImage use layered draws when possible.
  • MVKCmdBlitImage add 0.5 to layer index before interpolating.
  • MVKCmdBlitImage support depth/stencil blits with inversion and scaling.
  • MVKSwapchain allow images whose size doesn't match the CAMetalLayer.
  • MVKPixelFormats add 0.5 ULP to clear values for normalized formats.
  • MVKCommandEncoder don't set renderTargetArrayLength for mixed 2D/3D renders.
  • MVKExtensions add missing tvOS case for unsupported extensions.
  • MVKDescriptorSetLayout sort and hold bindings by binding number.
  • MVKDescriptor simplify subclass implementations.
  • MVKComputePipeline override max threads per threadgroup.
  • MVKGPUCapture make sure the MTLCaptureScope has only one reference.
  • MoltenShaderConverter fix 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.md document.
  • Update Xcode build settings check to Xcode 12.2.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 29.
  • Update dependency libraries to match Vulkan SDK 1.2.162.
  • Update to latest SPIRV-Cross version:
    • MSL: Support SPV_EXT_demote_to_helper_invocation for 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::x gather for depth2d textures.
    • 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 FragCoord for sample-rate shading.
    • MSL: Expose some more features on iOS: min_lod_clamp(), simd_is_helper_thread(),
      barycentric_coord, and primitive_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 fmin3 and fmax3 library functions to the illegal name list.
    • Added Metal keyword: level.
    • Parser: Don't assume OpTypePointer will always take a SPIRType.
    • Add MIT dual license for the SPIRV-Cross API and CLI.

Release for Vulkan 1.1 Support and Vulkan SDK 1.2.154

01 Oct 21:02
b9b78de
Compare
Choose a tag to compare

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
  • Add support for extensions:
    • VK_KHR_portability_subset
    • VK_KHR_create_renderpass2
    • VK_KHR_depth_stencil_resolve
    • VK_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
      MTLSharedEvent Vulkan extension)
    • VK_KHR_external_semaphore_capabilities (non-functional groundwork for
      future MTLSharedEvent Vulkan extension)
    • VK_KHR_multiview
    • VK_KHR_shader_subgroup_extended_types
  • Remove support for obsolete VK_EXTX_portability_subset extension.
  • 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 MoltenVKSPIRVToMSLConverter and MoltenVKGLSLToSPIRVConverter frameworks
      into a single MoltenVKShaderConverter framework.
  • 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.
  • vkCmdBindDescriptorSets order pDynamicOffsets by descriptor binding number
    within each descriptor set.
  • vkCmdCopyImage on 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 MTLDrawable present time options.
  • Fix dynamicOffsets ordering 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 variableMultisampleRate feature.
  • 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 renderTargetWidth and renderTargetHeight on 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 take renderArea into account.
  • Streamline image copying when the entire source is being copied to the entire destination.
  • Don't set renderTargetArrayLength on 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 addressModeW on 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 MTLTexture for 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_divisor fix issues with zero divisors.
  • Re-add support for bitcode generation on iOS and tvOS.
  • fetchDependencies builds serially by default for better build script integration.
  • Combine MoltenVKSPIRVToMSLConverter and MoltenVKGLSLToSPIRVConverter
    frameworks into a single MoltenVKShaderConverter framework.
  • 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 setColorStoreAction for 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_SIZE is used.
  • Fix detection of indexed draw calls.
  • vkSetMTLTextureMVK() Fix crash if incoming MTLTexture does not have an associated IOSurface.
  • 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) to abs(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 OpCompositeInsert and OpVectorInsertDynamic.
    • 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_y in all relevant stages.
    • Clean up conditional branch codegen.

Release for Vulkan SDK 1.2.148

31 Jul 19:37
8f6edef
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_driver_properties
    • VK_KHR_sampler_ycbcr_conversion
    • VK_EXT_image_robustness
    • VK_EXT_robustness2
  • Add native support for VK_FORMAT_D16_UNORM on iOS 13.0+ and tvOS 13.0+.
  • Add support for tvOS platform.
  • Add support for iOS Simulator and tvOS Simulator build destinations.
  • Cube demo runs on tvOS, iOS Simulator, and tvOS Simulator.
  • MoltenVK Xcode schemes support building fat Platform+Simulator binaries.
  • Makefile supports building fat Platform+Simulator binaries, plus Debug builds.
  • fetchDependencies script supports platform build selection, plus parallel builds.
  • vkCmdBlitImage() returns error if scaling or inverting to linear image on macOS.
  • Support VK_FORMAT_A2B10G10R10_UNORM_PACK32 as a surface format.
  • Support VkPipelineMultisampleStateCreateInfo::pSampleMask.
  • Support VkPhysicalDeviceSubgroupProperties.
  • Fix memory layout of inline uniform blocks.
  • Fix issue where mapped host-coherent device memory not updated from image contents on macOS.
  • Fix image memory sizing and offsets.
  • Fix small memory leak when setting swapchain color space.
  • Fix new and unexpected App Store failure on newly deprecated color space values.
  • Fix intermittent concurrent shader specialization race condition.
  • Fix offsets when flushing buffer data to GPU.
  • Fix issue where expected buffer-sizes buffer not bound to Metal compute encoder.
  • Ensure fragment shader inputs to have as many components as vertex shader outputs.
  • Include vertex attribute size when testing whether attribute offset exceeds stride.
  • Add support for USCALED/SSCALED vertex formats.
  • Add host-coherent texel buffer caching just for buffer views.
  • Include MoltenVK Git revision hash in VkPhysicalDeviceProperties::pipelineCacheUUID.
  • Add MVKPhysicalDeviceMetalFeatures::vertexStrideAlignment to track Metal vertex binding stride alignment.
  • Add MVKPhysicalDeviceMetalFeatures::indirectTessellationDrawing to track if indirect tessellation drawing is supported.
  • Remove use of @available() directive as it was causing issues in some build environments.
  • Pass pipeline sample mask, if present, to SPIRV-Cross.
  • Refactor MoltenVK Xcode build architectures.
  • Demo API-Samples generateSPIRVShaders no longer builds MoltenVKShaderController tool.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 27.
  • Update dependency libraries to match Vulkan SDK 1.2.148.
  • Update to latest SPIRV-Cross version:
    • MSL: Add support for processing more than one patch per workgroup.
    • MSL: Workaround broken scalar access chain behavior in MSL LLVM IR / AIR.
    • MSL: Do not emit swizzled writes in packing fixups.
    • MSL: Ensure OpStore source operands are marked for inclusion in function arguments.
    • MSL: Enabling setting an additional fixed sampleMask in fragment shaders.
    • MSL: Remove obsolete MSLVertexAttr and MSLShaderInput members.
    • MSL: Fix up input variables' vector lengths in all stages.
    • MSL: Improve handling of array types in buffer objects.
    • MSL: Deal with loading non-value-type arrays.
    • MSL: Deal with array load-store in buffer-block structs.
    • MSL: Use input attachment index directly for resource index fallback.
    • Fix missing switch cases in Y'CbCr conversion.
    • Implement context-sensitive expression read tracking.

Release for Vulkan SDK 1.2.141.1

09 Jun 19:40
e9fc62b
Compare
Choose a tag to compare
  • Fix issue in reporting properties of substitutable VkFormats.
  • Fix vertex attribute offset adjustments when vertex buffer stride is zero.
  • Update fetchDependencies script to use pre-built spirv-tools files by default.
  • Update maxVertexInputBindingStride and maxVertexInputAttributeOffset
    to minimum Vulkan values.
  • Numerous documentation typo corrections.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 26.
  • Update Travis CI to Xcode 11.5.