-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add proposal for Vulkan cooperative matrix #271
Conversation
This propsal will expose the [VK_KHR_cooperative_matrix](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_cooperative_matrix.html) extension in HLSL.
We add the ability to do loads and stores from groupshared memory. This involved adding a WorkgroupSpirvPointer type that is used by the Load and Store functions. We also create a GetGroupSharedAddress function to get the address. The other load and store function are refactored to make the layout a parameter, to move the memory access mask to a template parameter, and to always have a stride. All memory layouts require an explicit stride, so even though the stride is optional on the instructions, there is not case where it can be ommitted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to approve this just to be clear that this is fully approved and the direction is awesome.
I know there are some details still being worked out, but the direction of this proposal is fantastic and I'm eager for its inclusion.
Thank you everyone for all the amazing work on this!
@jeffbolznv @Keenuts I think I have this done. Let me know if there are any other issues. I'll be on vacation for a week. I'll do any fixups when I return. I hope to merge at that time. I have the implementation done, and ready to be reviewed as soon as this merges. |
1. Fixed some typos in the function comments. 2. Change the memoryAccessMask to a uint32_t and renamed to avoid undefined behaviour. 3. Removed the reason for defaulting to coherent memory because we no longer do that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Co-authored-by: Nathan Gauër <github@keenuts.net>
This propsal will expose the [VK_KHR_cooperative_matrix](https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_KHR_cooperative_matrix.html) extension in HLSL.
This propsal will expose the
VK_KHR_cooperative_matrix
extension in HLSL.