One more time then:

I have added a NULL to account for the LUT2 additions

Cheers
Dan

diff -urN DirectFB-1.0.0.orig/include/directfb.h
DirectFB-1.0.0_new/include/directfb.h
--- DirectFB-1.0.0.orig/include/directfb.h      2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/include/directfb.h       2007-03-15 15:32:12.000000000
+0000
@@ -1008,10 +1008,16 @@
      /*  2 bit   LUT (1 byte/ 4 pixel, 2 bit color and alpha lookup from
palette) */
      DSPF_LUT2      = DFB_SURFACE_PIXELFORMAT( 25,  2, 0, 1, 2, 0, 3, 0, 0,
1, 0 ),
 
+       /* 16 bit  XRGB (2 byte, nothing @12, red [EMAIL PROTECTED], green 
[EMAIL PROTECTED], blue [EMAIL PROTECTED]) */
+     DSPF_XRGB4444  = DFB_SURFACE_PIXELFORMAT( 26, 12, 0, 0, 0, 2, 0, 0, 0,
0, 0 ),
+
+     /* 16 bit  XRGB (2 byte, nothing @15, red [EMAIL PROTECTED], green [EMAIL 
PROTECTED], blue [EMAIL PROTECTED])
*/
+     DSPF_XRGB1555  = DFB_SURFACE_PIXELFORMAT( 27, 15, 0, 0, 0, 2, 0, 0, 0,
0, 0 )
+
 } DFBSurfacePixelFormat;
 
 /* Number of pixelformats defined */
-#define DFB_NUM_PIXELFORMATS            26
+#define DFB_NUM_PIXELFORMATS            28
 
 /* These macros extract information about the pixel format. */
 #define DFB_PIXELFORMAT_INDEX(fmt)      (((fmt) & 0x0000007F)      )
diff -urN DirectFB-1.0.0.orig/src/core/surfaces.c
DirectFB-1.0.0_new/src/core/surfaces.c
--- DirectFB-1.0.0.orig/src/core/surfaces.c     2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/src/core/surfaces.c      2007-03-15 15:32:12.000000000
+0000
@@ -1108,6 +1108,8 @@
           case DSPF_UYVY:
           case DSPF_YUY2:
           case DSPF_YV12:
+          case DSPF_XRGB4444:
+          case DSPF_XRGB1555:
                break;
 
           default:
@@ -1238,6 +1240,8 @@
           case DSPF_RGB32:
           case DSPF_YUY2:
           case DSPF_UYVY:
+          case DSPF_XRGB4444:
+          case DSPF_XRGB1555:
                rgb   = true;
                break;
 
@@ -1405,6 +1409,14 @@
                          buf_g[n] = (data16[n] & 0x8000) ? 0xff : 0x00;
                     }
                     break;
+               case DSPF_XRGB1555:
+                    for (n=0, n3=0; n<surface->width; n++, n3+=3) {
+                         buf_p[n3+0] = (data16[n] & 0x7C00) >> 7;
+                         buf_p[n3+1] = (data16[n] & 0x03E0) >> 2;
+                         buf_p[n3+2] = (data16[n] & 0x001F) << 3;
+                    }
+                    break;
+
                case DSPF_ARGB2554:
                     for (n=0, n3=0; n<surface->width; n++, n3+=3) {
                          buf_p[n3+0] = (data16[n] & 0x3E00) >> 6;
@@ -1437,6 +1449,13 @@
                          buf_g[n] |= buf_g[n] << 4;
                     }
                     break;
