http://bugs.winehq.org/show_bug.cgi?id=10866
Summary: In-game text slows down SimCopter Product: Wine Version: 0.9.51. Platform: PC URL: http://www.5star- shareware.com/Windows/Games/Flight/simcopter.html OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-directx-ddraw AssignedTo: wine-bugs@winehq.org ReportedBy: baby.lueshi@gmail.com
When playing SimCopter, the game slows down every time you get mission-related updates in the top left corner of the screen. The more lines of text on the screen at a time, the more the game lags. After doing a trace, it seems that SimCopter calls DrawTextA for those messages, and the calls are constantly repeated while the message is on the screen. I'm thinking this is because DirectDraw might render over the text and the text gets redrawn every time the DirectDraw window does, but that's just a wild guess, and doesn't really explain the slowdown.
This bug is in both the demo and retail version of the game.
http://bugs.winehq.org/show_bug.cgi?id=10866
Michael baby.lueshi@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |baby.lueshi@gmail.com
--- Comment #1 from Michael baby.lueshi@gmail.com 2007-12-25 13:05:30 --- After some testing, it seems all the text messages that lag the game are drawn through GDI. I guessed was the problem, since I had DirectDrawRendering set to opengl. However, setting it back to GDI didn't seem to solve the problem. I'm now guessing this bug is just a problem of rendering standard GDI controls over DirectDraw. Would making the DrawText* methods detect whether to use standard GDI methods or DirectDraw methods to draw the text cause too much incompatibilities, and is it even possible?
Also thought I should add this: I remember encountering this bug as far back as 0.9.34, so it's not any regression that I know of.
http://bugs.winehq.org/show_bug.cgi?id=10866
--- Comment #2 from Roderick Colenbrander thunderbird2k@gmx.net 2007-12-29 09:49:57 --- You are correct on the problem. Normally ddraw or direct3d games just render to the screen. The evilness of ddraw/d3d is that both export a 'GetDC' function which games can use to mix GDI with ddraw/d3d. In case of games on wine this is the most terrible thing a game can do. As what happens is that each GetDC call the whole framebuffer contents is downloaded and put in a sort of 'bitmap'. Then it is handled to GDI for drawing to it. Behind your back GDI uses X for drawing and this is quite inefficient.
Some time in the future we will get a 'DIB' engine in wine and when we have that the GDI drawing can be done without X and this will make it quite a bit faster but the costly download is still needed. (In case of gdi there is no download only in case of opengl; in gdi only the final result is shown on the screen, so all data is still on the cpu-side)
http://bugs.winehq.org/show_bug.cgi?id=10866
--- Comment #3 from Austin English austinenglish@gmail.com 2008-06-03 13:28:03 --- Is this still an issue in 1.0-rc3?
http://bugs.winehq.org/show_bug.cgi?id=10866
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |ABANDONED
--- Comment #4 from Austin English austinenglish@gmail.com 2008-12-01 02:17:08 --- Abandoned.
http://bugs.winehq.org/show_bug.cgi?id=10866
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Austin English austinenglish@gmail.com 2008-12-01 02:17:56 --- Closing.
http://bugs.winehq.org/show_bug.cgi?id=10866
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|directx-ddraw |directx-d3d