> -----Original Message-----
> From: Keith Packard [mailto:[EMAIL PROTECTED]]
> Sent: Friday, March 01, 2002 11:07 AM
> To: [EMAIL PROTECTED]
> Cc: Keith Packard
> Subject: Re: [Render] Adding a new PictFormat 
> Please send the code along if you can.  No sense making you 
> reapply the 
> patch every time you upgrade.
> 

Here you go. No changes to fb/fbpict.c (yet).

--- xc/programs/Xserver/render/picture.c.orig   Wed Dec 12 22:35:41 2001
+++ xc/programs/Xserver/render/picture.c        Fri Mar  1 20:25:18 2002
@@ -264,6 +264,8 @@
                                      PICT_r5g6b5, pDepth->depth);
                nformats = addFormat (formats, nformats,
                                      PICT_b5g6r5, pDepth->depth);
+               nformats = addFormat (formats, nformats,
+                                     PICT_a4r4g4b4, pDepth->depth);
            }
            break;
        case 24:
--- xc/programs/Xserver/render/picture.h.orig   Fri Mar  1 20:29:50 2002
+++ xc/programs/Xserver/render/picture.h        Fri Mar  1 20:28:54 2002
@@ -77,6 +77,7 @@
 #define PICT_x1r5g5b5  PICT_FORMAT(16,PICT_TYPE_ARGB,0,5,5,5)
 #define PICT_a1b5g5r5  PICT_FORMAT(16,PICT_TYPE_ABGR,1,5,5,5)
 #define PICT_x1b5g5r5  PICT_FORMAT(16,PICT_TYPE_ABGR,0,5,5,5)
+#define PICT_a4r4g4b4  PICT_FORMAT(16,PICT_TYPE_ARGB,4,4,4,4)
 
 /* 8bpp formats */
 #define PICT_a8                PICT_FORMAT(8,PICT_TYPE_A,8,0,0,0)
--- xc/programs/Xserver/fb/fbcompose.c.orig     Sat Oct 27 22:33:08 2001
+++ xc/programs/Xserver/fb/fbcompose.c  Fri Mar  1 20:28:08 2002
@@ -1717,6 +1717,20 @@
 }
 
 CARD32
+fbFetch_a4r4g4b4 (FbCompositeOperand *op)
+{
+    FbBits  *line = op->line; CARD32 offset = op->offset;
+    CARD32  pixel = ((CARD16 *) line)[offset >> 4];
+    CARD32  a,r,g,b;
+
+    a = ((pixel & 0xf000) | ((pixel & 0xf000) >> 4)) << 16;
+    r = ((pixel & 0x0f00) | ((pixel & 0x0f00) >> 4)) << 12;
+    g = ((pixel & 0x00f0) | ((pixel & 0x00f0) >> 4)) << 8;
+    b = ((pixel & 0x000f) | ((pixel & 0x000f) << 4));
+    return (a | r | g | b);
+}
+
+CARD32
 fbFetch_x1r5g5b5 (FbCompositeOperand *op)
 {
     FbBits  *line = op->line; CARD32 offset = op->offset;
@@ -2098,6 +2112,19 @@
 }
 
 void
+fbStore_a4r4g4b4 (FbCompositeOperand *op, CARD32 value)
+{
+    FbBits  *line = op->line; CARD32 offset = op->offset;
+    CARD16  *pixel = ((CARD16 *) line) + (offset >> 4);
+    Splita(value);
+    *pixel =
+        (((a << 8) & 0xf000) |
+         ((r << 4) & 0x0f00) |
+         ((g     ) & 0x00f0) |
+         ((b >> 4)         ));
+}
+
+void
 fbStore_x1r5g5b5 (FbCompositeOperand *op, CARD32 value)
 {
     FbBits  *line = op->line; CARD32 offset = op->offset;
@@ -2343,6 +2370,7 @@
     { PICT_x1r5g5b5,   fbFetch_x1r5g5b5,       fbFetch_x1r5g5b5,
fbStore_x1r5g5b5 },
     { PICT_a1b5g5r5,   fbFetch_a1b5g5r5,       fbFetch_a1b5g5r5,
fbStore_a1b5g5r5 },
     { PICT_x1b5g5r5,   fbFetch_x1b5g5r5,       fbFetch_x1b5g5r5,
fbStore_x1b5g5r5 },
+    { PICT_a4r4g4b4,   fbFetch_a4r4g4b4,       fbFetch_a4r4g4b4,
fbStore_a4r4g4b4 },
 
     /* 8bpp formats */
     { PICT_a8,         fbFetch_a8,             fbFetcha_a8,
fbStore_a8 },
_______________________________________________
Render mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/render

Reply via email to