Skip to content

Vulkan memory model spec details 🤓👆 #8805

@inner-daemons

Description

@inner-daemons

Checkout this cool thing: https://github.khronos.org/SPIRV-Registry/extensions/KHR/SPV_KHR_vulkan_memory_model.html

Relevant:
#4444
#1545

In #8251 we added cooperative matrix support which requires the vulkan memory model, so we enabled it. The vulkan memory model isn't supposed to change driver behavior but rather specify it more precisely. Unfortunately, we are not in compliance with it.

Every memory access now must specify "memory semantics," for example for workgroup memory/storage buffers would need NonPrivatePointerKHR to indicate that the memory access might depend on/affect other invocations. Also it will need to say if the reads/writes should be made visible.

We've known for a while in #4444 that storage buffers are not safely usable across invocations quite like workgroup memory. I believe this now also applies to workgroup memory however in shaders that make use of cooperative matrices. For that reason I think #8251 can be considered a regression.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions