[Bug 34574] Kega Fusion 3.64 - Fullscreen not working anymore

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Sep 25 08:46:35 CDT 2013


http://bugs.winehq.org/show_bug.cgi?id=34574

--- Comment #10 from Stefan Dösinger <stefan at codeweavers.com> 2013-09-25 08:46:35 CDT ---
The incorrect positioning is more or less by design. The game renders to an
offscreen ddraw surface and then tries to blit the result to the frontbuffer.
The frontbuffer happens to be an offscreen surface as well (the shadow
frontbuffer). The shadow frontbuffer is a lot bigger (screen size) than the GL
drawable (window size). The old fallback code in surface_blt_special handles
the copy via glCopyTexImage because the game's offscreen surface currently
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
frontbuffer) into the GL backbuffer and draws a textured quad. Later on the
ddraw frontbuffer is copied back into a texture and blitted onto the real
frontbuffer to make the contents show up on the screen.

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. We should keep this restriction in
mind when continuing with the blit cleanup - maybe we should fall back to CPU
blits when blitting to an offscreen surface that is bigger than the GL
drawable. Maybe we can keep the glCopyTexImage code, but this code only works
properly by luck in this case (no stretching, and the source surface is upside
down because it is an offscreen surface).

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.


More information about the wine-bugs mailing list