But that's not what the extension does. It doesn't upload anything. It's purpose is to allow client memory to be used more or less like a buffer object. It's real purpose is to get around the fact that glTexImage* functions have to be finished with client memory when they return.I think the GL_AMD_pinned_memory extension is a nice approach for uploading use-once data.
I wouldn't be adverse to a glBufferClient function, which like glBufferStorage would create an immutable buffer object with certain properties. But to be honest, I'd much rather have a special set of glTexSubImage* calls or something else than to overload buffer object functionality for this purpose.