[Spice-devel] [PATCH] don't use alpha channel bitmap for primary surface operations

Alon Levy alevy at redhat.com
Tue May 18 01:56:33 PDT 2010


This is an idea suggested by izik, I just tested it a little so far.

Basically the test for alpha in QXLGetBitmap is done even when the target
is a primary surface (side note: our driver only supports a single monitor
right now, and hardcoding '0' there also sucks, it should basically be
0..num_monitors-1). So this adds a check explicitly. I haven't benchmarked
it yet (I plan on doing a little infrastructure to make benchmarking easier
with another ifdef - don't plan on pushing this upstream since it will make
the code much uglier - I want to decorate all the api functions to have
them output debug prints).

I haven't tried this on X driver either - don't even know where the X code is..

diff --git a/display/res.c b/display/res.c
index 62a8bb8..f99db7f 100644
--- a/display/res.c
+++ b/display/res.c
@@ -2029,7 +2029,7 @@ BOOL QXLGetBitmap(PDev *pdev, QXLDrawable *drawable, QXLPH
 
     high_bits_set = FALSE;
     if (surf->iBitmapFormat == BMF_32BPP) {
-        if (rgb32_data_has_alpha(width, height, surf->lDelta,
+        if (surf->id == 0 && rgb32_data_has_alpha(width, height, surf->lDelta,
                                  (UINT8 *)surf->pvScan0 + area->left * 4,
                                  &high_bits_set) &&
             !high_bits_set) {


More information about the Spice-devel mailing list