Skip to content

Releases: KhronosGroup/MoltenVK

Release for Vulkan SDK 1.2.162

Choose a tag to compare

@billhollings billhollings released this 09 Dec 16:39
49de660
  • 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

Choose a tag to compare

@billhollings billhollings released this 01 Oct 21:02
b9b78de

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

Choose a tag to compare

@billhollings billhollings released this 31 Jul 19:37
8f6edef
  • 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

Choose a tag to compare

@billhollings billhollings released this 09 Jun 19:40
e9fc62b
  • 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.

Release for Vulkan SDK 1.2.141

Choose a tag to compare

@billhollings billhollings released this 02 Jun 15:34
81b61f9
  • 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

Choose a tag to compare

@billhollings billhollings released this 06 Apr 01:32
1a25de5
  • 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

Choose a tag to compare

@billhollings billhollings released this 22 Jan 16:50
fd7b69b
  • 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

Choose a tag to compare

@billhollings billhollings released this 16 Dec 22:42
8a06463
  • 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

Choose a tag to compare

@billhollings billhollings released this 30 Oct 21:10
eaf30d4
  • 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)

Choose a tag to compare

@billhollings billhollings released this 18 Sep 20:26
23de5ac

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.