Jesse Allen wrote:
On 9/8/07, Skrzynka skrzynka365@konto.pl wrote:
Hi, I'm trying to get Settlers 3 to run on Wine. After fixing some race condition (seems like the thread calling WaitForXXXObject was giving up time-slice too early after the call) it seems that the only problem left is very slow text output. What I could understand from the forum archives is that with no DIB engine, the rendering into a DC causes copying of the bitmap to/from server (is that correct?). I'd like to contribute to the DIB engine if it's possible/needed, so I'd like to ask about a few things. There were some discussion recently about an implementation of DIB engine by Jesse Allen - what is the status of DIB engine? I compiled winedib.drv but ExtTextOut function is missing there and overall there are regressions visible when running Settlers 3 (wrong colors, no text at all). Which docs/urls/sources would you recommend to read to get some quick introduction to the DIB engine? Which particular functions are making current impl slow? Or, in general: where to start? Sorry for any silly questions... Thanks & regards Piotr
Hello,
Yes ExtTextOut will probably need to be implemented, as well as whatever family of functions that might go with it. There might be some cooperation necessary with the display driver here I don't know. You're pretty much on your own right now if you go there, as you'll need to figure out how to do everything.
A simpler project might be to implement the drawing algorithms in graphics.c. It needs to be done, and I do believe I have enough infrastructure here (with some tweaking) to get this stuff done. So I would take a look at things like LineTo, Filling, Circles, etc. The docs for the drawing functions are in dib_*.c.
Stretching needs to be done, as well finish support for RLE compression and proper checking for bitmaps recieved into the dib engine.
A task I will start very soon is forwarding to the display driver. This will probably fix most of the regressions if it indeed works, but it will slow the whatever bitmap operations down that go through the dib engine that just foward back--this is okay for the time being while this stuff gets written.
If you want to start hacking on it, I would very appreciate it. I can commit your patches to my tree and you will receive credit for your work. I hope to get the driver into the tree someday soon, but only when correct forwarding, bitmap support, and blitting is fully supported.
Jesse
-- ----- AlphaNet - najtaniej w sieci! -------- Odnowienia domen w rewelacyjnych cenach! .pl - 65 zl, .com.pl - 50 zl, reg - 20 zl http://www.domeny.alpha.pl
I'll do what I can. However it's far too early to bother about my commits :) I'm trying to compare and understand the control flow of both drivers (winex11 and winedib). At which function in winex11 is copying data to/from server taking place? And in what function/file is the check for winedib driver availability done? Thanks Piotr
-- ----- AlphaNet - najtaniej w sieci! -------- Odnowienia domen w rewelacyjnych cenach! .pl - 65 zl, .com.pl - 50 zl, reg - 20 zl http://www.domeny.alpha.pl --------------------------------------------