Skip to content

Releases: KhronosGroup/MoltenVK

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.

Release for Vulkan SDK 1.1.106

12 Apr 19:21
d57704b
Compare
Choose a tag to compare
  • Add support for tessellation.
  • Add correct function entry point handling.
  • Add support for VK_KHR_get_surface_capabilities2 extension.
  • Implement newer VK_KHR_swapchain extension functions.
  • Support the VK_EXT_host_query_reset extension.
  • Add support for tracking device features enabled during vkCreateDevice().
  • Handle surface loss due to window moved between screens or a window style change.
  • Allow zero offset and stride combo in VkVertexInputBindingDescription.
  • API: Add MVKPhysicalDeviceMetalFeatures::depthSampleCompare.
  • Fix conditions under which functions return VK_INCOMPLETE.
  • Fix potential memory leak on synchronous command buffer submission.
  • Increase shader float constant accuracy beyond 6 digits of precision.
  • fetchDependencies: Stop on first error.
  • Clean up behaviour of sparse binding functions.
  • Fix a possible race condition around MVKMTLBufferAllocation.
  • Fix memory overrun if no vertex buffer found with same binding as a vertex attribute.
  • Fix PVRTC texture content loading via memory mapping.
  • Fix wrong offset for vkCmdFillBuffer() on VK_WHOLE_SIZE.
  • Fixed crash within MVKPushConstantsCommandEncoderState when accessing absent
    graphics pipeline during a compute stage.
  • Fixed crash when MTLRenderPassDescriptor renderTargetWidth & renderTargetHeight
    set on older devices.
  • Renderpass width/height clamped to the renderArea includes offset, not just extent,
    and are set only when layered rendering is supported on device.
  • Set options properly on a buffer view's MTLTextureDescriptor.
  • Don't set MTLSamplerDescriptor.compareFunction on devices that don't support it.
  • Disable the shaderStorageImageArrayDynamicIndexing feature on iOS.
  • Debug build mode includes dSYM file for each dylib file.
  • Explicitly build dSYM files in BUILT_PRODUCTS_DIR to avoid conflict between
    macOS and iOS build locations.
  • Makefile supports install target to install MoltenVK.framework.
    into /Library/Frameworks/.
  • Add MVK_CONFIG_TRACE_VULKAN_CALLS env var and build setting to log Vulkan calls made by application.
  • Log shader performance statistics in any runtime if MVKConfiguration::performanceLoggingFrameCount non-zero.
  • Suppress visibility warning spam when building Debug macOS from SPIRV-Cross Release build.
  • Support Xcode 10.2.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 19.
  • MoltenVKShaderConverter tool:
    • Support cs & csh for compute shader file extensions.
    • Validate converted MSL with a test compilation.
    • Add option to log shader conversion performance.
  • Update to latest SPIRV-Cross version:
    • MSL: Add support for Metal 2 indirect argument buffers.
    • MSL: Add support for tessellation control & evaluation shaders.
    • MSL: Support VK_KHR_push_descriptor.
    • MSL: Force unnamed array builtin attributes to have a name.
    • MSL: Set location of builtins based on client input.
    • MSL: Ignore duplicate builtin vertex attributes.
    • MSL: Fix crash where variable storage buffer pointers are passed down.
    • MSL: Fix infinite CAS loop on atomic_compare_exchange_weak_explicit().
    • MSL: Fix depth2d 4-component fixup.
    • MSL: Expand quad gl_TessCoord to a float3.
    • MSL: Fix depth textures which are sampled and compared against.
    • MSL: Emit proper name for optimized UBO/SSBO arrays.
    • MSL: Support emit two layers of address space.
    • MSL: Declare gl_WorkGroupSize constant with [[maybe_unused]].
    • MSL: Fix OpLoad of array which is forced to a temporary.
    • Add stable C API and ABI.
    • Performance improvements & reduce pressure on global allocation.
    • Fix case where a struct is loaded which contains a row-major matrix.
    • Fix edge case where opaque types can be declared on stack.
    • Ensure locale handling is safe for multi-threading.
    • Add support for sanitizing address and threads.
    • Add support for SPV_NV_ray_tracing.
    • Support -1 index in OpVectorShuffle.
    • Deal more flexibly with for-loop & while-loop variations.
    • Detect invalid DoWhileLoop early.
    • Force complex loop in certain rare access chain scenarios.
    • Make locale handling threadsafe.
    • Support do-while where test is negative.
    • Emit loop header variables even for while and dowhile.
    • Properly deal with sign-dependent GLSL opcodes.
    • Deal with mismatched signs in S/U/F conversion opcodes.
    • Rewrite how we deal with locales and decimal point.
    • Fix crash when backend.int16_t_literal_suffix set to null.
    • Introduce customizable SPIRV-Cross namespaces and use MVK_spirv_cross in MoltenVK.

