http://bugs.winehq.org/show_bug.cgi?id=21515
--- Comment #40 from Stefan Dösinger stefandoesinger@gmx.at 2010-02-07 15:50:10 ---
One more addendum regarding my last patch, I also wasn't quite sure what to do with some of the match functions like match_geforce5(). There I changed the vendor comparison to a comparison of the gl_vendor, however I'm not sure if that's correct
It depends on where the function is used. The geforce5 one is used mainly for the non power of two quirk, which is a hardware limit, so it would apply regardless of the GL driver vendor. Other functions like match_ati_r300_500_apple are used to work around driver specific issues, so you want to match driver + hw_vendor + card_id
I recommend to introduce the separation of HW and driver vendor in small patches without first adding any new features like detection of new mesa cards. Once the GL driver vendor is in place, and the HW vendor is untouched you can discuss and move over the matching functions one by one. For each of those we'll have to look at what the quirk does to decide what to do.
A possible solution is to split up the single matching function into 4, e.g. match_gl_vendor, match_hw_vendor, match_card, match_extra and only apply the quirk if all 4 return TRUE. This would avoid complex single-quirk match functions. If one field doesn't matter to a specific quirk(e.g. the NP2 GF5 quirk) the quirk could use a function that always returns TRUE, or we add special handling for a NULL function.