http://bugs.winehq.org/show_bug.cgi?id=21515
--- Comment #39 from Stefan Dösinger stefandoesinger@gmx.at 2010-02-07 15:42:33 --- Your patch seems to be on the right track, and yeah, GL_VENDOR_APPLE is a good idea since Apple drivers have their unique set of bugs. We'll probably want GL_VENDOR_APPLE(all OSX drivers), GL_VENDOR_NVIDIA, GL_VENDOR_ATI, GL_VENDOR_MESA(all mesa). Probably in the future GL_VENDOR_INTEL for the windows intel driver, but that's not something that should be in this patch.
I am afraid we'll need a card detection routine for each GL driver vendor and hardware vendor. At least the fglrx card detection can't be shared with Mesa's since mesa just tells you the chip name like RV580 while fglrx tells you the marketed name(like Radeon X1600). Some may be reusable though since OSX and the linux binary drivers seem to have some common GL strings.
You could set up a control table:
{ {GL_VENDOR_NVIDIA, HARDWARE_VENDOR_NVIDIA, match_nvidia_card_binary}, {GL_VENDOR_APPLE, HARDWARE_VENDOR_NVIDIA, match_nvidia_card_binary}, {GL_VENDOR_MESA, HARDWARE_VENDOR_NVIDIA, match_nvidia_card_mesa}, {GL_VENDOR_MESA, HARDWARE_VENDOR_ATI, match_ati_card_mesa}, etc }
and then search for a matching gl and hardware vendor combination and call the function. If none is found write a FIXME and guess a generic dx7 / dx8 / dx9 card depending on the hardware vendor and GL capabilities.