https://bugs.winehq.org/show_bug.cgi?id=44560
Paul Gofman pgofman@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |pgofman@codeweavers.com
--- Comment #14 from Paul Gofman pgofman@codeweavers.com --- The black units are due to a few GLSL shaders are failing to compile because the game uses implicit float to integer conversion for it and not specifying '#version 120' or anything else appropriate. It works with some drivers but not with Mesa. It doesn't seem to be a way to fix it in Wine in a non-hacky way.
There is Mesa compat option for the issue concerned by this bug (allow_glsl_120_subset_in_110) which is already enabled for some games and can be enabled for Cossacks 3 by adding the following into /usr/share/drirc.d/00-mesa-defaults.conf into driconf/device section: <application name="Cossacks 3" executable="cossacks.exe"> <option name="allow_glsl_120_subset_in_110" value="true" /> </application>
Instead of editing system wide dri.conf file it can be copied to $HOME/.drirc (that is a file, not directory) and edited there, that file takes precedence.
I suppose this can in principle be suggested as an option in Mesa's default dri.conf file to Mesa.
I made a hack in Proton fixing it on the way of another issue with Cossacks 3: https://github.com/ValveSoftware/wine/commit/4985f64197c10cbc74d2bb305190c16...
That hack is fixing disappearing units issue on AMD (I could not find a Winehq bug for that) in the first place for which I didn't find a better way around rather than fixing up the shaders, so added '#version 120' there too on the way.