Skip to content

Commit 23de5ac

Browse files
authored
Merge pull request #741 from billhollings/Metal-3.0
Merge master 1.0.37 into Metal-3.0 branch.
2 parents 97a9e70 + b99a2ea commit 23de5ac

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+4113
-3073
lines changed

Docs/MoltenVK_Runtime_UserGuide.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ In addition to the core *Vulkan* API, **MoltenVK** also supports the following
231231
- `VK_KHR_bind_memory2`
232232
- `VK_KHR_dedicated_allocation`
233233
- `VK_KHR_descriptor_update_template`
234+
- `VK_KHR_device_group`
235+
- `VK_KHR_device_group_creation`
234236
- `VK_KHR_get_memory_requirements2`
235237
- `VK_KHR_get_physical_device_properties2`
236238
- `VK_KHR_get_surface_capabilities2`
@@ -252,6 +254,7 @@ In addition to the core *Vulkan* API, **MoltenVK** also supports the following
252254
- `VK_EXT_debug_marker`
253255
- `VK_EXT_debug_report`
254256
- `VK_EXT_debug_utils`
257+
- `VK_EXT_fragment_shader_interlock` *(requires Metal 2.0 and Raster Order Groups)*
255258
- `VK_EXT_host_query_reset`
256259
- `VK_EXT_memory_budget` *(requires Metal 2.0)*
257260
- `VK_EXT_metal_surface`
@@ -510,8 +513,6 @@ This section documents the known limitations in this version of **MoltenVK**.
510513
In order to use Vulkan layers such as the validation layers, use the Vulkan loader and layers from the
511514
[LunarG Vulkan SDK](https://vulkan.lunarg.com).
512515

513-
- `VkEvents` are not supported.
514-
515516
- Application-controlled memory allocations using `VkAllocationCallbacks` are ignored.
516517

517518
- Pipeline statistics query pool using `VK_QUERY_TYPE_PIPELINE_STATISTICS` is not supported.

Docs/Whats_New.md

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,69 @@ For best results, use a Markdown reader.*
1616
MoltenVK 1.0.37
1717
---------------
1818

19-
Released TBD
19+
Released 2019/09/10
2020

21+
- Add support for extensions:
22+
- `VK_KHR_device_group`
23+
- `VK_EXT_fragment_shader_interlock`
24+
- Add support for `VkEvent`, using either native `MTLEvent` or emulation when `MTLEvent` not available.
25+
- `vkInvalidateMappedMemoryRanges()` synchronizes managed device memory to CPU.
26+
- Track supported instance and device extensions correctly.
2127
- Revert to supporting host-coherent memory for linear images on macOS.
28+
- Report limit of 64KB for constant buffer bindings on macOS.
29+
- Disable depth and/or stencil testing if corresponding attachment is missing.
2230
- Ensure Vulkan loader magic number is set every time before returning any dispatchable Vulkan handle.
31+
- Fix crash when `VkDeviceCreateInfo` specifies queue families out of numerical order.
32+
- Fix crash in `vkDestroyPipelineLayout()`.
33+
- Fix crash when signalling swapchain semaphore using `MTLEvent`.
34+
- Fix crash when determining alignment of invalid pixel formats.
35+
- `vkCmdBlitImage():` Support format component swizzling.
36+
- `vkCmdClearImage():` Set error if attempt made to clear 1D image, and fix validation of depth attachment formats.
37+
- `vkCreateRenderPass():` Return `VK_ERROR_FORMAT_NOT_SUPPORTED` if format not supported.
38+
- `vkCmdFillBuffer():` Improve performance 150x by using parallelism more effectively.
39+
- Support optional use of `MTLFence` for Vulkan semaphores via the `MVK_ALLOW_METAL_FENCES` environment variable.
40+
- Remove error logging on `VK_TIMEOUT` of `VkSemaphore` and `VkFence`.
41+
- Remove log message warning of obsolescence of `vkCreateMacOSSurfaceMVK()` and `vkCreateIOSSurfaceMVK()` functions.
42+
- Report error only on the first time a format substitution is made.
43+
- Streamline design and use of `MVKSemaphore`.
44+
- Consolidate the various linkable objects into a `MVKLinkableMixin` template base class.
45+
- Use `MVKVector` whenever possible in MoltenVK, especially within render loop.
46+
- No longer prefer dedicated allocations for buffer memory, including buffer-backed images.
47+
- Handle the `compositeAlpha` member of `VkSwapchainCreateInfoKHR`.
48+
- `VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events` set to `true`.
49+
- Always submit surface presentations using `MTLCommandBuffer`.
50+
`MVKConfiguration::presentWithCommandBuffer` is now obsolete.
51+
- Don't use `MTLCommandBuffer push/popDebugGroup` if not available.
52+
- `MVKSwapchain::signalWhenAvailable()` add autoreleasepool around `MTLCommandBuffer` use.
53+
- Add ability to automatically cause an *Xcode* GPU capture without developer intervention.
54+
- Update `VK_MVK_MOLTENVK_SPEC_VERSION` to version 22.
55+
- Update dependency libraries to match Vulkan SDK 1.1.121.
56+
- Update to renaming of `VK_INTEL_shader_integer_functions2` enums and structs in latest Vulkan headers.
57+
- Update to latest SPIRV-Cross version:
58+
- Support the `SPV_EXT_fragment_shader_interlock` extension.
59+
- MSL: Deal with array copies from and to threadgroup.
60+
- MSL: Deal with `Modf/Frexp` where output is access chain to scalar.
61+
- MSL: Inline all emitted functions.
62+
- MSL: Inline all non-entry-point functions.
63+
- MSL: Add `{Base,}{Vertex,Instance}{,Index}` to `bitcast_from_builtin_load`.
64+
- MSL: Add support for sampler Y'CbCr conversion.
65+
- MSL: Force storage images on iOS to use discrete descriptors.
66+
- MSL: Support dynamic offsets for buffers in argument buffers.
67+
- MSL: Cleanup temporary use with `emit_uninitialized_temporary`.
68+
- MSL: Unify the `get_*_address_space()` methods.
69+
- Assume image and sampler can be `RelaxedPrecision`.
70+
- Fix post-depth coverage for ESSL.
71+
- Fix variable scope when switch block exits multiple times.
72+
- Fix severe performance issue with invariant expression invalidation.
73+
- Fix `ParsedIR::mark_used_as_array_length(uint32_t id)`
74+
- Deal correctly with sign on bitfield operations.
75+
- Elide branches to continue block when continue block is also a merge.
76+
- Move branchless analysis to CFG.
77+
- Deal with `ldexp` taking `uint` input.
78+
- Do not allow base expressions for non-native row-major matrices.
79+
- Do not force temporary unless continue-only for loop dominates.
80+
- Fix `ParsedIR::mark_used_as_array_length(uint32_t id)`.
81+
- Refactor into stronger types in public API.
2382

2483

2584

0 commit comments

Comments
 (0)