Skip to content

Releases: KhronosGroup/MoltenVK

Release for Vulkan SDK 1.2.141

02 Jun 15:34
81b61f9
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_GOOGLE_display_timing
    • VK_KHR_external_memory (non-functional groundwork for future
      Metal-resource Vulkan extension).
    • VK_KHR_external_memory_capabilities (non-functional groundwork
      for future Metal-resource Vulkan extension).
  • Memory consumption improvements in command handling and vector pre-allocation optimizations.
  • vkQueuePresentKHR() returns a VkResult for each swapchain.
  • MVKPipeline disable fragment shader outputs for unused attachments.
  • MVKBuffer support texel buffers in host-coherent memory on Mac.
  • MVKDescriptor pass buffers to shaders that do atomic image accesses.
  • Support vertex attribute offsets larger than the vertex buffer stride.
  • Fix crash when more than two GPUs.
  • Fix issue where vkGetPhysicalDeviceFormatProperties() incorrectly returned
    properties for unsupported formats.
  • Fix stack overflow in when logging and reporting very long messages.
  • Fix situation where compute pipeline state not retained across copy and renderpass operations.
  • Fix buffer offset calculation.
  • Fixes to maximum FPS calculations.
  • Fix buffer size passed to shaders when VkDescriptorBufferInfo.range set to VK_WHOLE_SIZE.
  • Update maximum number of framebuffer layers to 2048.
  • Support stencil only image formats in identity swizzle case.
  • Enables format atomic capabilities only when format supports it.
  • Add MVKSmallVector as a more memory efficient substitute of MVKVector.
  • Reinstate VulkanSamples API-Samples demo apps and add
    input_attachment and push_descriptors demos.
  • Add MVK_CONFIG_AUTO_GPU_CAPTURE_OUTPUT_FILE environment variable
    to support capturing GPU traces to a file.
  • Consolidate frame and non-frame performance reporting.
    • Remove vkGetSwapchainPerformanceMVK() from API.
    • Swapchain performance can be retrieved with other activity performance
      through vkGetPerformanceStatisticsMVK().
    • Add MVK_CONFIG_PERFORMANCE_LOGGING_INLINE env var to enable/disable
      logging of performance of each activity when it happens.
    • Reduce thread locking on performance statistics collection.
  • Numerous documentation typo corrections.
  • Support Xcode 11.5.
  • Update dependency libraries to match Vulkan SDK 1.2.141.
  • Update to latest SPIRV-Cross version:
    • MSL: mark BuiltInFragCoord as implicitly used for subpass reads.
    • MSL: Deal with cases where builtin is implicitly needed, declared, but unused.
    • MSL: Do not use base expression with PhysicalTypeID OpCompositeExtract.
    • MSL: Add options to control emission of fragment outputs.
    • MSL: Force disabled fragment builtins to have the right name.
    • MSL: Allow removing clip distance user varyings.
    • MSL: Support edge case with DX layout in scalar block layout.
    • MSL: Deal correctly with initializers on Private variables.
    • MSL: Fix case where subpassInput is passed to leaf functions.
    • MSL: Redirect member indices when buffer has been sorted by Offset.
    • MSL: If the packed type is scalar, don't emit "pack_" prefix.
    • MSL: Avoid packed arrays in more cases.
    • Do not add NonWritable/NonReadable decorations for regular images.
    • Expose a query if samplers or images are comparison resources.

Release for Vulkan SDK 1.2.135

06 Apr 01:32
1a25de5
Compare
Choose a tag to compare
  • Accurately populate Vulkan VkFormatProperties from MTLPixelFormat capabilities,
    taking into consideration variations across MTLDevice Features Sets.
  • Validate format capabilities for MSAA, renderpass attachments, and vkCmdResolveImage().
  • Fix issue where immutable samplers are removed during descriptor update.
  • Guard against Metal validation assertion from reuse of query number within a single MTLRenderEncoder.
  • Increase value of VkPhysicalDeviceLimits::minStorageBufferOffsetAlignment
    to 16 to avoid Metal validation assertions.
  • Add ability to disable command memory pooling using MVK_CONFIG_USE_COMMAND_POOLING
    environment variable.
  • Fix memory leak when pre-filling MTLCommandBuffers using MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS.
  • Fix issue causing screen captures from swapchain image to deadlock.
  • Fix memory estimates for iOS 13+.
  • Broaden conditions for host read sync for image memory barriers on macOS.
  • Fix issue of reseting CAMetalDrawable and MTLTexture of peer swapchain images.
  • Fix the make install build command to overwrite the existing framework in the system
    framework library, and update README.md to clarify the instructions for using make install.
  • Update the README.md and MoltenVK_Runtime_UserGuide.md documents to clarify that
    MoltenVK is not a fully-compliant implementation of Vulkan.
  • Support Xcode 11.4.
  • Disable API-Samples demos and document in Demos/README.md.
  • Update dependency libraries to match Vulkan SDK 1.2.135.
  • Update to latest SPIRV-Cross version:
    • MSL: Support inline uniform blocks in argument buffers.
    • MSL: Move inline uniform blocks to the end of the argument buffer.
    • MSL: Fix access chain for deep struct hierarchy on array of buffers.
    • MSL: Remove old memory_scope flag from iOS barriers.
    • MSL: Fixes to array handling.

