[Bug 3902] Need DIB engine (Unnormal slowness in Heroes 4
(X11DRV_BitBlt?))
Wine Bugs
wine-bugs at winehq.org
Sat Oct 14 03:25:32 CDT 2006
http://bugs.winehq.org/show_bug.cgi?id=3902
damjan.jov at gmail.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #3838 is|0 |1
obsolete| |
------- Additional Comments From damjan.jov at gmail.com 2006-14-10 03:25 -------
Created an attachment (id=3851)
--> (http://bugs.winehq.org/attachment.cgi?id=3851&action=view)
client-side DIB copy patch, v2
Well, I'll be damned...
After hours of trying with no luck, I saw the message:
Cannot change screen BPP from 32 to 16.
So I tried running X in 16-bit depth, and Heroes 4 worked substantially faster
(with no patches).
I added the dirty rectangle patch - maybe ran a little faster.
I added the client-side DIB copy patch - looked perfect, ran like lightning!
So why does it work in 16 bpp and not in 24? I switched X back to 24, and sure
enough, it was still broken. Where I calculate witdhs and offsets, I tried
multiplying by 4 instead of 3 - even worse. So I tried multiplying by 2 instead
- looked perfect, ran like lightning.
But how can it be using 16 bpp when it reports 24? Well, incredibly enough,
X_PHYSDEVICE's depth and X_PHYSDEVICE's bitmap's pixmap_depth are the X pixmap
depth, NOT the client-side bitmap depth which is given by DIBSECTION's dsBm's
bmBitsPixel (a fact which isn't documented anywhere).
When I changed the code to use the DIBSECTION values like it should, everything
looks good and runs super-fast. I've already submitted the patch to
wine-patches. Happy playing ;-).
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the wine-bugs
mailing list