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 apropriate. 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 functionality 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 some
significant changes to winex11.drv.
There is already an other display driver: winequartz.drv for MacOS. And
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.

-Ken


Reply via email to