Release for Vulkan SDK 1.2.131

22 Jan 16:50
fd7b69b
Compare
Choose a tag to compare
  • Refactor descriptor management to reduce memory footprint and fix caching leak.
  • Add MVK_CONFIG_PREALLOCATE_DESCRIPTORS environment variable to support preallocated
    descriptor pooling within a VkDescriptorPool via the VkDescriptorPoolSize values.
  • Fix crash when app does not use queue family zero.
  • Fix buffer offset in vkCmdPushDescriptorSet() for non-dedicated buffer memory.
  • Fix Metal validation error on push constant sizing differences between C and MSL structs.
  • Use MTLBuffer when inline uniform block descriptor is written to instead of copying host-side bytes.
  • Fix EXT_inline_uniform_block when using push descriptor sets.
  • Merge buffer and inline unions to fix issue where binding inline descriptor would interfere with
    future binds on the same set index in the same command buffer (now only used in push case anyway).
  • Track performance of CAMetalLayer nextDrawable call.
  • Document recommendation to use 3 swapchain images, particularly with full-screen rendering.
  • Update MoltenVK_Runtime_UserGuide.md to better explain runtime environment variables.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 24.
  • Update copyright notices to year 2020.
  • Update dependency libraries to match Vulkan SDK 1.2.131.
  • Update to latest SPIRV-Cross version:
    • MSL: Support ClipDistance as an input stage variable.
    • MSL: Fix automatic binding allocation for image atomic buffers.
    • MSL: Deal with packing vectors for vertex input/fragment output.
    • MSL: Don't set OrigID when emitting component packed vectors.
    • MSL: Add trivial tests for Component decoration.
    • MSL: Deal with padded fragment output + Component decoration.
    • MSL: Partially implement support for Component decoration in complex scenarios.
    • MSL: Explicitly don't support component packing for tessellation.
    • MSL: Deal with sign on wave min/max.
    • MSL: Add support for force-activating IAB resources.
    • Deal with illegal names in types as well.
    • Basic implementation of OpCopyLogical.
    • Fix sign handling for S/UToF.
    • Fix uninitialized memory issue.
    • Roll custom versions of isalpha/isalnum.
    • Update license headers to year 2020.

Release for Vulkan SDK 1.1.130

16 Dec 22:42
8a06463
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_inline_uniform_block
  • Support linear filtering when using vkCmdBlitImage().
  • Clamp image copy extents to image extent.
  • Fix crash in fetchDependencies on build paths containing spaces.
  • Fix image subresource sizing calculations for heap-based textures.
  • Fix MTLHeap memory leak in MVKDeviceMemory.
  • Fix tessellation break when control stage declares but does not use position builtin.
  • Fix inconsistency in reporting device local memory between type and heap on macOS.
  • Fix bug where dynamic shader buffers are overflowing.
  • Avoid reading env vars inside library constructor functions.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 23.
  • Cube demo use VK_EXT_metal_surface extension.
  • Support Xcode 11.3.
  • Update dependency libraries to match Vulkan SDK 1.1.130.
  • Update to latest SPIRV-Cross version:
    • MSL: Rewrite tessellation_access_chain().
    • MSL: Report tess input array failures more accurately.
    • MSL: Deal with chained access chains for tessellation IO variables.
    • MSL: Fix array of array declaration.
    • MSL: Declare struct type explicitly.
    • MSL: Declare arrays with proper type wrapper.
    • MSL: Remove workaround for passing constant arrays to functions.
    • MSL: Fix unpacking of column from padded matrix.
    • MSL: Fix integer cast.
    • MSL: Add missing reference output.
    • MSL: Ensure stable output for access chain CFG workarounds.
    • MSL: Remove stray allow_id_rewrite().
    • MSL: Do read-only lookups of access_chain_children.
    • MSL: Do not declare variables which will not be unflattened.
    • MSL: Rewrite propagated depth comparison state handling.
    • MSL: Do not declare array of UBO/SSBO as spvUnsafeArray<T>.
    • MSL: Remove dubious workaround code in unpack_expression().
    • MSL: Remove hacky workaround for patch constant passing.
    • MSL: Revert hack with kBufferSizeBufferBinding.
    • MSL: Remove stale code for texture swizzle.
    • MSL: Avoid some fallthrough warnings.
    • Expose as public Compiler::update_active_builtins() and has_active_builtin().
    • Implement constant empty struct correctly on all backends.
    • Mark loop headers as complex as early as possible.
    • Clean up call to builtin_translates_to_nonarray().
    • Fix broken access tracking for OpFunctionCall results.
    • Avoid including stdexcept in no-exception environment.
    • Add spvc_type_get_base_type_id().

