My GPU has 4 times as many transistors as my CPU, and for parallel tasks, it computes stuff 50 times faster. Just too much complexity for a file, even with ioctl.
I think that ideology is the main reason for the current state of 3D graphics in nix and bsd based platforms.
However, in my comment I didn’t meant text files. I meant that in *nix, a GPU itself is a single file, /dev/dri/cardN. All that GPU’s complexity is squeezed into a single ioctl system call for that special file. The approach is IMO one of the reason why Linux still doesn’t have reliable 3D acceleration support.
Here’s a long article why Linux ain’t ready for desktops, note the author listed 3D acceleration on the top: