https://bugs.winehq.org/show_bug.cgi?id=35675
--- Comment #14 from Alexander angavrilov@gmail.com --- Created attachment 49597 --> https://bugs.winehq.org/attachment.cgi?id=49597 log filtered for only surface_upload_data
Furthermore, if you filter the log specifically for the calls to surface_upload_data and look at what happens when switching tanks, you can see sequences that look very much like texture uploads at different mipmap levels. Looking closer, it is evident that subsequent uploads of the same dimensions often reuse the source memory buffer address; and sometimes there are two uploads to the same surface.
If this is evidence of temporary memory buffers and possibly surfaces being reused to load multiple distinct textures in sequence, any unexpected asynchronous behavior of the actual upload, whether introduced by Wine code or the GL driver, may cause the wrong pixel data to be uploaded to a texture, leading to the exact behavior seen in this bug. The explicit pipeline flush forced by StrictDrawOrdering would suppress this race condition and the bug, as supported by tests.