https://bugs.winehq.org/show_bug.cgi?id=37073
Paul Gofman gofmanp@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gofmanp@gmail.com
--- Comment #9 from Paul Gofman gofmanp@gmail.com --- Created attachment 66218 --> https://bugs.winehq.org/attachment.cgi?id=66218 Support Nvidia & AMD specific alpha to coverage settings
I've tested the game.
It is d3d9 game which wants to use "alpha to coverage" feature when antialiasing is enabled. Nvidia and AMD cards provide these features under d3dx9 each in its own hacky way.
1. Nvidia The support of alpha to coverage can be queried on Nvidia by checking 'ATOC' fourcc pseudo-format support. Alpha to coverage render state is set through D3DRS_ADAPTIVETESS_Y render state with 'ATOC' bytes turning state on and D3DFMT_UNKNWON turning state off.
2. AMD There is no documented way to detect the support for this feature I could find, but it said to be available since long ago on all ATI & AMD cards. Alpha to coverage render state is controlled through D3DRS_POINTSIZE set to either 'A2M1' (enable) or 'A2M0' (disable).
If the game detects video card as Nvidia it queries for 'ATOC' format and if it is found works Nvidia way. Otherwise (if the reported card is not Nvidia or ATOC format is not available) it works AMD way.
I am attaching the patchset (3 patches) which implements both AMD & Nvidia states which fixes the issue for me (I tested on Nvidia card also spoofing AMD through HCKU\Software\Wine\Direct3D\VideoPciVendorID and VideoPciDeviceID registry keys).
Actually just implementing AMD render state is enough for this game as it fallbacks to AMD mode if it doesn't find ATOC format on Nvidia.