+              case DSPF_XRGB4444:
+                    for (n=0, n3=0; n<surface->width; n++, n3+=3) {
+                         buf_p[n3+0] = (data16[n] & 0x0F00) >> 4;
+                         buf_p[n3+1] = (data16[n] & 0x00F0);
+                         buf_p[n3+2] = (data16[n] & 0x000F) << 4;
+                    }
+                    break;
                case DSPF_RGB332:
                     for (n=0, n3=0; n<surface->width; n++, n3+=3) {
                          buf_p[n3+0] = lookup3to8[ (data8[n] >> 5)       
];
diff -urN DirectFB-1.0.0.orig/src/gfx/convert.c
DirectFB-1.0.0_new/src/gfx/convert.c
--- DirectFB-1.0.0.orig/src/gfx/convert.c       2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/src/gfx/convert.c        2007-03-15 15:41:07.000000000 
+0000
@@ -74,12 +74,18 @@
           case DSPF_ARGB1555:
                pixel = PIXEL_ARGB1555( 0, r, g, b );
                break;
+          case DSPF_XRGB1555:
+               pixel = PIXEL_XRGB1555( r, g, b );
+               break;
           case DSPF_ARGB2554:
                pixel = PIXEL_ARGB2554( 0, r, g, b );
                break;
           case DSPF_ARGB4444:
                pixel = PIXEL_ARGB4444( 0, r, g, b );
                break;
+          case DSPF_XRGB4444:
+               pixel = PIXEL_XRGB4444( r, g, b );
+               break;
           case DSPF_RGB16:
                pixel = PIXEL_RGB16( r, g, b );
                break;
@@ -128,6 +134,9 @@
           case DSPF_ARGB1555:
                return "ARGB1555";
 
+          case DSPF_XRGB1555:
+               return "XRGB1555";
+
           case DSPF_RGB16:
                return "RGB16";
 
@@ -188,6 +197,9 @@
           case DSPF_ARGB4444:
                return "ARGB4444";
 
+          case DSPF_XRGB4444:
+               return "XRGB4444";
+
           case DSPF_ARGB1666:
                return "ARGB1666";
 
diff -urN DirectFB-1.0.0.orig/src/gfx/convert.h
DirectFB-1.0.0_new/src/gfx/convert.h
--- DirectFB-1.0.0.orig/src/gfx/convert.h       2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/src/gfx/convert.h        2007-03-15 15:32:12.000000000 
+0000
@@ -45,6 +45,10 @@
                                  (((g)&0xF8) << 2) | \
                                  (((b)&0xF8) >> 3) )
 
+#define PIXEL_XRGB1555(r,g,b)  ( (((r)&0xF8) << 7) | \
+                                 (((g)&0xF8) << 2) | \
+                                 (((b)&0xF8) >> 3) )
+
 #define PIXEL_ARGB2554(a,r,g,b)( (((a)&0xC0) << 8) | \
                                  (((r)&0xF8) << 6) | \
                                  (((g)&0xF8) << 1) | \
@@ -55,6 +59,10 @@
                                  (((g)&0xF0)     ) | \
                                  (((b)&0xF0) >> 4) )
 
+#define PIXEL_XRGB4444(r,g,b)  ( (((r)&0xF0) << 4) | \
+                                 (((g)&0xF0)     ) | \
+                                 (((b)&0xF0) >> 4) )
+
 #define PIXEL_RGB16(r,g,b)     ( (((r)&0xF8) << 8) | \
                                  (((g)&0xFC) << 3) | \
                                  (((b)&0xF8) >> 3) )
@@ -104,7 +112,7 @@
                                  ((y) << 8)  | \
                                   (v) )
 #else /* little endian */
-     
+
 #define PIXEL_YUY2(y,u,v)      ( ((v) << 24) | \
                                  ((y) << 16) | \
                                  ((u) << 8)  | \
@@ -145,6 +153,14 @@
                                     (((pixel) & 0x03E0) << 6) | \
                                     (((pixel) & 0x001F) << 3) )
 
+#define ARGB1555_TO_XRGB1555(pixel) ( (((pixel) & 0x7C00) << 9) | \
+                                      (((pixel) & 0x03E0) << 6) | \
+                                      (((pixel) & 0x001F) << 3) )
+
+#define ARGB1555_TO_XRGB4444(pixel) ( (((pixel) & 0x7800) >> 3) | \
+                                      (((pixel) & 0x03C0) >> 2) | \
+                                      (((pixel) & 0x001E) >> 1) )
+
 
 #define RGB16_TO_RGB332(pixel) ( (((pixel) & 0xE000) >> 8) | \
                                  (((pixel) & 0x0700) >> 6) | \
@@ -174,6 +190,14 @@
                                  (((pixel) & 0x07E0) << 5) | \
                                  (((pixel) & 0x001F) << 3) )
 
+#define RGB16_TO_XRGB1555(pixel)  ( (((pixel) & 0xF800) >> 1) | \
+                                    (((pixel) & 0x07C0) >> 1) | \
+                                    (((pixel) & 0x001F)) )
+
+#define RGB16_TO_XRGB4444(pixel)  ( (((pixel) & 0xF000) >> 4) | \
+                                    (((pixel) & 0x0780) >> 3) | \
+                                    (((pixel) & 0x001F) >> 1) )
+
 #define RGB18_TO_ARGB(pixel)   ( 0xFF000000 |                \
                                  (((pixel) & 0xFC00) << 10) | \
                                  (((pixel) & 0x3F00) << 4) | \
