Releases: KhronosGroup/MoltenVK
Releases · KhronosGroup/MoltenVK
Enhancements to swapchain, GPU display control, and S3TC compression
- 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
- 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.
- MSL don't emit
Add support for several extensions
- 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
- 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
- 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
- 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.
Support arbitrary swizzles of image data
- Support arbitrary swizzles of image data.
- Include struct size parameter in VK_MVK_moltenvk extension functions that pass structs that
might change size across extension versions. - Remove vkGetMoltenVKDeviceConfigurationMVK() & vkSetMoltenVKDeviceConfigurationMVK() functions.
- Allocate MVKDescriptorSets from a pool within MVKDescriptorPool
- Support copying between textures of compatible-sized formats
- Support VK_FORMAT_A2B10G10R10_UNORM_PACKED vertex format
- Build scripts support SRCROOT path containing spaces.
Release for Vulkan SDK 1.1.85
- Add support for features:
- shaderStorageImageMultisample
- shaderStorageImageReadWithoutFormat
- shaderStorageImageWriteWithoutFormat
- shaderUniformBufferArrayDynamicIndexing
- shaderSampledImageArrayDynamicIndexing
- shaderStorageBufferArrayDynamicIndexing
- shaderStorageImageArrayDynamicIndexing
- Support reduced render area
- Support rasterization to missing attachment
- Allocate MVKCommandBuffers from a pool within MVKCommandPool.
- Update glslang version
- Update to latest SPIRV-Cross version:
- MSL: Improve coordinate handling for buffer reads.
- MSL: Expand arrays of buffers passed as input.
Add extensions and update SPIRV_Cross.
- Add support for extensions:
- VK_KHR_maintenance2
- VK_EXT_vertex_attribute_divisor
- VK_KHR_sampler_mirror_clamp_to_edge
- VK_KHR_image_format_list
- VK_KHR_dedicated_allocation
- VK_KHR_get_memory_requirements2
- VK_EXT_shader_viewport_index_layer
- Support multiple viewports and scissor rectangles.
- Support sampleRateShading.
- Support pre-filling Metal command buffer on same thread as Vulkan command buffer.
- Support passing either a CAMetalLayer or an NSView/UIView in the pView member
when creating a surface. - Support views of the stencil aspect of depth/stencil images.
- Improvements to subviews on 3D textures.
- Enforce single queue per queue family to improve Metal command buffer handling.
- Set Metal render target sizes on iOS.
- Fix potential deadlocks on query results and fences.
- Fix memory leak on SPIRV conversion.
- Update to Vulkan header 1.1.85 and latest version of library dependencies.
- Update to latest SPIRV-Cross version:
- MSL: Handle the ViewportIndex builtin.
- MSL: Handle the SamplePosition builtin.
- MSL: Fix OpAtomicIIncrement and OpAtomicIDecrement.
- MSL: Support array of arrays composites and copying.
- MSL: Fix issues with casting of builtin integer vectors.
Add extensions and update SPIRV_Cross.
- Add support for extensions:
- VK_KHR_descriptor_update_template
- Create 3D MTLTextureViews for 2D image views of 3D textures.
- Allow building and packaging MoltenVK for of only iOS or only macOS.
- Move packaging scripts out of Xcode projects and into script files.
- vkUpdateDescriptorSet: Handle copies of uninitialized descriptors.
- vkCmdFillBuffer & vkCmdCopyBuffers: Use dispatch call that supports older OS versions.
- Update to latest SPIRV-Cross version:
- MSL: Emit F{Min,Max,Clamp} as fast:: and N{Min,Max,Clamp} as precise
- MSL: Implement multisampled array textures.
- MSL: Emit spvTexelBufferCoord() on ImageWrite to a Buffer.
- MSL: Handle interpolation qualifiers.
- MSL: Account for components when assigning locations to varyings.
- MSL: Do not emit function constants for version < 1.2.