Last night, I finished my other tasks early and decided to see if there were any obvious issues I could find in this game. After trying the obvious track of shader compile problems, I realized I had wasted my time, since the game apparently does support opengl, but decides to use d3d instead. I should have instead tried to figure out why my machine was rejected. Based on the log, all it did was read the vendor and renderer strings, so I assumed it was using a blacklist or whitelist. Looking for matching strings in the executable pointed me to the whitelist. Forcing my renderer and vendor into the whitelist does, indeed, cause the game to choose opengl.
With opengl, the main map now appears, and grenades no longer crash. I did not notice any other issues. The radar still does not appear to have a map, but I only tested the game for 5 minutes as I had already wasted too much time chasing failed d3d shader compiles. Maybe I'll test a little more if I have time later this week.
So, what criteria do you use to select opengl? Is it just a whitelist, as it appears? Or is there at least a configuration option or command-line flag to force it to use opengl? Do you also use the renderer/vendor strings to determine render paths, as many games infuriatingly do?
I think the correct solution, for now, is not to use the proprietary drivers, but to use a shim that advertises mesa as the appropriate whitelist entry, or for the whitelist to disappear/be overridden entirely. No wine user prefers emulated (and apparently buggy) d3d over opengl, no matter how "inferior" the opengl driver may be (after all, it eventually gets translated to opengl, anyway, except when using wine-nine).
edit: for reference, I have posted a quick & dirty shim adapted from my earlier efforts to fix Stars in Shadow on
my bitbucket account. Read the top of the source file for build and use instructions. You will also have to set the GL_FAKE_RENDERER and/or GL_FAKE_VENDOR environment variables. I don't know what the game prefers, but "HD Graphics" and "AMD", respectively, work for me.