@@ -210,6 +234,14 @@
 #define RGB32_TO_ARGB(pixel)   ( 0xFF000000 | (pixel) )
 
 
+#define RGB32_TO_XRGB1555(pixel)  ( (((pixel) & 0xF80000) >> 9) | \
+                                    (((pixel) & 0x00F800) >> 6) | \
+                                    (((pixel) & 0x0000F8) >> 3) )
+
+#define RGB32_TO_XRGB4444(pixel)  ( (((pixel) & 0xF00000) >> 12) | \
+                                    (((pixel) & 0x00F000) >>  8) | \
+                                    (((pixel) & 0x0000F0) >>  4) )
+
 #define ARGB_TO_ARGB1555(pixel)  ( (((pixel) & 0x80000000) >> 16) | \
                                    (((pixel) & 0x00F80000) >>  9) | \
                                    (((pixel) & 0x0000F800) >>  6) | \
@@ -225,7 +257,13 @@
                                    (((pixel) & 0x0000F000) >>  8) | \
                                    (((pixel) & 0x000000F0) >>  4) )
 
+#define ARGB_TO_XRGB4444(pixel)  ( (((pixel) & 0x00F00000) >> 12) | \
+                                   (((pixel) & 0x0000F000) >>  8) | \
+                                   (((pixel) & 0x000000F0) >>  4) )
 
+#define ARGB_TO_XRGB1555(pixel)  ( (((pixel) & 0x00F80000) >>  9) | \
+                                   (((pixel) & 0x0000F800) >>  6) | \
+                                   (((pixel) & 0x000000F8) >>  3) )
 /* RGB <-> YCbCr conversion */
 
 extern const u16 y_for_rgb[256];
diff -urN DirectFB-1.0.0.orig/src/gfx/generic/generic.c
DirectFB-1.0.0_new/src/gfx/generic/generic.c
--- DirectFB-1.0.0.orig/src/gfx/generic/generic.c       2007-03-14
08:33:48.000000000 +0000
+++ DirectFB-1.0.0_new/src/gfx/generic/generic.c        2007-03-21
14:17:53.000000000 +0000
@@ -93,7 +93,7 @@
 #define Bop_PFI_OP_Aop_PFI( op ) Bop_16_##op##_Aop
 #include "template_colorkey_16.h"
 
-/* ARGB1555 */
+/* ARGB1555 / XRGB1555*/
 #define RGB_MASK 0x7fff
 #define Cop_OP_Aop_PFI( op ) Cop_##op##_Aop_15
 #define Bop_PFI_OP_Aop_PFI( op ) Bop_15_##op##_Aop
@@ -105,7 +105,7 @@
 #define Bop_PFI_OP_Aop_PFI( op ) Bop_14_##op##_Aop
 #include "template_colorkey_16.h"
 
-/* ARGB4444 */
+/* ARGB4444 / XRGB4444*/
 #define RGB_MASK 0x0fff
 #define Cop_OP_Aop_PFI( op ) Cop_##op##_Aop_12
 #define Bop_PFI_OP_Aop_PFI( op ) Bop_12_##op##_Aop
@@ -153,6 +153,24 @@
 #define B_MASK 0x001f
 #include "template_acc_16.h"
 
+/* XRGB1555 */
+#define EXPAND_Ato8( a ) 0xFF
+#define EXPAND_Rto8( r ) EXPAND_5to8( r )
+#define EXPAND_Gto8( g ) EXPAND_5to8( g )
+#define EXPAND_Bto8( b ) EXPAND_5to8( b )
+#define PIXEL_OUT( a, r, g, b ) PIXEL_XRGB1555( r, g, b )
+#define Sop_PFI_OP_Dacc( op ) Sop_xrgb1555_##op##_Dacc
+#define Sacc_OP_Aop_PFI( op ) Sacc_##op##_Aop_xrgb1555
+#define A_SHIFT 0
+#define R_SHIFT 10
+#define G_SHIFT 5
+#define B_SHIFT 0
+#define A_MASK 0
+#define R_MASK 0x7c00
+#define G_MASK 0x03e0
+#define B_MASK 0x001f
+#include "template_acc_16.h"
+
 /* ARGB2554 */
 #define EXPAND_Ato8( a ) EXPAND_2to8( a )
 #define EXPAND_Rto8( r ) EXPAND_5to8( r )
@@ -189,6 +207,24 @@
 #define B_MASK 0x000f
 #include "template_acc_16.h"
 