Release for Vulkan SDK 1.1.126

30 Oct 21:10
eaf30d4
Compare
Choose a tag to compare
  • Add support for Metal 3.0 capabilities.
  • Add support for extensions:
    • VK_EXT_swapchain_colorspace (iOS, already supported on macOS).
    • VK_EXT_hdr_metadata (macOS)
  • Use native texture swizzling when available.
  • Set default value of the MVK_ALLOW_METAL_FENCES environment variable to 1 (true),
    to enable use of MTLFence for Vulkan semaphores, by default.
  • Support additional capabilities in 1D images, including rendering, clearing,
    and mipmaps. Add MVK_CONFIG_TEXTURE_1D_AS_2D environment variable to
    enable/disable these capabilities.
  • Use placement MTLHeaps for VkDeviceMemory when possible.
  • Report heap sizes accurately when possible.
  • Add support for additional colorspace options.
  • Add support for the VkPhysicalDeviceFeatures::shaderResourceMinLod feature.
  • Add support for compressed 3D images on macOS.
  • Update MoltenVK_Runtime_UserGuide.md about embedding libMoltenVK.dylib in an application.
  • Clarify static linking as the recommended linking approach for iOS app store distribution.
  • Add request for feedback from people who reject MoltenVK to README.md document.
  • Allow MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS build setting to be overridden.
  • Fix memory leaks of system classes during VkInstance and VkQueue creation.
  • Fix memory leaks when compiling shaders and pipelines without default OS autorelease pool.
  • Fix severe FPS degradation caused by certain swapchain recreation situations.
  • Log format substitution error when MTLPixelFormatDepth24Unorm_Stencil8 is not supported.
  • Reduce memory usage by adjusting default memory allocs for many MVKVectorInline uses and
    replacing use of MVKVectorDefault with std::vector in descriptor set bindings.
  • Set value of VkPhysicalDeviceLimits::maxTexelBufferElements to more realistic value.
  • Add linking separate shader texts to GLSLToSPRIVConverter.
  • Move generation of SPIRV-Cross/mvkSpirvCrossRevisionDerived.h to separate script.
  • Support Xcode 11.1.
  • Update dependency libraries to match Vulkan SDK 1.1.126.
  • Update to latest SPIRV-Cross version:
    • MSL: Support option for treating 1D textures as 2D textures of height 1.
    • MSL: Fix array copies to/from interpolators.
    • MSL: Fix 16-bit integer literals.
    • MSL: Fix regression with OpCompositeConstruct from std140 float[].
    • Fixes cases where discard and demote are called in pure functions
      and the function result is not consumed.
    • Do not consider aliased struct types if the master is not a block.
    • Fix OpVectorExtractDynamic with spec constant op index.
    • Update SPIR-V headers to SPIR-V 1.5.

Release for Vulkan SDK 1.1.121 (Metal-3.0)

18 Sep 20:26
23de5ac
Compare
Choose a tag to compare

