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