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.
Khronos has released a provisional Vulkan Memory Model Specification that includes extensions for Vulkan, SPIR-V, and GLSL and gives Vulkan developers additional control over how their shaders synchronize access to should cooperate safely over memory operations in a parallel execution environment. In tandem with the extension specification, Khronos has released memory model extension conformance tests to enable implementers to do early tests on their shader compilers to ensure that the specified memory synchronization is implemented correctly. The memory model will have an Alloy description of the extension functionality to enable formal modeling and experimentation.
Virtual reality and augmented reality have great potential for entertainment, training and education, and other industries, but are currently being held back by industry fragmentation. The Khronos Group is addressing this by creating the OpenXR API, and shares details of its creation and considerations, as well as the first demo of the API at SIGGRAPH 2018.
Subgroups are an important new feature in Vulkan 1.1 because they enable highly-efficient sharing and manipulation of data between multiple tasks running in parallel on a GPU. In this tutorial, we will cover how to use the new subgroup functionality.
Bringing 25 graphics standards to various industries is a collaborative effort, run worldwide across Khronos’ over 100 member companies. We come together three times each year for face-to-face meetings, which present the rare opportunity for all of our active members, Working Groups, and personnel to discuss the goals for the upcoming year to drive our standards forward. These events also present the opportunity to give Khronie Awards to those whose contributions made significant impact to Khronos, our standards, and our mission.
Recently I asked the community for beginner-friendly resources on Vulkan, and I compiled a list of them that you can find below. For the beginners reading this, Vulkan is a new graphics API-- in other words, a way to communicate with your GPU and make it do things. It's managed by the Khronos Group, which means it's under multi-company governance - being managed by the industry for the industry. Anyone who wants to do work on GPUs (not restricted to graphics programmers!) should at least have a high level knowledge of what it is.
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.
If you are going to be at the 44th SIGGRAPH, the largest conference and exhibition in computer graphics and exhibition techniques, from July 30 – August 3, 2017 at the Los Angeles Convention Center, don’t miss the opportunity to eat, drink, and learn about all things Khronos!
In March, we hosted a webinar that gave viewers a deep-dive presentation on the Vulkan Loader, presented by Mark Young and Lenny Komow from LunarG. They discussed different aspects of the loader, including its overall design, and features including dispatchable objects, instance versus device objects and commands, trampolines and terminators, extension handling, and much more. To get all the details, view the webinar here, or check out our five k
The LunarG Vulkan software development kit (SDK) provides the development and runtime components required to build, run, and debug Vulkan applications. Developers can download the LunarG Vulkan SDK from the LunarXchange website. This blog post will discuss security as it relates to the Vulkan Runtime and Loader on Windows OS.
At GDC 2017, in San Francisco during February, Khronos™ released several new Vulkan® extensions for cross-platform Virtual Reality rendering and multiple GPU access. This functionality has been initially released as KHX extensions to enable feedback from the developer community before being incorporated into final specifications. One key question that we have been asked since GDC is whether the Vulkan multi-GPU functionality is specifically tied to ship only on Windows 10.
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.
It’s been just over a year since the glTF™ 1.0 specification shipped, and this open standard format for real-time delivery of 3D assets has already been widely adopted by the industry. Now Khronos is finalizing glTF 2.0. Here we discuss the path that has lead us to glTF 2.0, what the new specification contains, and how your company can get involved to provide your feedback and take full advantage of this major glTF upgrade.