When one wants to render from a DMA buffer (using its physical address) in OpenGL ES 2.x/3.x - that is, the GPU shall get the pixels from that DMA buffer instead of from a regular OpenGL texture object - the Vivante VIV direct texture extension can be used. I've done that in the past. Works well.
However, now I want to do the opposite: I render something in OpenGL, to a framebuffer object (FBO). A texture is attached to that FBO. The result is that I now render to that texture. If I want to get that rendered texture's pixels, I can use glReadPixels(), but that is slow, since it copies the pixels with the CPU. Ideally, there would be something like VIV direct textures, but for cases where I want to render into a DMA buffer.
Does such a functionality exist? Is this possible with Vivante GPUs and the current Linux Vivante drivers?