Note: This release requires support for Metal-3.0. That means Xcode11 for development, and macOS 10.15 and iOS 13 for runtime. Perhaps you want v1.0.37 instead?

  • Add support for extensions:
    • VK_KHR_device_group
    • VK_EXT_fragment_shader_interlock
  • Add support for VkEvent, using either native MTLEvent or emulation when MTLEvent not available.
  • vkInvalidateMappedMemoryRanges() synchronizes managed device memory to CPU.
  • Track supported instance and device extensions correctly.
  • Revert to supporting host-coherent memory for linear images on macOS.
  • Report limit of 64KB for constant buffer bindings on macOS.
  • Disable depth and/or stencil testing if corresponding attachment is missing.
  • Ensure Vulkan loader magic number is set every time before returning any dispatchable Vulkan handle.
  • Fix crash when VkDeviceCreateInfo specifies queue families out of numerical order.
  • Fix crash in vkDestroyPipelineLayout().
  • Fix crash when signalling swapchain semaphore using MTLEvent.
  • Fix crash when determining alignment of invalid pixel formats.
  • vkCmdBlitImage(): Support format component swizzling.
  • vkCmdClearImage(): Set error if attempt made to clear 1D image, and fix validation of depth attachment formats.
  • vkCreateRenderPass(): Return VK_ERROR_FORMAT_NOT_SUPPORTED if format not supported.
  • vkCmdFillBuffer(): Improve performance 150x by using parallelism more effectively.
  • Support optional use of MTLFence for Vulkan semaphores via the MVK_ALLOW_METAL_FENCES environment variable.
  • Remove error logging on VK_TIMEOUT of VkSemaphore and VkFence.
  • Remove log message warning of obsolescence of vkCreateMacOSSurfaceMVK() and vkCreateIOSSurfaceMVK() functions.
  • Report error only on the first time a format substitution is made.
  • Streamline design and use of MVKSemaphore.
  • Consolidate the various linkable objects into a MVKLinkableMixin template base class.
  • Use MVKVector whenever possible in MoltenVK, especially within render loop.
  • No longer prefer dedicated allocations for buffer memory, including buffer-backed images.
  • Handle the compositeAlpha member of VkSwapchainCreateInfoKHR.
  • VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events set to true.
  • Always submit surface presentations using MTLCommandBuffer.
    MVKConfiguration::presentWithCommandBuffer is now obsolete.
  • Don't use MTLCommandBuffer push/popDebugGroup if not available.
  • MVKSwapchain::signalWhenAvailable() add autoreleasepool around MTLCommandBuffer use.
  • Add ability to automatically cause an Xcode GPU capture without developer intervention.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 22.
  • Update dependency libraries to match Vulkan SDK 1.1.121.
  • Update to renaming of VK_INTEL_shader_integer_functions2 enums and structs in latest Vulkan headers.
  • Update to latest SPIRV-Cross version:
    • Support the SPV_EXT_fragment_shader_interlock extension.
    • MSL: Deal with array copies from and to threadgroup.
    • MSL: Deal with Modf/Frexp where output is access chain to scalar.
    • MSL: Inline all emitted functions.
    • MSL: Inline all non-entry-point functions.
    • MSL: Add {Base,}{Vertex,Instance}{,Index} to bitcast_from_builtin_load.
    • MSL: Add support for sampler Y'CbCr conversion.
    • MSL: Force storage images on iOS to use discrete descriptors.
    • MSL: Support dynamic offsets for buffers in argument buffers.
    • MSL: Cleanup temporary use with emit_uninitialized_temporary.
    • MSL: Unify the get_*_address_space() methods.
    • Assume image and sampler can be RelaxedPrecision.
    • Fix post-depth coverage for ESSL.
    • Fix variable scope when switch block exits multiple times.
    • Fix severe performance issue with invariant expression invalidation.
    • Fix ParsedIR::mark_used_as_array_length(uint32_t id)
    • Deal correctly with sign on bitfield operations.
    • Elide branches to continue block when continue block is also a merge.
    • Move branchless analysis to CFG.
    • Deal with ldexp taking uint input.
    • Do not allow base expressions for non-native row-major matrices.
    • Do not force temporary unless continue-only for loop dominates.
    • Fix ParsedIR::mark_used_as_array_length(uint32_t id).
    • Refactor into stronger types in public API.

Release for Vulkan SDK 1.1.121

