KhronosGroup / KhronosGroup/Vulkan-Portability

Add VkPhysicalDevicePortabilitySubsetFeaturesKHR:: workgroupMatrices capability

Open
#33 14 comments 0 reactions 0 assignees View on GitHub
CTS
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.