http://bugs.winehq.org/show_bug.cgi?id=12194
Summary: MechCommander Gold: screen flickers Product: Wine Version: 0.9.58. Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: liquitsnake@gmx.net CC: thunderbird2k@gmx.net
This is a regression that appeared between 0.9.55 and 0.9.56. The screen flickers ingame, which drives you crazy after a while.
61c82f8069a34426646f304c2c9dc616c912b06e is first bad commit commit 61c82f8069a34426646f304c2c9dc616c912b06e Author: Roderick Colenbrander thunderbird2k@gmx.net Date: Mon Feb 18 21:10:18 2008 +0100
wined3d: Add a GDI version of RealizePalette.
The base version won't suffice anymore as it is not able to upload palette changes to the drawable in an efficient way for both GDI and GL. Further the LoadLocation code in RealizePalette isn't needed for the GDI version as in all cases it works on system memory.
:040000 040000 2d58c38baf591cf20453b1bb9a78771951e9ca45 59772feb914bc9349b6880ec512a01bf0d82b8e8 M dlls
CC'ing author. Looks like ol' Thunderbird has to deal with a lot of regressions lately :)
http://bugs.winehq.org/show_bug.cgi?id=12194
haarp liquitsnake@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression
http://bugs.winehq.org/show_bug.cgi?id=12194
killertux killertux@suomi24.fi changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
--- Comment #1 from killertux killertux@suomi24.fi 2008-04-27 08:32:37 --- Also screen flickers here with Total Annihilation Demo but only when I change gamma settings from menu or in game... so I added download keyword.
If DirectDrawRenderer is set to opengl this should not happen.
http://bugs.winehq.org/show_bug.cgi?id=12194
Lei Zhang thestig@google.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |x86xlat@gmail.com
--- Comment #2 from Lei Zhang thestig@google.com 2008-05-07 20:35:02 --- *** Bug 12976 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=12194
haarp liquitsnake@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |http://www.download.com/Tota | |l-Annihilation/3000-7488_4- | |10014641.html Summary|MechCommander Gold: screen |Some DDraw games flicker the |flickers |screen
--- Comment #3 from haarp liquitsnake@gmx.net 2008-05-08 03:41:10 --- Changing subject to be more common Adding Total Annihilation demo to URL field
http://bugs.winehq.org/show_bug.cgi?id=12194
Daniel Reid dpreid@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #4 from Daniel Reid dpreid@gmail.com 2008-05-11 06:18:09 --- *** This bug has been confirmed by popular vote. ***
http://bugs.winehq.org/show_bug.cgi?id=12194
Daniel Reid dpreid@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dpreid@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=12194
Alexander Dorofeyev alexd4@inbox.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexd4@inbox.lv
--- Comment #5 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-12 04:38:16 --- (In reply to comment #1)
Also screen flickers here with Total Annihilation Demo but only when I change gamma settings from menu or in game... so I added download keyword.
If DirectDrawRenderer is set to opengl this should not happen.
It's a little confusing. Is it happening to you with or without opengl rendering? Anybody who sees this please clearly state what ddraw renderer settings you are using, as well as any other non-default d3d settings.
If you are using opengl, then also please attach glxinfo output.
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #6 from haarp liquitsnake@gmx.net 2008-05-12 08:42:48 --- I have the problem using the default settings (GDI afaik). I'm also using fbo as Offscreenrenderer
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #7 from XLaT x86xlat@gmail.com 2008-05-12 12:39:10 --- Default settings as well.
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #8 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-12 16:16:08 --- I can reproduce the flickering with gdi renderer when changing gamma settings but not elsewhere. However, that works nice and clean in opengl renderer, so, probably this is some problem in wine. Perfectly possible that the problem may be worse on some other setups.
The issue is certainly coming from the x11_copy_to_screen call - that's the essential part added in rewrite of the method and the problem goes away if it's removed. But the call itself seems to be right. Without it animating palette doesn't work in e.g. Red Alert 1. It's also essentially just a BitBlt to window DC. IIRC BitBlt wasn't supposed to produce flickering on native. This looks like a tough problem, maybe some quirks/bugs of winex11 driver's implementation of BitBlt.
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #9 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-12 17:43:06 --- Created an attachment (id=12985) --> (http://bugs.winehq.org/attachment.cgi?id=12985) proposed fix
Ok i think i found the problem. I believe RealizePalette was sometimes wrongly copying back buffer surface to screen. The check must probably be replaced with == ddraw_primary as in e.g. UnlockRect. That fixes gamma options flicker for me (and that's the only flicker i saw).
Please test this fix and let me know if it fixes all issues.
http://bugs.winehq.org/show_bug.cgi?id=12194
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #10 from XLaT x86xlat@gmail.com 2008-05-13 15:24:30 --- No flickering in ZDaemon :)
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #11 from haarp liquitsnake@gmx.net 2008-05-13 16:25:18 --- Confirming that the proposed patch fixes the issue in Mechcommander.
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #12 from Roderick Colenbrander thunderbird2k@gmx.net 2008-05-14 01:31:14 --- Better check if the surface is the primary render target as that is done in most code (render_targets[0] check).
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #13 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-14 02:17:30 --- (In reply to comment #12)
Better check if the surface is the primary render target as that is done in most code (render_targets[0] check).
surface_gdi in particular seems to be very ddraw-centric. It uses things like "ddraw_window" and "ddraw_primary" all over the place. So in the scope of surface_gdi.c ddraw_primary is more consistent with the overall code. I wonder though if ddraw_primary is always same as render_targets[0]. If it is, and is basically some legacy leftover stuff, maybe it would make sense to get rid of it. It's confusing to have multiple things for same purpose.
http://bugs.winehq.org/show_bug.cgi?id=12194
--- Comment #14 from Alexander Dorofeyev alexd4@inbox.lv 2008-05-14 16:20:23 --- The patch is in git.
Am I reading you right, guys, that all known cases of this problem have been fixed? If so this bug can be marked as fixed.
http://bugs.winehq.org/show_bug.cgi?id=12194
haarp liquitsnake@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #15 from haarp liquitsnake@gmx.net 2008-05-14 16:31:17 --- Resolving fixed
http://bugs.winehq.org/show_bug.cgi?id=12194
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #16 from Alexandre Julliard julliard@winehq.org 2008-05-23 10:38:04 --- Closing bugs fixed in 1.0-rc2.