10 Sep 21:04
0934e32
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_device_group
    • VK_EXT_fragment_shader_interlock
  • Add support for VkEvent, using either native MTLEvent or emulation when MTLEvent not available.
  • vkInvalidateMappedMemoryRanges() synchronizes managed device memory to CPU.
  • Track supported instance and device extensions correctly.
  • Revert to supporting host-coherent memory for linear images on macOS.
  • Report limit of 64KB for constant buffer bindings on macOS.
  • Disable depth and/or stencil testing if corresponding attachment is missing.
  • Ensure Vulkan loader magic number is set every time before returning any dispatchable Vulkan handle.
  • Fix crash when VkDeviceCreateInfo specifies queue families out of numerical order.
  • Fix crash in vkDestroyPipelineLayout().
  • Fix crash when signalling swapchain semaphore using MTLEvent.
  • Fix crash when determining alignment of invalid pixel formats.
  • vkCmdBlitImage(): Support format component swizzling.
  • vkCmdClearImage(): Set error if attempt made to clear 1D image, and fix validation of depth attachment formats.
  • vkCreateRenderPass(): Return VK_ERROR_FORMAT_NOT_SUPPORTED if format not supported.
  • vkCmdFillBuffer(): Improve performance 150x by using parallelism more effectively.
  • Support optional use of MTLFence for Vulkan semaphores via the MVK_ALLOW_METAL_FENCES environment variable.
  • Remove error logging on VK_TIMEOUT of VkSemaphore and VkFence.
  • Remove log message warning of obsolescence of vkCreateMacOSSurfaceMVK() and vkCreateIOSSurfaceMVK() functions.
  • Report error only on the first time a format substitution is made.
  • Streamline design and use of MVKSemaphore.
  • Consolidate the various linkable objects into a MVKLinkableMixin template base class.
  • Use MVKVector whenever possible in MoltenVK, especially within render loop.
  • No longer prefer dedicated allocations for buffer memory, including buffer-backed images.
  • Handle the compositeAlpha member of VkSwapchainCreateInfoKHR.
  • VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events set to true.
  • Always submit surface presentations using MTLCommandBuffer.
    MVKConfiguration::presentWithCommandBuffer is now obsolete.
  • Don't use MTLCommandBuffer push/popDebugGroup if not available.
  • MVKSwapchain::signalWhenAvailable() add autoreleasepool around MTLCommandBuffer use.
  • Add ability to automatically cause an Xcode GPU capture without developer intervention.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to version 22.
  • Update dependency libraries to match Vulkan SDK 1.1.121.
  • Update to renaming of VK_INTEL_shader_integer_functions2 enums and structs in latest Vulkan headers.
  • Update to latest SPIRV-Cross version:
    • Support the SPV_EXT_fragment_shader_interlock extension.
    • MSL: Deal with array copies from and to threadgroup.
    • MSL: Deal with Modf/Frexp where output is access chain to scalar.
    • MSL: Inline all emitted functions.
    • MSL: Inline all non-entry-point functions.
    • MSL: Add {Base,}{Vertex,Instance}{,Index} to bitcast_from_builtin_load.
    • MSL: Add support for sampler Y'CbCr conversion.
    • MSL: Force storage images on iOS to use discrete descriptors.
    • MSL: Support dynamic offsets for buffers in argument buffers.
    • MSL: Cleanup temporary use with emit_uninitialized_temporary.
    • MSL: Unify the get_*_address_space() methods.
    • Assume image and sampler can be RelaxedPrecision.
    • Fix post-depth coverage for ESSL.
    • Fix variable scope when switch block exits multiple times.
    • Fix severe performance issue with invariant expression invalidation.
    • Fix ParsedIR::mark_used_as_array_length(uint32_t id)
    • Deal correctly with sign on bitfield operations.
    • Elide branches to continue block when continue block is also a merge.
    • Move branchless analysis to CFG.
    • Deal with ldexp taking uint input.
    • Do not allow base expressions for non-native row-major matrices.
    • Do not force temporary unless continue-only for loop dominates.
    • Fix ParsedIR::mark_used_as_array_length(uint32_t id).
    • Refactor into stronger types in public API.

Release for Vulkan SDK 1.1.114 (Metal-3.0)

30 Jul 04:00
4f00810
Compare
Choose a tag to compare

