You are going to be sending commands to create the vertex buffers and upload textures (with the relevant data) and then most of your commands will be referencing those. Which is basically exactly what discrete GPUs already do anyway.
IIRC, unlike OpenGL, WebGL doesn't even allow you to do things in another way.
What X Windows did isn't very relevant because the use is very different. It'd only be somewhat comparable if the WebGL programs would treat WebGL as a way to stream new frame data for every frame (e.g. video). Also all X Windows communication with clients is done via commands sent through unix sockets which have similar performance to pipes.