+/* XRGB4444 */
+#define EXPAND_Ato8( a ) 0xFF
+#define EXPAND_Rto8( r ) EXPAND_4to8( r )
+#define EXPAND_Gto8( g ) EXPAND_4to8( g )
+#define EXPAND_Bto8( b ) EXPAND_4to8( b )
+#define PIXEL_OUT( a, r, g, b ) PIXEL_XRGB4444( r, g, b )
+#define Sop_PFI_OP_Dacc( op ) Sop_xrgb4444_##op##_Dacc
+#define Sacc_OP_Aop_PFI( op ) Sacc_##op##_Aop_xrgb4444
+#define A_SHIFT 0
+#define R_SHIFT 8
+#define G_SHIFT 4
+#define B_SHIFT 0
+#define A_MASK 0
+#define R_MASK 0x0f00
+#define G_MASK 0x00f0
+#define B_MASK 0x000f
+#include "template_acc_16.h"
+
 /* ARGB */
 #define EXPAND_Ato8( a ) (a)
 #define EXPAND_Rto8( r ) (r)
@@ -410,6 +446,9 @@
      Cop_to_Aop_18,      /* DSPF_ARGB1666 */
      Cop_to_Aop_18,      /* DSPF_ARGB6666 */
      Cop_to_Aop_18,      /* DSPF_RGB18 */
+     NULL,               /* DSPF_LUT2 */
+     Cop_to_Aop_16,      /* DSPF_XRGB4444 */
+     Cop_to_Aop_16,      /* DSPF_XRGB1555 */
 };
 
 /********************************* Cop_toK_Aop_PFI
****************************/
@@ -545,6 +584,9 @@
      Cop_toK_Aop_18,          /* DSPF_ARGB1666 */
      Cop_toK_Aop_18,          /* DSPF_ARGB6666 */
      Cop_toK_Aop_18,          /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Cop_toK_Aop_12,          /* DSPF_XRGB4444 */
+     Cop_toK_Aop_15,          /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_to_Aop_PFI
*************************/
@@ -616,6 +658,9 @@
      Bop_24_to_Aop,      /* DSPF_ARGB1666 */
      Bop_24_to_Aop,      /* DSPF_ARGB6666 */
      Bop_24_to_Aop,      /* DSPF_RGB18 */
+     NULL,               /* DSPF_LUT2 */
+     Bop_16_to_Aop,      /* DSPF_XRGB4444 */
+     Bop_16_to_Aop,      /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_Kto_Aop_PFI
************************/
@@ -824,6 +869,9 @@
      Bop_rgb18_Kto_Aop,       /* DSPF_ARGB1666 */
      Bop_rgb18_Kto_Aop,       /* DSPF_ARGB6666 */
      Bop_rgb18_Kto_Aop,       /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Bop_12_Kto_Aop,          /* DSPF_XRGB4444 */
+     Bop_15_Kto_Aop,          /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_toK_Aop_PFI
************************/
@@ -958,6 +1006,9 @@
      Bop_rgb18_toK_Aop,       /* DSPF_ARGB1666 */
      Bop_rgb18_toK_Aop,       /* DSPF_ARGB6666 */
      Bop_rgb18_toK_Aop,       /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Bop_12_toK_Aop,          /* DSPF_XRGB4444 */
+     Bop_15_toK_Aop,          /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_KtoK_Aop_PFI
***********************/
@@ -988,6 +1039,9 @@
      NULL,                    /* DSPF_ARGB1666 */
      NULL,                    /* DSPF_ARGB6666 */
      NULL,                    /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Bop_12_KtoK_Aop,         /* DSPF_XRGB4444 */
+     Bop_15_KtoK_Aop,         /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_Sto_Aop_PFI
************************/
@@ -1230,6 +1284,8 @@
      Bop_24_Sto_Aop,          /* DSPF_ARGB1666 */
      Bop_24_Sto_Aop,          /* DSPF_ARGB6666 */
      Bop_24_Sto_Aop,          /* DSPF_RGB18 */
+     Bop_16_Sto_Aop,          /* DSPF_ARGB4444 */
+     Bop_16_Sto_Aop,          /* DSPF_ARGB1555 */
 };
 
 /********************************* Bop_PFI_SKto_Aop_PFI
***********************/
@@ -1481,6 +1537,9 @@
      Bop_rgb18_SKto_Aop,      /* DSPF_ARGB1666 */
      Bop_rgb18_SKto_Aop,      /* DSPF_ARGB6666 */
      Bop_rgb18_SKto_Aop,      /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Bop_12_SKto_Aop,         /* DSPF_XRGB4444 */
