* [Qemu-devel] [PATCH] Use opaque alpha channel to support Xgl @ 2006-03-05 22:45 Anthony Liguori 2006-03-06 17:38 ` [Qemu-devel] " Christian Walther 0 siblings, 1 reply; 3+ messages in thread From: Anthony Liguori @ 2006-03-05 22:45 UTC (permalink / raw) To: qemu-devel [-- Attachment #1: Type: text/plain, Size: 801 bytes --] Xgl introduces a new pixel format that's a 32 bit depth with a true alpha channel. When we let SDL choose a depth on an Xgl server, it picks up this format (as it's the native pixel format in Xgl). We don't fill out the alpha channel which results in a completely transparent screen. This patch fills out the alpha channel to all 1s for 32 bit pixels. I'm not sure if this handles every case where a pixel is generated but it seems to work on all of my VMs. I really don't like this patch as it seems like a hack but I couldn't figure out a way to differentiate in SDL between a 24-bit depth with a 32-bit pixel width (which is a common, non-alpha format) and a true 32 bit depth with an alpha channel. Hopefully, this will be fixed in future versions of SDL. Regards, Anthony Liguori [-- Attachment #2: qemu-xgl.diff --] [-- Type: text/plain, Size: 668 bytes --] # HG changeset patch # User Anthony Liguori <anthony@codemonkey.ws> # Node ID 9ad5f865d44bf962f0ed9ca712e9ce2d8a4d46dd # Parent 945c27df128e8b5b1f43f1b3ddcb77c887c51f4d Xgl introduces a new surface type that's 32-bit with a true alpha channel. Make sure that we return pixels with opaque alpha channels. diff -r 945c27df128e -r 9ad5f865d44b hw/vga.c --- a/hw/vga.c Thu Mar 2 16:46:45 2006 -0500 +++ b/hw/vga.c Sat Mar 4 12:34:45 2006 -0500 @@ -803,7 +803,7 @@ static inline unsigned int rgb_to_pixel32(unsigned int r, unsigned int g, unsigned b) { - return (r << 16) | (g << 8) | b; + return 0xFF000000 | (r << 16) | (g << 8) | b; } #define DEPTH 8 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] Re: [PATCH] Use opaque alpha channel to support Xgl 2006-03-05 22:45 [Qemu-devel] [PATCH] Use opaque alpha channel to support Xgl Anthony Liguori @ 2006-03-06 17:38 ` Christian Walther 2006-03-07 0:51 ` Anthony Liguori 0 siblings, 1 reply; 3+ messages in thread From: Christian Walther @ 2006-03-06 17:38 UTC (permalink / raw) To: qemu-devel Anthony Liguori wrote: > I really don't like this patch as it seems like a hack but I couldn't > figure out a way to differentiate in SDL between a 24-bit depth with > a 32-bit pixel width (which is a common, non-alpha format) and a true > 32 bit depth with an alpha channel. Check SDL_Surface->format.Amask (see http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fPixelFormat). > Hopefully, this will be fixed in future versions of SDL. I'm not convinced there's something to fix in SDL rather than Qemu (but I'm not familiar with the issue), but if there is, please post this on the SDL mailing list (sdl@libsdl.org, http://news.gmane.org/gmane.comp.lib.sdl). -Christian ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] Re: [PATCH] Use opaque alpha channel to support Xgl 2006-03-06 17:38 ` [Qemu-devel] " Christian Walther @ 2006-03-07 0:51 ` Anthony Liguori 0 siblings, 0 replies; 3+ messages in thread From: Anthony Liguori @ 2006-03-07 0:51 UTC (permalink / raw) To: qemu-devel Christian Walther wrote: > Anthony Liguori wrote: > >> I really don't like this patch as it seems like a hack but I couldn't >> figure out a way to differentiate in SDL between a 24-bit depth with >> a 32-bit pixel width (which is a common, non-alpha format) and a true >> 32 bit depth with an alpha channel. > > Check SDL_Surface->format.Amask (see > http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fPixelFormat). Here's the pixel format under normal X (24 bit depth): BitsPerPixel 32 BytesPerPixel 4 Rloss Gloss, Bloss, Aloss {0, 0, 0, 8} Rshift, Gshift, Bshift, Ashift {16, 8, 0, 0} Rmask, Gmask, Bmask, Amask {ff0000, ff00, ff, 0} Colorkey: 0 Alpha: 255 Here's the pixel format under Xgl: BitsPerPixel 32 BytesPerPixel 4 Rloss Gloss, Bloss, Aloss {0, 0, 0, 8} Rshift, Gshift, Bshift, Ashift {16, 8, 0, 0} Rmask, Gmask, Bmask, Amask {ff0000, ff00, ff, 0} Colorkey: 0 Alpha: 255 Notice that they are identical. They probably shouldn't be (what's SDL doing not setting an Amask when there is an alpha channel...). >> Hopefully, this will be fixed in future versions of SDL. > > I'm not convinced there's something to fix in SDL rather than Qemu > (but I'm not familiar with the issue), but if there is, please post > this on the SDL mailing list (sdl@libsdl.org, > http://news.gmane.org/gmane.comp.lib.sdl). I will. Regards, Anthony Liguori > -Christian > > > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://lists.nongnu.org/mailman/listinfo/qemu-devel ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-03-07 0:51 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-03-05 22:45 [Qemu-devel] [PATCH] Use opaque alpha channel to support Xgl Anthony Liguori 2006-03-06 17:38 ` [Qemu-devel] " Christian Walther 2006-03-07 0:51 ` Anthony Liguori
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).