The Vulkan/SPIR-V memory model was built on the foundation of the C++ memory model, but ended up diverging in a number of places.
A lot of how GPU programming models work across modern graphics APIs has evolved through years of development, reflecting the markets that those APIs have targeted. Naturally, the Vulkan/SPIR-V memory model has made several decisions that reflect this. We added several new facets to the model, including scopes, storage classes, and memory availability and visibility operations to name some of the more prominent ones.
However, It is not a strict superset either, and there are a few places where some features have been omitted for similar reasons. For example, sequential consistency is not supported, and forward progress guarantees are limited.
This post aims to give a high-level overview of the differences, explaining what the differences are, why they are different, and how (if at all) C++ concepts can map to the Vulkan/SPIR-V memory model. It is aimed primarily at people already familiar with the C++ memory model who either want to get some insight into what the differences are or those who are curious about why we took the direction we did.
In early August the team was at SIGGRAPH in Los Angeles, where we celebrated OpenGL’s 25th anniversary at the BOF Blitz Party. We also announced a new website, as well as OpenGL 4.6, a growing glTF ecosystem, and the Vulkan Portability Initiative.
To expand the number of platforms that Vulkan can support, Khronos has formed a Vulkan Portability Technical Subgroup within its Vulkan Working Group. This subgroup is tasked with developing specifications, open-source library code and tools, together with conformance tests to define and support the set of Vulkan capabilities that can be made universally available across all major platforms, including those not currently served by Vulkan.
New for us this year, we participated in VRDC, which was an engaging event that put us in front of a lot of partners and potential new members and gave our members a chance to network as well. We also had over 1,000 attendees at our 3D Graphics Developer Day with people returning to attend sessions such as “Vulkan Game Development on Mobile,” “VR Innovation – Standards for API development,” and “When Vulkan was One: Looking Back, Looking Ahead.” Lastly, our booth at GDC was wildly busy, with talks around the clock. In case you missed any of our GDC talks, videos, presentations, and photos are available on our website.