+     Bop_15_SKto_Aop,         /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_StoK_Aop_PFI
***********************/
@@ -1511,6 +1570,9 @@
      NULL,                    /* DSPF_ARGB1666 */
      NULL,                    /* DSPF_ARGB6666 */
      NULL,                    /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Bop_12_StoK_Aop,         /* DSPF_XRGB4444 */
+     Bop_15_StoK_Aop,         /* DSPF_XRGB1555 */
 };
 
 /********************************* Bop_PFI_SKtoK_Aop_PFI
**********************/
@@ -1541,6 +1603,9 @@
      NULL,                    /* DSPF_ARGB1666 */
      NULL,                    /* DSPF_ARGB6666 */
      NULL,                    /* DSPF_RGB18 */
+     NULL,                    /* DSPF_LUT2 */
+     Bop_12_SKtoK_Aop,        /* DSPF_XRGB4444 */
+     Bop_15_SKtoK_Aop,        /* DSPF_XRGB1555 */
 };
 
 /********************************* Sop_PFI_Sto_Dacc
***************************/
@@ -1932,6 +1997,9 @@
      Sop_argb1666_Sto_Dacc,        /* DSPF_ARGB1666 */
      Sop_argb6666_Sto_Dacc,        /* DSPF_ARGB6666 */
      Sop_rgb18_Sto_Dacc,           /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sop_xrgb4444_Sto_Dacc,        /* DSPF_XRGB4444 */
+     Sop_xrgb1555_Sto_Dacc,        /* DSPF_XRGB1555 */
 };
 
 /********************************* Sop_PFI_SKto_Dacc
**************************/
@@ -2347,6 +2415,9 @@
      Sop_argb1666_SKto_Dacc,       /* DSPF_ARGB1666 */
      Sop_argb6666_SKto_Dacc,       /* DSPF_ARGB6666 */
      Sop_rgb18_SKto_Dacc,          /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sop_xrgb4444_SKto_Dacc,       /* DSPF_XRGB4444 */
+     Sop_xrgb1555_SKto_Dacc,       /* DSPF_XRGB1555 */
 };
 
 /********************************* Sop_PFI_to_Dacc
****************************/
@@ -2710,6 +2781,9 @@
      Sop_argb1666_to_Dacc,         /* DSPF_ARGB1666 */
      Sop_argb6666_to_Dacc,         /* DSPF_ARGB6666 */
      Sop_rgb18_to_Dacc,            /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sop_xrgb4444_to_Dacc,         /* DSPF_XRGB4444 */
+     Sop_xrgb1555_to_Dacc,         /* DSPF_XRGB1555 */
 };
 
 /********************************* Sop_PFI_Kto_Dacc
***************************/
@@ -3102,6 +3176,9 @@
      Sop_argb6666_Kto_Dacc,        /* DSPF_ARGB1666 */
      Sop_argb1666_Kto_Dacc,        /* DSPF_ARGB6666 */
      Sop_rgb18_Kto_Dacc,           /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sop_xrgb4444_Kto_Dacc,        /* DSPF_XRGB4444 */
+     Sop_xrgb1555_Kto_Dacc,        /* DSPF_XRGB1555 */
 };
 
 /********************************* Sacc_to_Aop_PFI
****************************/
@@ -3609,6 +3686,9 @@
      Sacc_to_Aop_argb1666,         /* DSPF_ARGB1666 */
      Sacc_to_Aop_argb6666,         /* DSPF_ARGB6666 */
      Sacc_to_Aop_rgb18,            /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sacc_to_Aop_xrgb4444,         /* DSPF_XRGB4444 */
+     Sacc_to_Aop_xrgb1555,         /* DSPF_XRGB1555 */
 };
 
 /********************************* Sacc_Sto_Aop_PFI
***************************/
@@ -4162,6 +4242,9 @@
      Sacc_Sto_Aop_argb1666,        /* DSPF_ARGB1666 */
      Sacc_Sto_Aop_argb6666,        /* DSPF_ARGB6666 */
      Sacc_Sto_Aop_rgb18,           /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sacc_Sto_Aop_xrgb4444,        /* DSPF_XRGB4444 */
+     Sacc_Sto_Aop_xrgb1555,        /* DSPF_XRGB1555 */
 };
 
 /********************************* Sacc_toK_Aop_PFI
***************************/
@@ -4498,6 +4581,9 @@
      Sacc_toK_Aop_argb1666,        /* DSPF_ARGB1666 */
      Sacc_toK_Aop_argb6666,        /* DSPF_ARGB6666 */
      Sacc_toK_Aop_rgb18,           /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sacc_toK_Aop_xrgb4444,        /* DSPF_XRGB4444 */
