Only, that it doesn&#x27;t give you any extra memory at all. In case you&#x27;re using a dedicated GPU, the peripheral bus inbetween (PCIe) is a serious bottleneck. In addition to that the OpenGL object model does not have the concept of automatic &quot;object eviction&quot;; on embedded architectures (Android) you may loose the OpenGL context and have to recreate it. But you&#x27;ll never loose a single OpenGL object.<p>The bottom line is, that the OpenGL driver <i>will</i> create a backing store in system memory for each and every buffer object. So if you allocate 4GiB of OpenGL buffer objects, it <i>will</i> allocate 4GiB of system memory; if it&#x27;s a shared memory GPU that&#x27;s it, if it&#x27;s a dedicated GPU the GPU RAM is actually more of a cache to the backingstore.<p>glMapBuffer will usually just give you access to this backingstore so that writes can be coalesced into a single transfer when unmapping. Also you don&#x27;t want a full round trip read-modify-write. In case of coherent mappings the coalesced transfer is triggered by a GPU side data read operation on that buffer.<p>TL;DR: RAM on graphics cards is a cache on top of system memory (as far as OpenGL is concerned).