[5/8] WineD3D: Add a more formal framework for driver quirks

Henri Verbeet hverbeet at gmail.com
Fri Apr 10 03:46:45 CDT 2009

There are a couple of things I don't like about this patch.
- I don't like how much information specific to constant fixups the
table contains.
- The "apple" field is weird. If you're going to have a callback
function you might as well match that information there, if
appropriate. On the other hand, I don't think you really need the
callback function, you only match on vendor and card anyway.
- What is the point of only allowing one fixup per card, and then
adding QUIRK_NO_SANITY_CHECK to allow more fixups? You might as well
just allow multiple fixups and apply them in the order they're
- Why do you store the quirk table in gl_info? It's never used from
there. (I realise the next couple of patches do use it from there).

How about something like this:

struct wined3d_driver_quirk
    enum wined3d_driver_platform platform;
    GL_Vendors vendor;
    GL_Cards card;
    void (*fixup)(WineD3D_GL_Info *gl_info)

and just add a DWORD "quirk_flags" to gl_info.

More information about the wine-devel mailing list