Massimo Del Fedele <[email protected]> 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 driver. -- Alexandre Julliard [email protected]