+     Sacc_toK_Aop_xrgb1555,        /* DSPF_XRGB1555 */
 };
 
 /********************************* Sacc_StoK_Aop_PFI
**************************/
@@ -4528,6 +4614,9 @@
      NULL,                         /* DSPF_ARGB1666 */
      NULL,                         /* DSPF_ARGB6666 */
      NULL,                         /* DSPF_RGB18 */
+     NULL,                         /* DSPF_LUT2 */
+     Sacc_StoK_Aop_xrgb4444,       /* DSPF_XRGB4444 */
+     Sacc_StoK_Aop_xrgb1555,       /* DSPF_XRGB1555 */
 };
 
 /************** Bop_a8_set_alphapixel_Aop_PFI
*********************************/
@@ -5039,6 +5128,8 @@
      Bop_a8_set_alphapixel_Aop_argb1666,          /* DSPF_ARGB1666 */
      Bop_a8_set_alphapixel_Aop_argb6666,          /* DSPF_ARGB6666 */
      Bop_a8_set_alphapixel_Aop_rgb18,             /* DSPF_RGB18 */
+     NULL,                                        /* DSPF_ARGB4444 */
+     NULL,                                        /* DSPF_ARGB1555 */
 };
 
 /************** Bop_a1_set_alphapixel_Aop_PFI
*********************************/
@@ -5057,7 +5148,6 @@
      }
 }
 
-
 static void Bop_a1_set_alphapixel_Aop_rgb16( GenefxState *gfxs )
 {
      int    i;
@@ -5337,13 +5427,16 @@
      NULL,                                        /* DSPF_A4 */
      Bop_a1_set_alphapixel_Aop_argb1666,          /* DSPF_ARGB1666 */
      Bop_a1_set_alphapixel_Aop_argb6666,          /* DSPF_ARGB6666 */
-     Bop_a1_set_alphapixel_Aop_rgb18              /* DSPF_RGB18 */
+     Bop_a1_set_alphapixel_Aop_rgb18,             /* DSPF_RGB18 */
+     NULL,                                        /* DSPF_LUT2 */
+     NULL,                                        /* DSPF_XRGB4444 */
+     NULL,                                        /* DSPF_XRGB1555 */
 };
 
 
 /**************************** Bop_translate_to_Aop
****************************/
 
-static void Bop_lut2_translate_to_Aop_lut8( GenefxState *gfxs )
+static void Bop_DSPF_LUT2_translate_to_Aop_lut8( GenefxState *gfxs )
 {
      int  i;
      int  w = gfxs->length;
@@ -6059,6 +6152,9 @@
      NULL,                                             /* DSPF_ARGB1666 */
      NULL,                                             /* DSPF_ARGB6666 */
      NULL,                                             /* DSPF_RGB18 */
+     NULL,                                             /* DSPF_LUT2 */
+     NULL,                                             /* DSPF_XRGB4444 */
+     NULL,                                             /* DSPF_XRGB1555 */
 };
 
 /* A8/A1 to YCbCr */
@@ -6505,7 +6601,7 @@
                gfxs->Cop = gfxs->YCop;
                dst_ycbcr = true;
                break;
-          case DSPF_LUT2:
+          case DSPF_DSPF_LUT2:
           case DSPF_LUT8:
                gfxs->Cop  = state->color_index;
                gfxs->Alut = destination->palette;
@@ -6526,6 +6622,12 @@
                gfxs->Cop = PIXEL_AYUV( color.a, gfxs->YCop, gfxs->CbCop,
gfxs->CrCop );
                dst_ycbcr = true;
                break;
+          case DSPF_XRGB4444:
+               gfxs->Cop = PIXEL_XRGB4444( color.r, color.g, color.b );
+               break;
+          case DSPF_XRGB1555:
+               gfxs->Cop = PIXEL_XRGB1555( color.r, color.g, color.b );
+               break;
           default:
                D_ONCE("unsupported destination format");
                return false;
