Roderick Colenbrander ha scritto:
Hi,
Massimo demonstrated the need for a DIB engine for Autocad but the way it is implemented is not fully correct. We already talked a bit about that on IRC. He is right that it should be implemented inside gdi32 and that it should be done in small steps (where possible). His idea is to add his 'DIB engine' and then fix the rest of the code and let everything converge in the end to the 'right' design. Part of the right design is that winex11.drv shouldn't work directly on DIBs anymore.
Alexandre hasn't commented on the design except for saying that he didn't think that Massimo his current patches would converge to the 'right' design. Personally I think that the initial work for a DIB engine should focus on moving the DIB code away from winex11.drv. This is not a simple task and will likely require large patches. When all DIB code is abstracted away from winex11.drv adding a DIB engine will be a lot easier.
Roderick
Hi Roderick,
The way I'm doing it is indeed seen by me as e temporary step for the migration and a way to "make things moving on" :-) Maybe I didn't spoke enough about the way I was planning when switched to the "new approach"... So I'll put it here. Maybe it can be useful for future plans. So : 1) Implement a "working" engine as an *alternative* driver; that's what my winedib.drv aims to be. It doesn't touch nor gdi32 (almost...) nor winex11; it's just a second choice driver with separed processing for DIBs. The fact that it uses winex11 is secondary and just an intermediate step. 2) when winedib.drv is working good enough, wanted to "detach" it from winex11.drv, so make another "driver" comprising DDB parts of wineX11 and all optimizations needed. I mean : DDB in the "other" winex11 driver, DIB in winedib BUT with a DIB copy in DDB format in the "other" winex11. That would optimize blitting on screen and from/to DDB/DIB. It would be a sort of double buffering of DIBs. 3) from steps 1/2, we resort with a winex11 driver without the DIB hassles AND all dib processing inside winedib. Last step would be to move the winedib code into gdi32 and replace the old winex11 with the new one.
Steps 1-2 can be made without interfering with wine; step 3 would be made only when the engine is stable and tested enough to not cause regressions; it could also be made in small patches.
Ciao
Max