Released last week was the Vulkan 1.4.315 spec update and with it comes the new VK_EXT_zero_initialize_device_memory extension for allowing device memory allocations to be zero-initialized.
Worked on by engineers from Valve, AMD, Collabora, Igalia, Arm, and LunarG is the VK_EXT_zero_initialize_device_memory extension. As Vulkan by default makes no guarantees that device memory (GPU vRAM) is cleared to zero, VK_EXT_zero_initialize_device_memory aims to more efficiently ensure that the device memory is zero-initialized.
Up to now those wanting to mandate Vulkan memory allocations in device memory are zero-initialized have to issye a command to fill the buffer or similar. But with some Vulkan drivers/hardware the memory may be zero cleared already due to security concerns around not exposing prior memory contents. VK_EXT_zero_initialize_device_memory aims to more efficiently ensure device memory is zero-initialized when desired.
With Valve’s Hans-Kristian Arntzen and Mike Blumenkrantz working on it, this ties into their VKD3D-Proton / Steam Play efforts too. The VK_EXT_zero_initialize_device_memory extension specification ellaborates:
“This extension also has uses in API layering and porting efforts, where zero memory behavior may be more strict than Vulkan. Different OS platforms also have wildly different behaviors here, which leads to implementations needing to apply workarounds to paper over these issues in the wild.
If an extension exists to make allocation behavior explicit, we hopefully achieve a more robust ecosystem for Vulkan.”
With Vulkan 1.4.315 public, Mesa Vulkan drivers have already begun implementing support for VK_EXT_zero_initialize_device_memory. Merged for Mesa 25.2 is support already within the Radeon RADV and NVIDIA NVK drivers with support for this extension. Those are the first two drivers in Mesa with support for this extension while hopefully other Mesa Vulkan drivers will follow soon.
Opened yesterday was this pull request for VKD3D-Proton to VK_EXT_zero_initialize_device_memory.