Software 42318 Published by

Bill Hollings has announced the release of MoltenVK Vulkan 1.1 Support and Vulkan SDK 1.2.170.





MoltenVK is a driver-level implementation of the Vulkan 1.0 graphics and compute API, that runs on Apple's Metal graphics and compute framework on both iOS and macOS.

MoltenVK allows you to use the Vulkan graphics and compute API to develop modern, cross-platform, high-performance graphical games and applications, and to run them across many platforms, including both iOS and macOS.

  • Advertise support for shaderInt64 feature.
  • Support fast math on MSL compiler via MVKConfiguration::fastMathEnabled configuration
    setting and MVK_CONFIG_FAST_MATH_ENABLED environment variable (enabled by default).
  • Support compiling MSL with position invariance if indicated in SPIRV shader.
  • vkGetMoltenVKConfigurationMVK() and vkSetMoltenVKConfigurationMVK() functions
    can now be used with a VkInstance from another Vulkan layer, or with a VK_NULL_HANDLE VkInstance.
  • MVKConfiguration extended to cover all MoltenVK environment variables.
  • Report accurate value of 8 for VkPhysicalDeviceLimits::maxBoundDescriptorSets.
  • Advertise macOS M1 GPU as VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU.
  • For Vulkan semaphores, prefer using MTLFence over MTLEvent.
  • Support immmutableSamplers with sampler arrays.
  • Query pools write to dedicated temporary internal buffer to span multiple render passes
    and support larger query counts.
  • Fixes for race conditions in CTS multithread tests, guarding MTLDevice on cross-thread syncing.
  • Set Metal buffer alignment to 256 on non-Apple Silicon iOS/tvOS simulators.
  • MVKMTLBufferAllocation: Support device-local temp buffers for tessellation,
    indirect multiview, or occlusion queries buffer usage.
  • MVKPixelFormats: Enable RenderTarget usage for linear textures on Apple GPUs.
  • MVKRenderPass: Use a non-trivial granularity for TBDR GPUs.
  • Don't use barriers in render passes on Apple GPUs.
  • MVKGraphicsPipeline: Fix color write mask with RGB9E5 RTs.
  • MVKImagePlane: When sync'ing, create the texture if it doesn't exist.
  • MVKRenderPass: Don't use Load/Store actions for memoryless.
  • MVKRenderPass: Only use MTLStorageModeMemoryless where available.
  • MVKDeviceMemory: Don't consider Memoryless host-accessible on macOS/tvOS.
  • MVKCmdResolveImage fix incorrectly changing first resolve layer's src/dst base layer.
  • MVKPhysicalDevice: Require Mac family 2 for render without attachments.
  • MVKPhysicalDevice: Disable SIMD-group permutation for Mac family 1.
  • MVKPhysicalDevice: Clamp maximum buffer range to 4 GiB - 1.
  • MVKMTLBufferAllocation: Mark temp buffers as volatile.
  • SPIRVReflection: Multiple entry point support for getShaderOutputs().
  • Remove obsolete MVKVector, which was long ago replaced with MVKSmallVector.
  • Remove official support for submitting shaders directly containing MSL source code or compiled MSL code.
    MSL shaders may still be directly submitted, and may work, but it is not officially supported at this time.
    Future versions of MoltenVK may support direct MSL submission again.
  • Remove ONLY_ACTIVE_ARCH from Debug builds. MoltenVK Debug builds now build for all platform architectures.
  • Add ability to automatically capture first GPU frame by setting MVKConfiguration::autoGPUCaptureScope
    (or environment variable MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE) to 2.
  • Support GitHub Actions for CI builds on pull requests.
  • Support pre-built binary artifacts from GitHub Actions CI builds.
  • Makefile and fetchDependencies support xcpretty, if available.
  • Remove support for Travis-CI.
  • Update VK_MVK_MOLTENVK_SPEC_VERSION to 30.
  • Update copyright notices to year 2021.
  • Update Xcode build settings check to Xcode 12.4.
  • Support legacy building on Xcode 11.7.
  • Update dependency libraries to match Vulkan SDK 1.2.170.
  • Update to latest SPIRV-Cross version:
    • MSL: Gracefully assign automatic input locations to builtin attributes.
    • MSL: Refactor out location consumption count computation.
    • MSL: Always return [[position]] when required.
    • MSL: Fix some edge cases in input attachment handling.
    • MSL: Fix various bugs with framebuffer fetch on macOS and argument buffers.
    • MSL: Always use input_attachment_index for framebuffer fetch binding.
    • MSL: Make sure initialized output builtins are considered active.
    • MSL: Always enable Outputs in vertex stages.
    • MSL: Only consider builtin variables and flatten builtin arrays if they are part of IO interface.
    • MSL: Handle load and store to TessLevel array in TESC.
    • MSL: Fixup type when using tessellation levels in TESC functions.
    • MSL: Fix automatic assign of builtin attributes in tessellation.
    • GLSL/MSL: Handle more complicated tessellation Output initializers.
    • MSL: Emit correct initializer for tessellation control points.
    • MSL: Handle initializers for tess levels.
    • MSL: Fix initializer for tess level outputs.
    • MSL: Fix broken reserved identifier handling for entry points.
    • MSL: Handle reserved identifiers for entry point.
    • Fix pathological complexity explosion for certain shaders.
    • Improve handling of complex variable initialization.
    • Expose position invariance.
Vulkan

Download