The vendor kernels are worthless, tainted, piles of crap. Vendors rarely, if ever, maintain them once they are posted publicly. The GPU still requires proprietary blobs to be even remotely useful.
Of course. But they contain non-zero amounts of information on the chip so you can do a proper implementation or, much less ambitious, update it for newer kernel versions.
All the reverse-engineered GPU drivers we have now (freedreno, etnaviv, nouveau, lima) started out with intercepting kernel ioctls, being able to observe the blobs at work. Many of them at one point ran with the vendor kernel interface but open-source userspace.
In many ways the kernel part of a GPU is arguably the least important part and it's the userland where the shader compiler sits and produces the magic, but if you start from nothing it's very useful to have a working kernel interface that initializes the hardware and accepts command streams to run.