DIB Engine : passing all tests

Alexandre Julliard julliard at winehq.org
Tue May 26 05:20:25 CDT 2009

Massimo Del Fedele <max at veneto.com> writes:

> About point 4, which, I guess, is the most important for you, the next step would be
> to make a winex11-2.drv on which DIB processing would be stripped away, and with
> added DDB buffering of DIBs and mixed blit operations.
> That driver could be connected to (and tested with) winedib.drv, always as an option
> in registry/environment.
> Once ready and stable enough it should be made permanently enabled and remaining part of
> winedib.drv could be merged inside gdi32; that could also be made stepwise.
> Of course this design would mean some duplication of code in gdi32 and winex11.drv, at least
> if we don't want to change something in driver function tables.... which would be the
> best solution if it's not imposed by Microsoft behaviour (I didn't check that one, nor
> I think to do it for the moment).
> A simple GetLine() * PutLine() that do translation between 32 bit RGBA <--> DDB inside
> winex11.drv and callable by gdi32 would of course avoid all code duplication needed for
> mixed blitting, keeping needed speed. That addition would be trivial.
> I think my design has some advantages and some disadvantages to other ones, but it's
> superior to the "double pointer approach" taken before, for reasons already explained.
> The main "disadvantage", maybe the only one, is to have for some time 2 different
> drivers in wine..... but OTOH it allows deep testing without breaking anything.

One of the main problems I see is that your design is based on the
premise that there's only one graphics driver, the X11 driver. That's
clearly not the case, DIBs can be used with any driver (and with
multiple drivers at the same time). This is also why you can't have the
DIB driver decide on when to forward/not forward to the X11 driver, it
should go in the other direction.

I'm also very skeptical about mirroring DIBs with a DDB. But even if you
do this that should be a purely internal x11drv decision, the DIB engine
shouldn't have any notion about this at all. This means you can't expose
DIB->DDB conversion routines, DDBs are entirely up to the graphics

Alexandre Julliard
julliard at winehq.org

More information about the wine-devel mailing list