The Dolphin emulator for GameCube/Wii has the ability to use the ARB_buffer_storage (or EXT_buffer_storage for GLES) to improve rendering performance.
From the extension's description, a GPU driver implementation provides a means to allocate storage that can be marked as immutable, i.e. cannot be deallocated or resized while in use. What is required of the driver implementation for this to actually be useful? At one extreme, a naive implementation could allocate immutable memory buffers exactly the same way it allocates typical global memory buffers, functionally correct but not beneficial for performance.
At least one user has suggested buffer_storage only matters in the case of discrete GPUs which carry their own dedicated RAM storage.
On the other hand, the Dolphin team continually requested buffer_storage for Mali's driver over the years, which suggests there is a performance improvement even in SoCs with integrated graphics and no dedicated GPU DRAM. If so, is the benefit at all comparable and how does the driver achieve it?
Does Vulkan have an equivalent or somehow avoid the need for such an extension?
The intent here is to understand the value in implementing EXT_buffer_storage in the driver for Broadcom's VideoCore VI.
[2] "Will there be EXT_buffer_storage at all?"
[3] "EXT_buffer_storage is now supported by ARM"
[4] " Possible to add GLES EXT_buffer_storage driver support to Videocore VI on the Pi4?"