http://bugs.winehq.org/show_bug.cgi?id=35718
--- Comment #24 from Ken Thomases ken@codeweavers.com --- (In reply to Gediminas Jakutis from comment #22)
Link to a log with +seh,+tid,+win,+wgl,+d3d on CS:GO https://www.dropbox.com/s/hhjq3dvg4qgf1bz/csgo_log2.7z (placing on dropbox as it is over the max attachment size limit)
Also, should note that on CS:GO, to trigger it, the game has to be run in the "fullscreen windowed" mode and have "Multicore Rendering" set to Enabled.
The two logs from CS:GO show that it has a different underlying cause. Apparently, sometimes when you Alt-Tab away and back, CS:GO destroys its window. I'm not sure why or what it plans to do after that.
Prior to commit 4c4552c5, wined3d would essentially not notice that the window had been destroyed. Its current context would be left current and it would not check the window's pixel format. Somehow rendering would continue working. I suspect that the graphics driver keeps the GLX drawable (the window) extant as long as a context that targets it is current. gl*() functions and glXSwapBuffers() keep working.
After that commit, wined3d calls GetPixelFormat() to check the pixel format of the window on entry. Since the window has been destroyed from the Win32 point of view, this fails and returns 0. Wined3d figures that it therefore has to set the pixel format and furthermore set up the GL context. Setting the pixel format also fails because the Win32 window has been destroyed. That causes wined3d to create a new off-screen window and set the context to target that.
From that point on, most rendering is not displayed.
I'm not sure why a) the window doesn't just vanish from the screen, or b) why some rendering sometimes displays after that point.
Since the issue with CS:GO is so different from Path of Exile and Anno 1602, I may need to re-separate them.