http://bugs.winehq.org/show_bug.cgi?id=14038
--- Comment #28 from Stefan Dösinger stefandoesinger@gmx.at 2008-07-19 11:51:17 --- I don't think looking at old wine versions will help here. The patches pointed out switch the conditional NP2 support between different codepaths; Knowing which switch caused which behavior doesn't really give me further information.
What would be useful to know is this: * Does your card support GL_ARB_texture_non_power_of_two? * Which opengl version does your driver advertise?
Both informations can be queried with glxinfo. I suspect the answer to question 1 is NO, and the opengl version is 2.0. What the recent patch changed was that WineD3D now knows that OpenGL 2.0 implies GL_ARB_texture_non_power_of_two support in the driver. However, the Geforce 5 series do not support this. They only support GL_ARB_texture_rectangle, which is conditional support for NP2 textures. Thus if we assume unconditional support, we get software fallbacks.
WineD3D has code to detect situations in which GL_ARB_texture_non_power_of_two is emulated, but so far only for ATI cards. This code is in directx.c, in the function fixup_extensions(), around line 3715 in today's git.
The two important lines are: gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] = FALSE; gl_info->supported[WINE_NORMALIZED_TEXRECT] = TRUE;
For testing purposes, you can modify the code to run them unconditionally(ie, remove the if conditions around them), and see if that improves your performance. If it does, then you can modify the if conditions to blacklist ARB_TEXTURE_NON_POWER_OF_TWO and enable WINE_NORMALIZED_TEXRECT on GeForce FX cards.