settlers 3 and dib engine

Jesse Allen the3dfxdude at
Sat Sep 8 11:10:48 CDT 2007

On 9/8/07, Skrzynka <skrzynka365 at> 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


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

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


More information about the wine-devel mailing list