Some thoughts about the ominous DIB Engine
ken at codeweavers.com
Fri Feb 9 05:53:32 CST 2007
On Feb 9, 2007, at 5:18 AM, Michael Stefaniuc wrote:
> Rolf Kalbermatter wrote:
>> I have been following this discussion for quite some time and finally
>> decided to look into it a little bit. While the Wiki mentions that a
>> difficult part of this would be to get any design accepted by
>> Alexandre it
>> does absolutely not say in any way what kind of approach would be
>> likely to
>> be accepted, other than it needs to be in small incremental steps.
>> I must admit that I haven't entirely looked through the whole Wine
>> tree yet
>> so I might be missing something but from the old Transgaming patch
>> and some
>> investigation into GDI32 I would see two principal aproaches to
>> add such an
>> interface to Wine.
>> 1) Like in the Transgaming patch hook into winex11.drv where
>> 2) Add the dib engine as a dibdrv into GDI32 directly similar to
>> what has
>> been done for enhmfdrv and mfdrv already.
>> Obviously 1) has been tried and seemed to work in some ways
>> eventhough there
>> would still need to be quite some more work to be done. What I
>> don't like
>> about this aproach is that conceptually it seems to add this
>> at the wrong end. If there is ever going to be another display
>> driver than
>> winex11.drv all the hooking would have to be done again and also
>> adding new
>> GDI methods to the driver as development goes always requires also
>> significant changes to winex11.drv.
> There is already an other display driver: winequartz.drv for MacOS.
> Pierre is working to move code out of winex11.drv and into the GDI and
> User dlls to not have to duplicate it again in winequartz.drv.
Pierre could speak to this better than I, but my understanding is
that the Quartz driver does not need the DIB engine. Quartz (the
Mac's imaging and windowing API) is capable of drawing to offscreen
bitmaps directly, at color depths that need not match the display's.
This has implications for the design of the DIB engine, because it
should be designed to allow the graphics driver to override/bypass it.
More information about the wine-devel