http://bugs.winehq.org/show_bug.cgi?id=11203
--- Comment #38 from Ian Goddard igoddard@nildram.co.uk 2009-08-16 08:12:47 --- (In reply to comment #37)
At present it seems that the best solution is for those of us who aren't using Nvidia but are using apps that will try to use 32bpp to amend the appropriate line in xlldrv_main.c (currently line 315). Instead of "return 32;" this should be amended to "return depth;".
Doubtful.
Pretty much every graphics card that was built in the past 10 years uses 32 bit framebuffers, not 24 bit ones. 32 bit framebuffers aren't an Nvidia specific. The only GPU I could find that still supports a 24 bit framebuffer is an old ATI Mach64 - a GPU core from around 1994.
Not all graphics kit uses a separate graphics card. Some of us, particularly laptop users, use what's on the motherboard.
I'm using a laptop which is much less than 10 years old using Intel chipset. I suppose there must be many users in the same situation.
If I attempt to set the depth to 32 in xorg.conf X will not run properly.
If I attempt to let Wine set the depth to 32 the app will crash.
For me and anyone else in this situation, the mod I suggested will work.
However, hacking the C & rebuilding will not be acceptable to all users. If there's no clear way to achieve an all-round solution based on what the X server returns ISTM that a more acceptable solution would be to make provision for the user to specify the depth to be used.
I note when looking through the code that there's scope for optionally picking up the depth from the registry. As things stand at present, however, this value, if set, is overridden by the existing code.
My suggestion would be to sanity-check any value set in the registry and, if it's OK let it override the value set in the current code. This seems to me to meet everyone's requirements: H/W and S/W combinations which currently work would continue to do so but anyone for whom this does not work would be able to add the optional key to the registry to provide a depth setting which would work. Do you think this could be that all-round solution?