Note: This release requires support for Metal-3.0. That means Xcode11 for development, and macOS 10.15 and iOS 13 for runtime. Perhaps you want v1.0.36 instead?

  • Add support for extensions:
    • VK_KHR_device_group_creation
    • VK_KHR_swapchain_mutable_format
    • VK_KHR_uniform_buffer_standard_layout
    • VK_EXT_metal_surface
    • VK_EXT_post_depth_coverage
    • VK_EXT_scalar_block_layout
    • VK_EXT_shader_stencil_export
    • VK_EXT_swapchain_colorspace
    • VK_EXT_texel_buffer_alignment
    • VK_AMD_shader_image_load_store_lod
    • VK_AMD_shader_trinary_minmax
    • VK_INTEL_shader_integer_functions2
  • Support VK_FORMAT_A2R10G10B10_UNORM_PACK32 as a surface format and view format.
  • For shaders created directly from MSL, set function name from
    VkPipelineShaderStageCreateInfo::pName.
  • On iOS GPU family 2 and earlier, support immutable depth-compare samplers
    as constexpr samplers hardcoded in MSL.
  • vkCmdCopyImage() support copying between compressed and uncompressed formats
    and validate that formats are compatible for copying.
  • vkCmdBufferImageCopy() fix crash when setting bytes per image in non-arrayed images.
  • vkCmdBlitImage() supports blit between different texture formats, and multisampled images.
  • vkCmdResolveImage() supports textures of different sizes.
  • vkCmdClearImage() returns error if texture is not renderable.
  • Move push constant binding to vkCmdBindPipeline() from vkCmdBindDescriptorSet().
  • MVKDeviceMemory keep MTLResourceOptions aligned with MTLStorageMode & MTLCPUCacheMode.
  • Texture memory requirements don't use shared storage on macOS.
  • Add MTLCommandBuffer completion timing performance tracking option.
  • Expand MVK_CONFIG_TRACE_VULKAN_CALLS to optionally log Vulkan call timings.
  • Skip SPIRV-Tools build in Travis because Travis does not support the required Python 3.
  • Separate SPIRVToMSLConverterContext into input config and output results.
  • Use native Metal texture buffers when available.
  • Fix issue with push constants used across multiple draw calls not being applied.
  • Fix memory leak in debug marker and debug utils labelling.
  • Reduce memory leaks when autorelease pools are not available.
  • Fix pipeline cache lookups.
  • Fix race condition between swapchain image destruction and presentation completion callback.
  • Set Metal texture usage to allow texture copy via view.
  • Fix memory leak in debug marker and debug utils labelling.
  • Fix issue with push constants used across multiple draw calls not being applied.
  • Fix crash when binding descriptor set to layout that has been destroyed and recreated.
  • Return error when MVKImage created as 1D attachment.
  • Reduce use of autoreleased Obj-C objects, and ensure those remaining are
    covered by deliberate autorelease pools.
  • Document that the functions in vk_mvk_moltenvk.h cannot be used with objects
    retrieved through the Vulkan SDK Loader and Layers framework.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 21.
  • Update dependency libraries to match Vulkan SDK 1.1.114.
  • Update to latest SPIRV-Cross version:
    • MSL: Support SPV_KHR_multiview extension.
    • MSL: Support the SPV_KHR_post_depth_coverage extension.
    • MSL: Support the SPV_AMD_shader_trinary_minmax extension.
    • MSL: Support the SPV_KHR_device_group extension.
    • MSL: Support the SPV_INTEL_shader_integer_functions2 extension.
    • MSL: Support SubgroupSize / SubgroupInvocationID in fragment.
    • MSL: Support OpImageQueryLod.
    • MSL: Support MinLod operand.
    • MSL: Support PrimitiveID in fragment and barycentrics.
    • MSL: Support 64-bit integers.
    • MSL: Support OpOuterProduct.
    • MSL: Support SubgroupLocalInvocationId and SubgroupSize in all stages.
    • MSL: Support scalar reflect and refract.
    • MSL: Support scalar block layout.
    • MSL: Use the select() function for OpSelect.
    • MSL: Handle coherent, volatile, and restrict.
    • MSL: Refactor buffer packing logic from ground up.
    • MSL: Fix alignment of packed types.
    • MSL: Handle packed matrices.
    • MSL: Conditionally validate MSL 2.2 shaders.
    • MSL: Rewrite how resource indices are fallback-assigned.
    • MSL: Support custom bindings for argument buffers.
    • MSL: Fix sampling with FP16 coordinates.
    • MSL: Deal with scalar input values for distance/length/normalize.
    • MSL: Error out on int64_t/uint64_t buffer members as unsupported by Metal.
    • MSL: Deal with scalar input values for distance/length/normalize.
    • MSL: Re-roll array expressions in initializers.
    • MSL: New SDK errors out on cull distance.
    • Rewrite how switch block case labels are emitted.
    • Fixes to handling of OpPhi and case fallthrough.
    • Fix declaration of loop variables with a OpPhi helper copy.
    • Handle more cases with FP16 and texture sampling.
    • Fix variable scope when an if or else block dominates a variable.
    • Fall back to complex loop if non-trivial continue block is found.
    • Remove unreasonable assertion for OpTypeImage Sampled parameter.
    • Propagate NonUniformEXT to dependent expressions.
    • Deal correctly with return sign of bitscan operations.

Release for Vulkan SDK 1.1.114

