loader: Cleaner support for native-context drivers with fallback to virgl/zink/etc
With virtgpu-native-context (vdrm) drivers we have the situation that the kernel driver name is always "virtio_gpu" despite wanting to load completely different drivers depending on the capset advertised by the host, rather than the driver name. To add to this mess, the driconf options depend on which driver we will eventually be loading.
The current hack hacks native ctx creation into pipe_virtio_gpu_create_screen()
. And also requires hacking all of freedreno's driconf into virgl's driconf. This will be less scalable as we add amd, intel, etc nctx support.
This MR takes the approach of handling the nctx case in pipe-loader, substituting the appropriate driver for screen creation and driconf. But it requires a new optional probe() hook, so we can handle fallback to virgl. (For example, old VM guest which does not have support for new GPU, running on a new host which does, could still provide acceleration via virgl.
/cc @pepp, @digetx, @slp .. this still needs some cleanup, and patch split, but this is the rough idea