Releases: KhronosGroup/MoltenVK
Releases · KhronosGroup/MoltenVK
Release for Vulkan SDK 1.1.106
- 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()
onVK_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
includesoffset
, not justextent
,
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 eachdylib
file. - Explicitly build dSYM files in
BUILT_PRODUCTS_DIR
to avoid conflict between
macOS and iOS build locations. Makefile
supportsinstall
target to installMoltenVK.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.
- Support
- 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
- 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 inIOKit
. - 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 fromVulkan-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.
- MSL: Implement 8-bit part of
Add support for VK_EXTX_portability_subset extension.
- 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()
andvkGetPhysicalDeviceImageFormatProperties2KHR()
. - Log and return
VK_ERROR_FEATURE_NOT_PRESENT
error ifvkCreateImageView()
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
: buildspirv-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
- 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
- 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.