http://bugs.winehq.org/show_bug.cgi?id=21515
--- Comment #49 from Stefan Dösinger stefandoesinger@gmx.at 2010-02-10 08:41:09 --- (In reply to comment #41)
Well, that's all very nice but detection of new mesa cards is this bug report is all about after all, as I'm sure cruiseoveride will be happy to remind us :-) So while I'm sure you would like all this code cleaned up, we would like the detection of the new mesa cards.
The general rule is that the infrastructure has to be fixed before trying to add in features that the existing infrastructure cannot support cleanly.
That said, the newest version of your patch looks pretty good, it already introduces the separation of HW and GL vendor. Currently it is too big though, and if it causes a regression it will be hard to spot where exactly it happened. So it needs to be broken up into a few separate patches. For example:
Patch 1: Rename GL_VENDOR to HW_VENDOR Patch 2: Add a real gl vendor detection Patch 3.1: Probably split up the quirk detection function if 3.2 can't be done properly otherwise. Patch 3.2: Adjust the quirks. See below for a few comments on this Patch 4: Add the card detection table and move the code Patch 5: Add Mesa ATI card detection code
And as I pointed out, my configuration doesn't report GLX info properly so I have a serious problem with testing my results.
Probably your 32 bit compat libraries are broken. You'll probably have to compile Mesa and libdrm for 32 bit manually and install it in your /usr/lib32 directory. A 32 bit glxinfo binary can help debugging
Wrt the quirks:
{ match_ati_r300_to_500, quirk_ati_dx9, "ATI GLSL constant and normalized texrect quirk" },
Driver dependent. There is a HW aspect to it, but it depends on the driver partially emulating NP2 textures.
{ match_apple, quirk_apple_glsl_constants, "Apple GLSL uniform override" },
Driver dependent, HW independent. Apple's GLSL infrastructure is teh suck.
{ match_geforce5, quirk_no_np2, "Geforce 5 NP2 disable" },
Driver dependent, since the nvidia driver advertises NP2 textures incorrectly. If noveau ever does the same we'll have to add a quirk for it as well, but not yet.
{ match_apple_intel, quirk_texcoord_w, "Init texcoord .w for Apple Intel GPU driver" },
That quirk should actually be inverted, to make the quirk code the default and the non-quirky code a quirk. For now leave it as is though. Depends on hw_vendor + card + driver
{ match_apple_nonr500ati, quirk_texcoord_w, "Init texcoord .w for Apple ATI >= r600 GPU driver" },
Same as above.
{ match_fglrx, quirk_one_point_sprite, "Fglrx point sprite crash workaround" },
Driver dependent. Maybe doesn't depend on the card, needs testing. But I think Roderick said its working on dx10 ATI cards.
{ match_dx10_capable, quirk_clip_varying, "Reserved varying for gl_ClipPos" },
Driver independent
{ match_allows_spec_alpha, quirk_allows_specular_alpha, "Allow specular alpha quirk" },
A very specific test for the behavior, doesn't depend at all on the GL identification
{ match_apple_nvts, quirk_apple_nvts, "Apple NV_texture_shader disable" },
Depends on gl_vendor=APPLE and support for NVTS
{ match_broken_nv_clip, quirk_disable_nvvp_clip, "Apple NV_vertex_program clip bug quirk" },
Has a very specific test, shouldn't depend on the card detection