24 Jul 21:21
73cbc80
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_device_group_creation
    • VK_KHR_swapchain_mutable_format
    • VK_KHR_uniform_buffer_standard_layout
    • VK_EXT_metal_surface
    • VK_EXT_post_depth_coverage
    • VK_EXT_scalar_block_layout
    • VK_EXT_shader_stencil_export
    • VK_EXT_swapchain_colorspace
    • VK_EXT_texel_buffer_alignment
    • VK_AMD_shader_image_load_store_lod
    • VK_AMD_shader_trinary_minmax
    • VK_INTEL_shader_integer_functions2
  • Support VK_FORMAT_A2R10G10B10_UNORM_PACK32 as a surface format and view format.
  • For shaders created directly from MSL, set function name from
    VkPipelineShaderStageCreateInfo::pName.
  • On iOS GPU family 2 and earlier, support immutable depth-compare samplers
    as constexpr samplers hardcoded in MSL.
  • vkCmdCopyImage() support copying between compressed and uncompressed formats
    and validate that formats are compatible for copying.
  • vkCmdBufferImageCopy() fix crash when setting bytes per image in non-arrayed images.
  • vkCmdBlitImage() supports blit between different texture formats, and multisampled images.
  • vkCmdResolveImage() supports textures of different sizes.
  • vkCmdClearImage() returns error if texture is not renderable.
  • Move push constant binding to vkCmdBindPipeline() from vkCmdBindDescriptorSet().
  • MVKDeviceMemory keep MTLResourceOptions aligned with MTLStorageMode & MTLCPUCacheMode.
  • Texture memory requirements don't use shared storage on macOS.
  • Add MTLCommandBuffer completion timing performance tracking option.
  • Expand MVK_CONFIG_TRACE_VULKAN_CALLS to optionally log Vulkan call timings.
  • Skip SPIRV-Tools build in Travis because Travis does not support the required Python 3.
  • Separate SPIRVToMSLConverterContext into input config and output results.
  • Use native Metal texture buffers when available.
  • Fix issue with push constants used across multiple draw calls not being applied.
  • Fix memory leak in debug marker and debug utils labelling.
  • Reduce memory leaks when autorelease pools are not available.
  • Fix pipeline cache lookups.
  • Fix race condition between swapchain image destruction and presentation completion callback.
  • Set Metal texture usage to allow texture copy via view.
  • Fix memory leak in debug marker and debug utils labelling.
  • Fix issue with push constants used across multiple draw calls not being applied.
  • Fix crash when binding descriptor set to layout that has been destroyed and recreated.
  • Return error when MVKImage created as 1D attachment.
  • Reduce use of autoreleased Obj-C objects, and ensure those remaining are
    covered by deliberate autorelease pools.
  • Document that the functions in vk_mvk_moltenvk.h cannot be used with objects
    retrieved through the Vulkan SDK Loader and Layers framework.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 21.
  • Update dependency libraries to match Vulkan SDK 1.1.114.
  • Update to latest SPIRV-Cross version:
    • MSL: Support SPV_KHR_multiview extension.
    • MSL: Support the SPV_KHR_post_depth_coverage extension.
    • MSL: Support the SPV_AMD_shader_trinary_minmax extension.
    • MSL: Support the SPV_KHR_device_group extension.
    • MSL: Support the SPV_INTEL_shader_integer_functions2 extension.
    • MSL: Support SubgroupSize / SubgroupInvocationID in fragment.
    • MSL: Support OpImageQueryLod.
    • MSL: Support MinLod operand.
    • MSL: Support PrimitiveID in fragment and barycentrics.
    • MSL: Support 64-bit integers.
    • MSL: Support OpOuterProduct.
    • MSL: Support SubgroupLocalInvocationId and SubgroupSize in all stages.
    • MSL: Support scalar reflect and refract.
    • MSL: Support scalar block layout.
    • MSL: Use the select() function for OpSelect.
    • MSL: Handle coherent, volatile, and restrict.
    • MSL: Refactor buffer packing logic from ground up.
    • MSL: Fix alignment of packed types.
    • MSL: Handle packed matrices.
    • MSL: Conditionally validate MSL 2.2 shaders.
    • MSL: Rewrite how resource indices are fallback-assigned.
    • MSL: Support custom bindings for argument buffers.
    • MSL: Fix sampling with FP16 coordinates.
    • MSL: Deal with scalar input values for distance/length/normalize.
    • MSL: Error out on int64_t/uint64_t buffer members as unsupported by Metal.
    • MSL: Deal with scalar input values for distance/length/normalize.
    • MSL: Re-roll array expressions in initializers.
    • MSL: New SDK errors out on cull distance.
    • Rewrite how switch block case labels are emitted.
    • Fixes to handling of OpPhi and case fallthrough.
    • Fix declaration of loop variables with a OpPhi helper copy.
    • Handle more cases with FP16 and texture sampling.
    • Fix variable scope when an if or else block dominates a variable.
    • Fall back to complex loop if non-trivial continue block is found.
    • Remove unreasonable assertion for OpTypeImage Sampled parameter.
    • Propagate NonUniformEXT to dependent expressions.
    • Deal correctly with return sign of bitscan operations.

