Vulkan features available with Metal 3? #1616
Replies: 10 comments 51 replies
-
What's new in Metal 3 MetalFX Upscaling Fast resource loading Offline shader compilation Mesh shaders Metal backend for PyTorch New Ray Tracing features |
Beta Was this translation helpful? Give feedback.
-
https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_shader_atomic_float2.html should also be implementable - just not for float16 or float64 (afaik) |
Beta Was this translation helpful? Give feedback.
-
I would also like to put this table here; it shows which devices actually support Metal 3. In code, however, its fairly easy to check if its supported nowadays: if ([device supportsFamily:MTLGPUFamilyMetal3]) {} |
Beta Was this translation helpful? Give feedback.
-
I think it would be wise to focus the development efforts on the rest of features but the raytracing capabilities, since theres no dedicated RTX hardware inside the M1/M2 or A processors GPUs at this point. Mesh Shaders, Upscaling, Resources Loading sounds like better choices to improve games and 3D apps with the available hardware. |
Beta Was this translation helpful? Give feedback.
-
Metal 3 introduces a revamp of the binding model. Another note on supported limits. It has been pointed out that Metal Tier 2 limits of 500,000 buffers and textures is lower than some of the advanced versions of Vulkan and DirectX 12, at least on certain hardware. Upon clarification with Apple engineers, it seems that this is a poor wording in the docs. This limit is the number of resources you can realistically use in a single shader while still expecting reasonable performance. This is not the limit of binding points/descriptors you can have. Since Metal has no concept of special descriptor pools — resource descriptors reside in regular GPU buffer memory, it seems that the upper limit on the number of descriptors is simply the amount of available buffer memory. I had no issues creating a test application that declares, binds and actually uses up to five million resource descriptors. |
Beta Was this translation helpful? Give feedback.
-
Thanks for the research, and design input. The new binding model is good news. It should clean up how MoltenVK can map descriptor indexing to argument buffers, and hopefully allow us to finally support descriptor indexing on iOS. |
Beta Was this translation helpful? Give feedback.
-
Does Metal 3 do away with the tier 2 argument buffer limitation? |
Beta Was this translation helpful? Give feedback.
-
I could really use the |
Beta Was this translation helpful? Give feedback.
-
How is mesh shading support going along for moltenVK? |
Beta Was this translation helpful? Give feedback.
-
There have been a few posts asking about Metal 3 support.
Since MoltenVK is a Vulkan implementation, we need to prioritize and develop Vulkan features. So I'd like to recast the question as which Vulkan features can we identify as being made possible or better with the capabilities of Metal 3.
With that in mind, I'm posting this here to crowd-source ideas and comments based on Apple's info on Metal 3.
Feel free to either edit the table here, or add separate comments below for discussion about capabilities and priorities. Some features are fairly straight-forward. Others will require significant development.
VK_EXT_shader_atomic_float
VK_EXT_shader_atomic_float2
atomic<float>
(but no support forhalf
ordouble
)VK_EXT_mesh_shader
VK_NV_mesh_shader
VK_KHR_acceleration_structure
VK_KHR_ray_tracing_maintenance1
VK_KHR_ray_tracing_pipeline
VK_KHR_buffer_device_address
MTLBuffer.gpuAddress
Beta Was this translation helpful? Give feedback.
All reactions