Release for Vulkan SDK 1.1.101

05 Mar 22:08
e4f79af
Compare
Choose a tag to compare
  • Support the VK_EXT_memory_budget extension.
  • Support 8-bit part of VK_KHR_shader_float16_int8.
  • Disable the shaderStorageImageMultisample feature.
  • Modify README.md to direct developers to Vulkan SDK.
  • Clarify Xcode version requirements in documentation.
  • Use the MTLDevice registryID property to locate the GPU in IOKit.
  • Add GPU device ID for iOS A12 SoC.
  • Allow logging level to be controlled with MVK_CONFIG_LOG_LEVEL
    runtime environment variable.
  • Allow forcing use of low-power GPU using MVK_CONFIG_FORCE_LOW_POWER_GPU
    runtime environment variable.
    Set MSL version for shader compiling from Metal feature set.
  • Don't warn on identity swizzles when fullImageViewSwizzle config setting is enabled.
  • Track version of spvAux buffer struct in SPRIV-Cross and fail build if different
    than version expected by MoltenVK.
  • Add static and dynamic libraries to MoltenVKShaderConverter project.
  • Fix crash from use of MTLDevice registryID on early OS versions.
  • fetchDependencies: Fix issue loading from Vulkan-Portability_repo_revision.
  • fetchDependencies: Clean MoltenVK build to ensure using latest dependency libs.
  • Update to latest dependency libraries to support SDK 1.1.101.
  • Update to latest SPIRV-Cross version:
    • MSL: Implement 8-bit part of VK_KHR_shader_float16_int8.
    • MSL: Add a setting to capture vertex shader output to a buffer.
    • MSL: Stop passing the aux buffer around.
    • Support LUTs in single-function CFGs on Private storage class.

Add support for VK_EXTX_portability_subset extension.

29 Jan 01:37
66e383f
Compare
Choose a tag to compare
  • Add support for VK_EXTX_portability_subset extension.
  • iOS: Support dual-source blending with iOS 11.
  • iOS: Support cube arrays with A11.
  • iOS: Support layered rendering and multiple viewports with A12.
  • Use combined store-resolve ops when supported and requested in renderpass.
  • Fixes to values returned from vkGetPhysicalDeviceImageFormatProperties()
    and vkGetPhysicalDeviceImageFormatProperties2KHR().
  • Log and return VK_ERROR_FEATURE_NOT_PRESENT error if vkCreateImageView()
    requires shader swizzling but it is not enabled.
  • Log and return VK_ERROR_FEATURE_NOT_PRESENT error if array of textures or
    array of samplers requested but not supported.
  • Treat all attributes & resources as used by shader when using pre-converted MSL.
  • Allow default GPU Capture scope to be assigned to any queue in any queue family.
  • VkPhysicalDevice: Correct some features and limits.
  • Stop advertising atomic image support.
  • vkSetMTLTextureMVK() function retains texture object.
  • Log to stderr instead of stdout.
  • fetchDependencies: build spirv-tools when attached via symlink.
  • Enhancements to MVKVector, and set appropriate inline sizing usages.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 17.
  • Update to latest SPIRV-Cross version:
    • MSL: Use correct size and alignment rules for structs.
    • MSL: Fix texture projection with Dref.
    • MSL: Deal with resource name aliasing.

Release for Vulkan SDK 1.1.97

17 Jan 22:39
519b594
Compare
Choose a tag to compare
  • Support runtime config via runtime environment variables
  • Add full ImageView swizzling to config, and disable it by default.
  • Add GPU switching to config, and enable it by default.
  • Add queue family specialization to config, and disable it by default.
  • Enable synchronous queue submits as config default.
  • Support 4 queue families.
  • Pad fragment shader output to 4 components when needed.
  • Add support for copying to and from PVRTC images.
  • Log Vulkan versions in human readable form when reporting version error.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 16.
  • Update copyright to 2019.
  • Advertise the VK_AMD_gpu_shader_half_float extension.
  • Support the VK_KHR_variable_pointers extension.
  • MoltenVKShaderConverter tool exit with fail code on any file conversion fail.
  • Update to latest dependency libraries for Vulkan SDK 1.1.97.
  • Update to latest SPIRV-Cross version:
    • MSL: Support SPV_KHR_variable_pointers.
    • MSL: Workaround missing gradient2d() on macOS for typical cascaded shadow mapping.
    • MSL: Fix mapping of identity-swizzled components.
    • MSL: Support composites inside I/O blocks.
    • MSL: Fix case where we pass arrays to functions by value.
    • MSL: Add option to pad fragment outputs.
    • MSL: Fix passing a sampled image to a function.
    • MSL: Support std140 packing rules for float[] and float2[].
    • MSL: Fix image load/store for short vectors.
    • Performance improvements on iterating internal constructs.
    • Update copyright to 2019.