Release for Vulkan SDK 1.1.108

13 Jun 21:54
00c86d8
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_EXT_debug_report
    • VK_EXT_debug_marker
    • VK_EXT_debug_utils
    • VK_NV_glsl_shader
  • Support setting workgroup size for shader modules that use
    MSL directly instead of converting from SPIR-V.
  • Tessellation fixes:
    • Don't use setVertexBytes() for passing tessellation vertex counts.
    • Fix intermediate Metal renderpasses load and store actions maintaining
      attachments appropriately.
    • Use empty depth state for tessellation vertex pre-pass.
    • Fix tessellated indirect draws using wrong kernels to map parameters.
    • Work around potential Metal bug with stage-in indirect buffers.
    • Fix zero local threadgroup size in indirect tessellated rendering.
    • Fix [[attribute]] assignment for tessellation evaluation shaders.
  • VkSemaphore optionally uses MTLEvent, if available and
    MVK_ALLOW_METAL_EVENTS environment variable is enabled.
  • Add vkSetWorkgroupSizeMVK() to set compute kernel workgroup size
    when using MSL source code or MSL compiled code.
  • Allow zero count of viewports and scissors.
  • Report image layer limits for attachments in vkGetPhysicalDeviceImageFormatProperties().
  • Change log indication of error in logs from [***MoltenVK ERROR***] to
    [mvk-error], for consistency with other log level indications.
  • Allow mvkMTLRenderStagesFromVkPipelineStageFlags() to map to all Vulkan stages,
    by indicating whether the pipeline barrier should come before or after the stages.
  • Automatically update VkPhysicalDeviceProperties::pipelineCacheUUID when SPIRV-Cross revision changes.
  • Fix crash when clearing attachments using layered rendering on older macOS devices.
  • Fixes to Metal renderpass layered rendering settings.
  • vkCmdClearAttachments() returns encoder to previous pipeline, depth-stencil & resource state after execution.
  • Fix issue clearing stencil attachment via renderpass when depth attachment is not being cleared.
  • Fix sporadic crash on vkDestroySwapchainKHR().
  • MoltenVKShaderConverter tool: Add MSL version and platform command-line options.
  • Fix crash on pipeline cache merge after VkShaderModule destroyed.
  • Fix case where viewport/scissor doesn't get set properly when mixing dynamic and
    static-configured pipelines in the same command buffer.
  • Fix a race condition between sync objects and queries.
  • Fix unused attachments terminating loop early.
  • Fix offset of buffer view relative to buffer offset within device memory.
  • Guard against missing Metal pipeline states when pipeline compilation fails.
  • MVKBuffer: Force managed storage for linear textures on shared buffers.
  • Use device address space when decompressing DXT image data.
  • Added missing texelBufferTextureWidth setting in MVKComputePipeline::getMTLFunction().
  • Fixes and consolidation of external library header references.
  • Allow building external dependency libraries in Debug mode.
  • Enable AMD and NV GLSL extensions when building glslang for MoltenVKGLSLToSPIRVConverter.
  • Make external library header references consistent and add MVK_EXCLUDE_SPIRV_TOOLS option.
  • MVKVector improvements.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 20.
  • Update to latest SPIRV-Cross version:
    • MSL: Add support for subgroup operations.
    • MSL: Support argument buffers and image swizzling.
    • MSL: Add support for OpArrayLength.
    • MSL: Only use constant address space for tessellation control shader.
    • MSL: Support native texture_buffer type, throw error on atomics.
    • MSL: Add native texture buffer support.
    • MSL: Deal with texture swizzle on arrays of images.
    • MSL: Fix complex type alias declaration order.
    • MSL: Fix declaration of unused input variables.
    • MSL: Use correct address space when passing array-of-buffers.
    • MSL: Deal correctly with nonuniformEXT qualifier.
    • MSL: Cast texture_buffer index to uint.
    • MSL: Fix nonuniform test.
    • MSL: Fix regression with Private parameter declaration.
    • MSL: Support remapping constexpr samplers by set/binding.
    • MSL: Support Invariant qualifier on position.
    • MSL: Support stencil export.
    • Deal with case where a block is somehow emitted in a duplicated fashion.
    • Fix infinite loop when OpAtomic* temporaries are used in other blocks.
    • Fix tests for device->constant address space change in MSL tessellation control shader generation.
    • Accept SPIR-V 1.4 version.