Releases: KhronosGroup/MoltenVK
Releases · KhronosGroup/MoltenVK
Release for Vulkan SDK 1.1.126
- 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 to1 (true)
,
to enable use ofMTLFence
for Vulkan semaphores, by default. - Support additional capabilities in 1D images, including rendering, clearing,
and mipmaps. AddMVK_CONFIG_TEXTURE_1D_AS_2D
environment variable to
enable/disable these capabilities. - Use placement
MTLHeaps
forVkDeviceMemory
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 embeddinglibMoltenVK.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
andVkQueue
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 ofMVKVectorDefault
withstd::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
fromstd140 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)
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 nativeMTLEvent
or emulation whenMTLEvent
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():
ReturnVK_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 theMVK_ALLOW_METAL_FENCES
environment variable. - Remove error logging on
VK_TIMEOUT
ofVkSemaphore
andVkFence
. - Remove log message warning of obsolescence of
vkCreateMacOSSurfaceMVK()
andvkCreateIOSSurfaceMVK()
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 ofVkSwapchainCreateInfoKHR
. VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events
set totrue
.- Always submit surface presentations using
MTLCommandBuffer
.
MVKConfiguration::presentWithCommandBuffer
is now obsolete. - Don't use
MTLCommandBuffer push/popDebugGroup
if not available. MVKSwapchain::signalWhenAvailable()
add autoreleasepool aroundMTLCommandBuffer
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}
tobitcast_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
takinguint
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.
- Support the
Release for Vulkan SDK 1.1.121
- Add support for extensions:
VK_KHR_device_group
VK_EXT_fragment_shader_interlock
- Add support for
VkEvent
, using either nativeMTLEvent
or emulation whenMTLEvent
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():
ReturnVK_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 theMVK_ALLOW_METAL_FENCES
environment variable. - Remove error logging on
VK_TIMEOUT
ofVkSemaphore
andVkFence
. - Remove log message warning of obsolescence of
vkCreateMacOSSurfaceMVK()
andvkCreateIOSSurfaceMVK()
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 ofVkSwapchainCreateInfoKHR
. VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events
set totrue
.- Always submit surface presentations using
MTLCommandBuffer
.
MVKConfiguration::presentWithCommandBuffer
is now obsolete. - Don't use
MTLCommandBuffer push/popDebugGroup
if not available. MVKSwapchain::signalWhenAvailable()
add autoreleasepool aroundMTLCommandBuffer
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}
tobitcast_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
takinguint
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.
- Support the
Release for Vulkan SDK 1.1.114 (Metal-3.0)
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.36 instead?
- Add support for extensions:
VK_KHR_device_group_creation
VK_KHR_swapchain_mutable_format
VK_KHR_uniform_buffer_standard_layout
VK_EXT_metal_surface
VK_EXT_post_depth_coverage
VK_EXT_scalar_block_layout
VK_EXT_shader_stencil_export
VK_EXT_swapchain_colorspace
VK_EXT_texel_buffer_alignment
VK_AMD_shader_image_load_store_lod
VK_AMD_shader_trinary_minmax
VK_INTEL_shader_integer_functions2
- Support
VK_FORMAT_A2R10G10B10_UNORM_PACK32
as a surface format and view format. - For shaders created directly from MSL, set function name from
VkPipelineShaderStageCreateInfo::pName
. - On iOS GPU family 2 and earlier, support immutable depth-compare samplers
asconstexpr
samplers hardcoded in MSL. vkCmdCopyImage()
support copying between compressed and uncompressed formats
and validate that formats are compatible for copying.vkCmdBufferImageCopy()
fix crash when setting bytes per image in non-arrayed images.vkCmdBlitImage()
supports blit between different texture formats, and multisampled images.vkCmdResolveImage()
supports textures of different sizes.vkCmdClearImage()
returns error if texture is not renderable.- Move push constant binding to
vkCmdBindPipeline()
fromvkCmdBindDescriptorSet()
. MVKDeviceMemory
keepMTLResourceOptions
aligned withMTLStorageMode
&MTLCPUCacheMode
.- Texture memory requirements don't use shared storage on macOS.
- Add
MTLCommandBuffer
completion timing performance tracking option. - Expand
MVK_CONFIG_TRACE_VULKAN_CALLS
to optionally log Vulkan call timings. - Skip
SPIRV-Tools
build in Travis because Travis does not support the required Python 3. - Separate
SPIRVToMSLConverterContext
into input config and output results. - Use native Metal texture buffers when available.
- Fix issue with push constants used across multiple draw calls not being applied.
- Fix memory leak in debug marker and debug utils labelling.
- Reduce memory leaks when autorelease pools are not available.
- Fix pipeline cache lookups.
- Fix race condition between swapchain image destruction and presentation completion callback.
- Set Metal texture usage to allow texture copy via view.
- Fix memory leak in debug marker and debug utils labelling.
- Fix issue with push constants used across multiple draw calls not being applied.
- Fix crash when binding descriptor set to layout that has been destroyed and recreated.
- Return error when
MVKImage
created as 1D attachment. - Reduce use of autoreleased Obj-C objects, and ensure those remaining are
covered by deliberate autorelease pools. - Document that the functions in
vk_mvk_moltenvk.h
cannot be used with objects
retrieved through the Vulkan SDK Loader and Layers framework. - Update
VK_MVK_MOLTENVK_SPEC_VERSION
to 21. - Update dependency libraries to match Vulkan SDK 1.1.114.
- Update to latest SPIRV-Cross version:
- MSL: Support
SPV_KHR_multiview
extension. - MSL: Support the
SPV_KHR_post_depth_coverage
extension. - MSL: Support the
SPV_AMD_shader_trinary_minmax
extension. - MSL: Support the
SPV_KHR_device_group
extension. - MSL: Support the
SPV_INTEL_shader_integer_functions2
extension. - MSL: Support
SubgroupSize
/SubgroupInvocationID
in fragment. - MSL: Support
OpImageQueryLod
. - MSL: Support
MinLod
operand. - MSL: Support
PrimitiveID
in fragment and barycentrics. - MSL: Support 64-bit integers.
- MSL: Support
OpOuterProduct
. - MSL: Support
SubgroupLocalInvocationId
andSubgroupSize
in all stages. - MSL: Support scalar reflect and refract.
- MSL: Support scalar block layout.
- MSL: Use the
select()
function forOpSelect
. - MSL: Handle
coherent
,volatile
, andrestrict
. - MSL: Refactor buffer packing logic from ground up.
- MSL: Fix alignment of packed types.
- MSL: Handle packed matrices.
- MSL: Conditionally validate MSL 2.2 shaders.
- MSL: Rewrite how resource indices are fallback-assigned.
- MSL: Support custom bindings for argument buffers.
- MSL: Fix sampling with
FP16
coordinates. - MSL: Deal with scalar input values for distance/length/normalize.
- MSL: Error out on
int64_t/uint64_t
buffer members as unsupported by Metal. - MSL: Deal with scalar input values for distance/length/normalize.
- MSL: Re-roll array expressions in initializers.
- MSL: New SDK errors out on cull distance.
- Rewrite how switch block case labels are emitted.
- Fixes to handling of
OpPhi
and case fallthrough. - Fix declaration of loop variables with a
OpPhi
helper copy. - Handle more cases with FP16 and texture sampling.
- Fix variable scope when an
if
orelse
block dominates a variable. - Fall back to complex loop if non-trivial continue block is found.
- Remove unreasonable assertion for
OpTypeImage Sampled
parameter. - Propagate NonUniformEXT to dependent expressions.
- Deal correctly with return sign of bitscan operations.
- MSL: Support
Release for Vulkan SDK 1.1.114
- Add support for extensions:
VK_KHR_device_group_creation
VK_KHR_swapchain_mutable_format
VK_KHR_uniform_buffer_standard_layout
VK_EXT_metal_surface
VK_EXT_post_depth_coverage
VK_EXT_scalar_block_layout
VK_EXT_shader_stencil_export
VK_EXT_swapchain_colorspace
VK_EXT_texel_buffer_alignment
VK_AMD_shader_image_load_store_lod
VK_AMD_shader_trinary_minmax
VK_INTEL_shader_integer_functions2
- Support
VK_FORMAT_A2R10G10B10_UNORM_PACK32
as a surface format and view format. - For shaders created directly from MSL, set function name from
VkPipelineShaderStageCreateInfo::pName
. - On iOS GPU family 2 and earlier, support immutable depth-compare samplers
asconstexpr
samplers hardcoded in MSL. vkCmdCopyImage()
support copying between compressed and uncompressed formats
and validate that formats are compatible for copying.vkCmdBufferImageCopy()
fix crash when setting bytes per image in non-arrayed images.vkCmdBlitImage()
supports blit between different texture formats, and multisampled images.vkCmdResolveImage()
supports textures of different sizes.vkCmdClearImage()
returns error if texture is not renderable.- Move push constant binding to
vkCmdBindPipeline()
fromvkCmdBindDescriptorSet()
. MVKDeviceMemory
keepMTLResourceOptions
aligned withMTLStorageMode
&MTLCPUCacheMode
.- Texture memory requirements don't use shared storage on macOS.
- Add
MTLCommandBuffer
completion timing performance tracking option. - Expand
MVK_CONFIG_TRACE_VULKAN_CALLS
to optionally log Vulkan call timings. - Skip
SPIRV-Tools
build in Travis because Travis does not support the required Python 3. - Separate
SPIRVToMSLConverterContext
into input config and output results. - Use native Metal texture buffers when available.
- Fix issue with push constants used across multiple draw calls not being applied.
- Fix memory leak in debug marker and debug utils labelling.
- Reduce memory leaks when autorelease pools are not available.
- Fix pipeline cache lookups.
- Fix race condition between swapchain image destruction and presentation completion callback.
- Set Metal texture usage to allow texture copy via view.
- Fix memory leak in debug marker and debug utils labelling.
- Fix issue with push constants used across multiple draw calls not being applied.
- Fix crash when binding descriptor set to layout that has been destroyed and recreated.
- Return error when
MVKImage
created as 1D attachment. - Reduce use of autoreleased Obj-C objects, and ensure those remaining are
covered by deliberate autorelease pools. - Document that the functions in
vk_mvk_moltenvk.h
cannot be used with objects
retrieved through the Vulkan SDK Loader and Layers framework. - Update
VK_MVK_MOLTENVK_SPEC_VERSION
to 21. - Update dependency libraries to match Vulkan SDK 1.1.114.
- Update to latest SPIRV-Cross version:
- MSL: Support
SPV_KHR_multiview
extension. - MSL: Support the
SPV_KHR_post_depth_coverage
extension. - MSL: Support the
SPV_AMD_shader_trinary_minmax
extension. - MSL: Support the
SPV_KHR_device_group
extension. - MSL: Support the
SPV_INTEL_shader_integer_functions2
extension. - MSL: Support
SubgroupSize
/SubgroupInvocationID
in fragment. - MSL: Support
OpImageQueryLod
. - MSL: Support
MinLod
operand. - MSL: Support
PrimitiveID
in fragment and barycentrics. - MSL: Support 64-bit integers.
- MSL: Support
OpOuterProduct
. - MSL: Support
SubgroupLocalInvocationId
andSubgroupSize
in all stages. - MSL: Support scalar reflect and refract.
- MSL: Support scalar block layout.
- MSL: Use the
select()
function forOpSelect
. - MSL: Handle
coherent
,volatile
, andrestrict
. - MSL: Refactor buffer packing logic from ground up.
- MSL: Fix alignment of packed types.
- MSL: Handle packed matrices.
- MSL: Conditionally validate MSL 2.2 shaders.
- MSL: Rewrite how resource indices are fallback-assigned.
- MSL: Support custom bindings for argument buffers.
- MSL: Fix sampling with
FP16
coordinates. - MSL: Deal with scalar input values for distance/length/normalize.
- MSL: Error out on
int64_t/uint64_t
buffer members as unsupported by Metal. - MSL: Deal with scalar input values for distance/length/normalize.
- MSL: Re-roll array expressions in initializers.
- MSL: New SDK errors out on cull distance.
- Rewrite how switch block case labels are emitted.
- Fixes to handling of
OpPhi
and case fallthrough. - Fix declaration of loop variables with a
OpPhi
helper copy. - Handle more cases with FP16 and texture sampling.
- Fix variable scope when an
if
orelse
block dominates a variable. - Fall back to complex loop if non-trivial continue block is found.
- Remove unreasonable assertion for
OpTypeImage Sampled
parameter. - Propagate NonUniformEXT to dependent expressions.
- Deal correctly with return sign of bitscan operations.
- MSL: Support
Release for Vulkan SDK 1.1.108
- Add support for extensions:
VK_EXT_debug_report
VK_EXT_debug_marker
VK_EXT_debug_utils
VK_NV_glsl_shader
- Support setting workgroup size for shader modules that use
MSL directly instead of converting from SPIR-V. - Tessellation fixes:
- Don't use
setVertexBytes()
for passing tessellation vertex counts. - Fix intermediate Metal renderpasses load and store actions maintaining
attachments appropriately. - Use empty depth state for tessellation vertex pre-pass.
- Fix tessellated indirect draws using wrong kernels to map parameters.
- Work around potential Metal bug with stage-in indirect buffers.
- Fix zero local threadgroup size in indirect tessellated rendering.
- Fix [[attribute]] assignment for tessellation evaluation shaders.
- Don't use
VkSemaphore
optionally usesMTLEvent
, if available and
MVK_ALLOW_METAL_EVENTS
environment variable is enabled.- Add
vkSetWorkgroupSizeMVK()
to set compute kernel workgroup size
when using MSL source code or MSL compiled code. - Allow zero count of viewports and scissors.
- Report image layer limits for attachments in
vkGetPhysicalDeviceImageFormatProperties()
. - Change log indication of error in logs from
[***MoltenVK ERROR***]
to
[mvk-error]
, for consistency with other log level indications. - Allow
mvkMTLRenderStagesFromVkPipelineStageFlags()
to map to all Vulkan stages,
by indicating whether the pipeline barrier should come before or after the stages. - Automatically update
VkPhysicalDeviceProperties::pipelineCacheUUID
when SPIRV-Cross revision changes. - Fix crash when clearing attachments using layered rendering on older macOS devices.
- Fixes to Metal renderpass layered rendering settings.
vkCmdClearAttachments()
returns encoder to previous pipeline, depth-stencil & resource state after execution.- Fix issue clearing stencil attachment via renderpass when depth attachment is not being cleared.
- Fix sporadic crash on
vkDestroySwapchainKHR()
. MoltenVKShaderConverter
tool: Add MSL version and platform command-line options.- Fix crash on pipeline cache merge after
VkShaderModule
destroyed. - Fix case where viewport/scissor doesn't get set properly when mixing dynamic and
static-configured pipelines in the same command buffer. - Fix a race condition between sync objects and queries.
- Fix unused attachments terminating loop early.
- Fix offset of buffer view relative to buffer offset within device memory.
- Guard against missing Metal pipeline states when pipeline compilation fails.
- MVKBuffer: Force managed storage for linear textures on shared buffers.
- Use device address space when decompressing DXT image data.
- Added missing
texelBufferTextureWidth
setting inMVKComputePipeline::getMTLFunction()
. - Fixes and consolidation of external library header references.
- Allow building external dependency libraries in
Debug
mode. - Enable AMD and NV GLSL extensions when building
glslang
forMoltenVKGLSLToSPIRVConverter
. - Make external library header references consistent and add
MVK_EXCLUDE_SPIRV_TOOLS
option. - MVKVector improvements.
- Update
VK_MVK_MOLTENVK_SPEC_VERSION
to 20. - Update to latest SPIRV-Cross version:
- MSL: Add support for subgroup operations.
- MSL: Support argument buffers and image swizzling.
- MSL: Add support for
OpArrayLength
. - MSL: Only use constant address space for tessellation control shader.
- MSL: Support native texture_buffer type, throw error on atomics.
- MSL: Add native texture buffer support.
- MSL: Deal with texture swizzle on arrays of images.
- MSL: Fix complex type alias declaration order.
- MSL: Fix declaration of unused input variables.
- MSL: Use correct address space when passing array-of-buffers.
- MSL: Deal correctly with nonuniformEXT qualifier.
- MSL: Cast texture_buffer index to uint.
- MSL: Fix nonuniform test.
- MSL: Fix regression with Private parameter declaration.
- MSL: Support remapping constexpr samplers by set/binding.
- MSL: Support Invariant qualifier on position.
- MSL: Support stencil export.
- Deal with case where a block is somehow emitted in a duplicated fashion.
- Fix infinite loop when OpAtomic* temporaries are used in other blocks.
- Fix tests for device->constant address space change in MSL tessellation control shader generation.
- Accept SPIR-V 1.4 version.
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.