KhronosGroup / KhronosGroup/Vulkan-Portability
Add VkPhysicalDevicePortabilitySubsetFeaturesKHR:: workgroupMatrices capability
- Dominant language
- No language data
- Stars
- 45
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Description
Based on CTS testing, and [this SPIRV-Cross discussion](https://github.com/KhronosGroup/SPIRV-Cross/issues/1770), it appears that Metal currently has a Catch-22 oversight, where initialization of locally declared `threadgroup` variables is required (like C++ statics), but Metal matrix variables do not have the necessary constructors in the `threadgroup` address space.
As discussed in the SPIRV-Cross thread, although it might be possible to create a heroic workaround in SPIRV-Cross, it is not clear that it would have real-world requirements for going that far.
An alternative is to add a `VkPhysicalDevicePortabilitySubsetFeaturesKHR:: workgroupMatrices` capability, where an implementation can indicate that SPIR-V can or cannot include matrices in a Workgroup variable.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reviewing the CTS testing context in this issue and the linked SPIRV-Cross discussion (#1770), then inspect how Vulkan portability-subset capabilities are specified. Done means the portability subset exposes a workgroupMatrices capability that lets an implementation indicate whether SPIR-V workgroup variables may contain matrices, with the relevant behavior covered by CTS testing.
Written by the indexing model from the issue text.
Assessment
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100