@@ -6533,7 +6635,7 @@
 
      if (DFB_BLITTING_FUNCTION( accel )) {
           switch (gfxs->src_format) {
-               case DSPF_LUT2:
+               case DSPF_DSPF_LUT2:
                case DSPF_LUT8:
                case DSPF_ALUT44:
                     gfxs->Blut = source->palette;
@@ -6549,6 +6651,8 @@
                case DSPF_ARGB:
                case DSPF_AiRGB:
                case DSPF_RGB332:
+               case DSPF_XRGB4444:
+               case DSPF_XRGB1555:
                     if (dst_ycbcr &&
                         state->blittingflags & (DSBLIT_COLORIZE |
                                                 DSBLIT_SRC_PREMULTCOLOR))
@@ -7055,10 +7159,10 @@
                          gfxs->num_trans = state->num_translation;
 
                          switch (gfxs->src_format) {
-                              case DSPF_LUT2:
+                              case DSPF_DSPF_LUT2:
                                    switch (gfxs->dst_format) {
                                         case DSPF_LUT8:
-                                             *funcs++ =
Bop_lut2_translate_to_Aop_lut8;
+                                             *funcs++ =
Bop_DSPF_LUT2_translate_to_Aop_lut8;
                                              break;
 
                                         default:
diff -urN DirectFB-1.0.0.orig/src/idirectfb.c
DirectFB-1.0.0_new/src/idirectfb.c
--- DirectFB-1.0.0.orig/src/idirectfb.c 2007-03-14 08:33:48.000000000 +0000
+++ DirectFB-1.0.0_new/src/idirectfb.c  2007-03-15 15:32:12.000000000 +0000
@@ -483,6 +483,8 @@
           case DSPF_NV12:
           case DSPF_NV21:
           case DSPF_NV16:
+          case DSPF_XRGB4444:
+          case DSPF_XRGB1555:
                break;
 
           default:
diff -urN DirectFB-1.0.0.orig/src/misc/conf.c
DirectFB-1.0.0_new/src/misc/conf.c
--- DirectFB-1.0.0.orig/src/misc/conf.c 2007-03-14 08:33:48.000000000 +0000
+++ DirectFB-1.0.0_new/src/misc/conf.c  2007-03-15 15:41:16.000000000 +0000
@@ -192,7 +192,9 @@
      { "RGB332",   DSPF_RGB332   },
      { "UYVY",     DSPF_UYVY     },
      { "YUY2",     DSPF_YUY2     },
-     { "YV12",     DSPF_YV12     }
+     { "YV12",     DSPF_YV12     },
+     { "XRGB4444", DSPF_XRGB4444 },
+     { "XRGB1555", DSPF_XRGB1555 }
 };
 
 #define NUM_FORMAT_STRINGS (sizeof(format_strings) / sizeof(FormatString))
diff -urN DirectFB-1.0.0.orig/src/misc/gfx_util.c
DirectFB-1.0.0_new/src/misc/gfx_util.c
--- DirectFB-1.0.0.orig/src/misc/gfx_util.c     2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/src/misc/gfx_util.c      2007-03-15 15:32:12.000000000
+0000
@@ -434,6 +434,16 @@
                }  
                break;
 
+          case DSPF_XRGB1555:
+               for (i = 0; i < len; i++)
+                    ((u16*)d)[i] = ARGB_TO_XRGB1555( src[i] );
+               break;
+
+          case DSPF_XRGB4444:
+               for (i = 0; i < len; i++)
+                    ((u16*)d)[i] = ARGB_TO_XRGB4444( src[i] );
+               break;
+
           default:
                D_ONCE( "unimplemented destination format (0x%08x)",
dst_surface->format );
                break;
diff -urN DirectFB-1.0.0.orig/systems/fbdev/fbdev.c
DirectFB-1.0.0_new/systems/fbdev/fbdev.c
--- DirectFB-1.0.0.orig/systems/fbdev/fbdev.c   2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/systems/fbdev/fbdev.c    2007-03-15 15:32:12.000000000
+0000
@@ -1520,23 +1520,29 @@
                if (fbdev_compatible_format( var, 0, 3, 3, 2, 0, 5, 2, 0
))*/
 
                return DSPF_RGB332;
-
           case 15:
-               if (dfb_fbdev_compatible_format( var, 0, 5, 5, 5, 0, 10, 5,
0 ) |
-                   dfb_fbdev_compatible_format( var, 1, 5, 5, 5,15, 10, 5,
0 ) )
-                    return DSPF_ARGB1555;
+               if (dfb_fbdev_compatible_format( var, 0, 5, 5, 5, 0, 10, 5,
0 ))
+                    return DSPF_XRGB1555;
+
+               if(dfb_fbdev_compatible_format( var, 1, 5, 5, 5, 15, 10, 5,
0 ))
+                   return DSPF_ARGB1555;
 
                break;
 
-          case 16:
-               if (dfb_fbdev_compatible_format( var, 0, 5, 5, 5, 0, 10, 5,
0 ) |
-                   dfb_fbdev_compatible_format( var, 1, 5, 5, 5,15, 10, 5,
0 ) )
-                    return DSPF_ARGB1555;
+         case 16:
+
+               if (dfb_fbdev_compatible_format( var, 0, 5, 5, 5, 0, 10, 5,
0 ))
+                    return DSPF_XRGB1555;
+
+               if(dfb_fbdev_compatible_format( var, 1, 5, 5, 5, 15, 10, 5,
0 ))
+                   return DSPF_ARGB1555;
 
-               if (dfb_fbdev_compatible_format( var, 0, 4, 4, 4,  0, 8, 4,
0 ) |
-                   dfb_fbdev_compatible_format( var, 4, 4, 4, 4, 12, 8, 4,
0 ) )
+               if (dfb_fbdev_compatible_format( var, 4, 4, 4, 4, 12, 8, 4,
0 ))
                     return DSPF_ARGB4444;
 
+               if (dfb_fbdev_compatible_format( var, 0, 4, 4, 4, 0, 8, 4, 0
))
+                    return DSPF_XRGB4444;
+
                if (dfb_fbdev_compatible_format( var, 0, 5, 6, 5, 0, 11, 5,
0 ))
                     return DSPF_RGB16;
 
@@ -1694,6 +1700,15 @@
                     var.blue.offset   = 0;
                     break;
 
+               case DSPF_XRGB1555:
+                    var.red.length    = 5;
+                    var.green.length  = 5;
+                    var.blue.length   = 5;
+                    var.red.offset    = 10;
+                    var.green.offset  = 5;
+                    var.blue.offset   = 0;
+                    break;
+
                case DSPF_ARGB4444:
                     var.transp.length = 4;
                     var.red.length    = 4;
@@ -1705,6 +1720,24 @@
                     var.blue.offset   = 0;
                     break;
 
+              case DSPF_XRGB4444:
+                    var.red.length = 4;
+                    var.green.length = 4;
+                    var.blue.length = 4;
+                    var.red.offset = 8;
+                    var.green.offset = 4;
+                    var.blue.offset =  0;
+                    break;
+
+              case DSPF_RGB32:
+                   var.red.length    = 8;
+                   var.green.length  = 8;
+                   var.blue.length   = 8;
+                   var.red.offset    = 16;
+                   var.green.offset  = 8;
+                   var.blue.offset   = 0;
+                   break;
+
                case DSPF_RGB16:
                     var.red.length    = 5;
                     var.green.length  = 6;
@@ -1728,7 +1761,6 @@
 
                case DSPF_LUT8:
                case DSPF_RGB24:
-               case DSPF_RGB32:
                case DSPF_RGB332:
                     break;
 
@@ -2160,10 +2192,13 @@
 
      switch (format) {
           case DSPF_ARGB1555:
+          case DSPF_XRGB1555:
                red_size   = 32;
                green_size = 32;
                blue_size  = 32;
                break;
+          case DSPF_ARGB4444:
+          case DSPF_XRGB4444:
           case DSPF_RGB16:
                red_size   = 32;
                green_size = 64;
diff -urN DirectFB-1.0.0.orig/wm/default/default.c
DirectFB-1.0.0_new/wm/default/default.c
--- DirectFB-1.0.0.orig/wm/default/default.c    2007-03-14 08:33:48.000000000
+0000
+++ DirectFB-1.0.0_new/wm/default/default.c     2007-03-15 15:41:30.000000000
+0000
@@ -449,7 +449,15 @@
                                                         pitch * wy);
                                         break;
 
+                                   case DSPF_ARGB4444:
+                                   case DSPF_XRGB4444:
+                                        pixel = *(u16*)(data + 2 * wx +
+                                                        pitch * wy)
+                                                & 0xfff;
+                                        break;
+
                                    case DSPF_ARGB1555:
+                                   case DSPF_XRGB1555:
                                         pixel = *(u16*)(data + 2 * wx +
                                                         pitch * wy)
                                                 & 0x7fff;

http://www.nabble.com/file/7333/extra_pixel_formats_3.patch
extra_pixel_formats_3.patch 
-- 
View this message in context: 
http://www.nabble.com/Extra-Pixel-Format-Support-tf3394922.html#a9611771
Sent from the DirectFB Dev mailing list archive at Nabble.com.


_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to