On Jan 12, 2015, at 10:11 AM, Paolo Bonzini wrote:

> 
> 
> On 12/01/2015 15:51, Programmingkid wrote:
>>>>>> +    /* Determines the pixel format of the frame buffer */ +
>>>>>> if (surface->format == PIXMAN_b8g8r8x8) { +
>>>>>> bitmap_info = kCGBitmapByteOrder32Big |
>>>>>> kCGImageAlphaNoneSkipFirst; +    }
>>>> 
>>>> That certainly goes into the right direction.
>> Thank you.
>> 
>>>> PIXMAN_* is native endian though, so I expect this will work on
>>>> the intel macos host you are testing on but will fail on powerpc
>>>> macos hosts.
>> Unfortunately there appears to be no way to know. The last PowerPC
>> Macs came out over 9 years ago. There probably isn't anyone on the
>> list who uses one.
> 
> I have one, though it does not have enough memory to run Mac OS X
> guests.  In any case, pixman clearly says that b8g8r8x8 is BGRA in
> host-endianness, so not the same as kCGBitmapByteOrder32Big.
> 
> So your patch just needs something like this in ui/cocoa.m:
> 
> #ifdef HOST_WORDS_BIGENDIAN
> #define PIXMAN_BE_b8g8r8x8     PIXMAN_b8g8r8x8
> #else
> #define PIXMAN_BE_b8g8r8x8     PIXMAN_x8r8g8b8
> #endif
> 
> so that you can replace PIXMAN_b8g8r8x8 with PIXMAN_BE_x8r8g8b8 in your
> test.  (You'll also need a matching "else" that restores
> kCGBitmapByteOrder32Little---if only for clarity: assuming little-endian
> in the initializer is ugly).
> 
> Paolo


It doesn't look like my color patch is needed anymore. This repo fixes all 
color problems - without touching a line of code in cocoa.m!  

git://git.kraxel.org/qemu branch rebase/console-wip

Reply via email to