[Wine-devel] DIB Engine статус

Sergey Novosyolov =?iso-8859-1?q?chi_=CE=C1_etersoft=2Eru?=
Вт Окт 14 14:43:54 MSD 2008


Предыстория:
Huw Davies писал в рассылку wine/devel:
Hi folks,

Here's an update on the DIB engine that I've been working on for the
last few months.  This work has been made possible by the generosity
of Google - so thanks go to them and of course to Dan.

You can find the code at http://repo.or.cz/w/wine/dibeng-hd.git

What's supported
================
- All dib section depths (including BI_BITFIELD support).

- Single pixel solid and dashed pens.

- The 16 rop2s.

- Solid and dib pattern brushes.

- A brunch of primitives for drawing onto all dib section surfaces.

- GDI32 apis: LineTo, Rectangle and PatBlt.

- An extensive test suite for all of the above.

What needs to be done
=====================
- Blitting (eg BitBlt, StretchBlt and StretchDIBits) - I have some hacks for 
these in my tree.

- ExtTextOut

- Many more GDI32 apis - a lot of these should be easy given that we
  have a set of underlying dib drawing primitives.

- Non-MM_TEXT mapping modes and world transforms.

- The initial interaction with GDI32 in BITMAP_SelectObject is hacky
  and needs some work.

- Lots more...

....

Предложения Detlef Riekenberg:

The first thing, i like to see is a Design in the correct way:
Inside gdi32 while using Eng* and friends.
(Needed by Printer drivers, and any Display driver including mirror /
remote display drivers)

IMHO, every other attemp to implement a DIB-Engine is a waste of time.

Marcel did some work last Year during SoC with the correct API
(Eng* and friends) but also in the wrong location (he used wineddi.drv)

...

Any Driver can call the Graphic Rendering Engine (GRE)
to do parts (or all) of the rendering (and native driver do that):
1: DDB (Driver managed: using any driver specific format)
   (The Driver should do Everything. When the driver call the GRE,
    the DDB is converted to a DIB, GDI renders into the DIB and then
    the DIB is converted back to a DDB)
   => like our winex11.drv and wineps.drv

2: DDB (GDI managed: using DIB format)
   (The driver render, what the driver want to render with hw-support
    and can call the GRE for all the other rendering without converting)
   => Needed for native printer drivers / mirror drivers or
      OpenGL accelerated rendering (stefan did some experiments)

3: DIB
   (GDI renders everything)
   => The current Code is using a X11-DDB (Driver Managed) with
converting
      issues.

Соответственно, разработка DIB Enging предлагается в следующих этапах:

1. Реализация всех функций DIB Engine внутри GDI.
2. Реализация взаимодейтсвия драйверов DIB Engine
3. Реализация работы с DDB



Подробная информация о списке рассылки Wine-devel