> -----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