Allocating buffers

When using OpenGL ES/EGL, there is only a small set of APIs that actually lead to long-term video memory buffer allocation:

glBufferData(enum target, sizeiptr size, const void *data, 
enum usage)
glTexImage2D(enum target, int level, int internalFormat, sizei width, 
sizei height, int border, enum format, enum type, const void *pixels)

glCopyTexImage2D(enum target, int level, enum internalformat, int x, 
int y, sizei width, sizei height, int border)
Note:

The glCopyTexImage2D function allocates only when it copies to a null.

eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, 
NativeWindowType win, const EGLint *attrib_list)

eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const 
EGLint *attrib_list)

eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, 
NativePixmapType pixmap, const EGLint *attrib_list)