http://bugs.winehq.org/show_bug.cgi?id=13801
--- Comment #44 from Roderick Colenbrander thunderbird2k@gmail.com 2009-07-08 04:51:43 --- (In reply to comment #43)
(In reply to comment #42)
Hi,
I'm working on replacing big chunks of the Wine bitblt code with XRender. This will in the end also eliminate some DIB bottlenecks because XRender can do depth conversion, so we don't have to that during a X11DRV_DIB_SetImageBits and in other places.
It was mentioned in this bug report that text rendering is slow due to a part of the DIB stuff. Did you perform any profiling e.g. using sysprof/oprofile to see which functions consume most time? In the report depth conversion isn't mentioned but I guess that this might be one of the most time consuming parts. Is this the case? My work might be able to accelerate AutoCad quite a bit (sure not as much as a complete DIB engine).
Roderick
I didn't make a true profiling, but some (long) time ago I traced down the code flow, and the bottleneck was (IIRC....) on ExtTextOut function, which did some DIB_Coerce() calls. Removing the coerce stuffs gave back the speed at the expense of missing text, obviously. The problem is not the bitblt, but the text output on a dib with format different than screen's one. I guess your patch won't speed up this stuff..... Of course, if you have a way to use XRENDER to paint fonts on different bit depths without doing a conversion, then yes, you can have the speed gain. But then you should patch ExtTextOut() functions to use yours.
Ciao
Max
The patch will in the end eliminate any depth conversion (at least on the Wine side a driver might still do it internally but it can use more optimizations and in the best case does it all in hardware). When the patch is done we can directly blit DIBs with a depth different from the screen depth to the screen. What depths are used for the DIBs?
Roderick