Skip to content

Releases: KhronosGroup/MoltenVK

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.

Enhancements to swapchain, GPU display control, and S3TC compression

31 Dec 23:15
76146fc
Compare
Choose a tag to compare
  • Allow 2 or 3 swapchain images to support both double and triple buffering.
  • Force display to switch to GPU selected by vkCreateDevice() to avoid system view compositor having to copy from that GPU to display GPU.
  • Use inline buffer for pipeline auxiliary buffer.
  • vkCmdCopyImage: Cast source image to the destination format.
  • Result of vkGetPhysicalDeviceFormatProperties2KHR match vkGetPhysicalDeviceFormatProperties.
  • MVKImage: Return error for BLOCK_TEXEL_VIEW.
  • MVKDescriptorSet: Fix handling of immutable samplers.
  • MVKPipeline: Forbid vertex attribute offsets >= stride.
  • Fix handling of case where vertex bindings and binding indices don't match up.
  • Return VK_TIMEOUT even on zero wait if fences not signalled.
  • Support iOS builds for arm64e architecture.
  • Improvements to building external libraries.
  • Print Vulkan semantics when logging converted GLSL.
  • Support uploading S3TC-compressed 3D images.

Numerous enhancements and fixes

15 Dec 22:04
f3416e7
Compare
Choose a tag to compare
  • Replace use of std::vector with MVKVector to support allocations on stack.
  • Add missing include MVKEnvironment.h to MVKImage.mm for IOSurfaces.
  • vkCmdClearAttachments apply [[render_target_array_index]] more carefully.
  • vkCmdPushDescriptorSet: Fix mapping of binding numbers to descriptor layouts.
  • Forbid depth/stencil formats on anything but 2D images.
  • MVKCommandPool: Destroy transfer images using the device.
  • MVKPipeline: Reject non-multiple-of-4 vertex buffer strides.
  • MVKPipeline: Set auxiliary buffer offsets once, on layout creation.
  • MVKSampler: Support border colors.
  • MVKImage: Round up byte alignment to the nearest power of 2.
  • MVKImage: Don't set MTLTextureUsageRenderTarget for non-blittable formats.
  • MVKImage: Support image views of 2D multisample array images.
  • MVKGraphicsPipeline: Add dummy attachments even when rasterization is off.
  • MVKDeviceMemory: Try creating an MTLBuffer before allocating heap memory.
  • Add support for VK_FORMAT_A2R10G10B10_UNORM_PACK32.
  • Support A8B8G8R8_PACK32 formats.
  • Add new formats and fix existing ones.
  • On macOS, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 can only be filtered.
  • On macOS, linear textures cannot be blitted to.
  • Depth formats cannot be used for a VkBufferView.
  • Give every image format we support the BLIT_SRC feature.
  • Correct supported features of compressed formats.
  • Correct mapping of packed 16-bit formats.
  • Add some more vertex formats.
  • Don't use char/uchar for clearing/copying 8-bit formats.
  • Explicitly set number of sparse image property/requirement info sets to 0.
  • Retrieve linear image memory alignment requirements from Metal device.
  • For each GPU, log MSL version and updated list of feature sets.
  • Cube demo on iOS support Portrait and Landscape device orientation.
  • Build the dylib with -fsanitize=address when asan is enabled.
  • Fix name of generated dSYM file.
  • Update to latest SPIRV-Cross version:
    • MSL don't emit memory_scope after MSL 2.0.

Add support for several extensions

15 Dec 22:00
ffb4406
Compare
Choose a tag to compare
  • Add support for extensions:
    • VK_KHR_bind_memory2
    • VK_KHR_swapchain_mutable_format
    • VK_KHR_shader_float16_int8
    • VK_KHR_8bit_storage
    • VK_KHR_16bit_storage
    • VK_KHR_relaxed_block_layout
    • VK_KHR_maintenance3
    • VK_KHR_storage_buffer_storage_class
  • Add support for 2D multisample array textures.
  • Ignore fragment shader if raster discard is enabled.
  • Force signedness of shader vertex attributes to match the host.
  • In debug configurations, create a dSYM bundle for libMoltenVK.dylib.
  • MVKImage: Take lock when setting the MTLTexture manually.
  • Optimize MVKFenceSitter.
  • Support parallel builds of fetchDependencies to improve build times.
  • Change internal header references to increase header path flexibility.
  • Update to latest SPIRV-Cross version:
    • MSL: Use an enum instead of two mutually exclusive booleans.
    • MSL: Force signedness of shader vertex attributes to match the host.
    • Support gl_HelperInvocation on GLSL and MSL.

Release for Vulkan SDK 1.1.92

23 Nov 21:19
2c3ba0a
Compare
Choose a tag to compare
  • Remove destroyed resources from descriptor sets.
  • Forbid compressed formats on non-2D images.
  • Update to latest dependency libraries for Vulkan SDK 1.1.92.
  • Update to latest SPIRV-Cross version:
    • MSL: Print early_fragment_tests specifier before fragment shader declaration.
    • MSL: Also pack members at unaligned offsets.
    • MSL: Also pack 2- and 4- element vectors when necessary.
    • MSL: Emit wrapper for SSign (sign() for int types).
    • MSL: Support extended arithmetic opcodes.
    • Handle opcode OpSourceContinued.
    • Handle group decorations.

Memory types, bitcode, MSL 8/16-bit & spec constants

09 Nov 12:46
Compare
Choose a tag to compare
  • Fix memoryTypes order to match Vulkan spec.
  • Allow linear images to use host-coherent memory.
  • Generate Bitcode in iOS libraries.
  • Allow all pipeline attachements to be unused.
  • Perform usage checks on 3D images.
  • Enhancements to dylib generation script.
  • Update to latest SPIRV-Cross version:
    • MSL: Support 8 & 16 bit types.
    • MSL: Updated spec constant support.

Refactor the build environment

31 Oct 19:00
e8b33cb
Compare
Choose a tag to compare
  • Refactor the build environment.
    • Support creation of static library and build framework and dynamic library from it.
    • Add Makefile to better support command line or script building integration.
    • Update demos to each use one of framework, static library, and dynamic library.
    • Refactor and rename the build scripts.
    • Refactor and rename the Xcode Schemes.
    • Update build and runtime documentation.
  • Update shader caching for compatibility with texture swizzling.
  • Support polygonMode VK_POLYGON_MODE_POINT.
  • vkCreateInstance returns VK_ERROR_INCOMPATIBLE_DRIVER if Metal not available.