I'd be curious if having to upload textures is just a feature that's a hold-over from a history discrete desktop GPUs.
Videogame consoles have been doing "zero-copy" textures since they existed(except if you're on the PS3, but we won't go there). You also have things like EGL_image_external[1][2] that get you the same thing in OpenGL ES.
[1] https://www.khronos.org/registry/OpenGL/extensions/OES/OES_E...
[2] https://community.arm.com/graphics/b/blog/posts/eglimage---u...