Created attachment 70730 [details] EXA: Fix acceleration of solid pictures on big endian On OpenBSD/macppc with drm and UMS ati driver 6.14.5 and 6.14.6, gtk (cairo?) applications do not render black fonts correctly. This does not happen when using 'Option "AccelMethod" "XAA"' nor with the ati driver version 6.14.4. I believe the problem comes from an endianness issue related to the support for accelerated solid pictures added between 6.14.4 and .5. The attached patch fixes this issue for me, tested on a mac mini (rv280) and powerbook (rv350). Don't hesitate if you need more information.
The current code works correctly on Linux/PPC KMS (the XF86DRM_MODE path in RADEONSolidPixmap()), so this patch would probably break that case.
Also, this patch will probably break when running at depth 16 instead of the default 24, as the GPU will be programmed to do 16-bit instead of 32-bit byte swapping for CPU access to VRAM.
Created attachment 76114 [details] [review] UMS: Swap bytes when uploading to pixmap for solid picture on big endian host This patch should address the issues from my previous comments. Please test at depth 24 and 16.
Your diff correctly fixes the problem I was seeing. I just tested it on a PowerBook G4 with a rv350 at depth 24 *and* 16. Thank you for taking the time to look into this issue, I really appreciate it.
Might be worth applying to the ums xf86-video-ati git branch.
Fixed on the ums branch, thanks for testing! commit 96ddc91bfa07d91b412afcf90e13523fe9efaf08 Author: Michel Dänzer <michel.daenzer@amd.com> Date: Thu Mar 7 09:59:29 2013 +0100 UMS: Swap bytes when uploading to pixmap for solid picture on big endian host
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.