http://bugs.winehq.org/show_bug.cgi?id=34574
--- Comment #11 from Henri Verbeet hverbeet@gmail.com 2013-09-25 08:59:51 CDT --- (In reply to comment #10)
happens to be stored in the GL backbuffer. ARBfp_blit first copies the offscreen surface to a GL texture, then puts the destination surface (=ddraw
It probably doesn't matter much wrt. the general issue here, but note that the hardware in question doesn't have fragment shaders either.
The problem now is that the GL drawable is a lot smaller than the ddraw frontbuffer, so the blit from the game's offscreen surface to the shadow frontbuffer can only write to a part of the frontbuffer, cutting off parts of the draw. That's not fixable without FBOs.
Well, sort of. In principle the drawable only has to be large enough to fit the area that's being copied, not the entire surface. I think in most cases that's enough in practice, though even if it isn't you could in principle do the copy in multiple passes.