hi,
I have a patch for unichrome(CX700, CX700M, CX700M2), which enable
hardware accelated StretchBlit (YUV->RGB).
NOTE:
1. this patch is against 1.0.1. for 1.1 and later, I think it should work.
since the unichrome driver have no change a long time.
2. this patch work well with VIA's viafb:
http://www.viaarena.com/Driver/linux-fbdev-kernel-src_2.6.00.03a.tgz
Thanks for your good work with DirectFB. :-)
diff -urp unichrome.orig/regs3d.h unichrome/regs3d.h
--- unichrome.orig/regs3d.h 2007-08-08 03:43:00.000000000 +0800
+++ unichrome/regs3d.h 2007-11-21 13:29:50.000000000 +0800
@@ -1019,6 +1019,7 @@
#define HC_HTXnFM_VU88 (HC_HTXnFM_BUMPMAP | 0x00000000)
#define HC_HTXnFM_LVU655 (HC_HTXnFM_BUMPMAP | 0x00010000)
#define HC_HTXnFM_LVU888 (HC_HTXnFM_BUMPMAP | 0x00020000)
+#define HC_HTXnFM_YUY2 0x00300000
#define HC_HTXnLoc_Local 0x00000000
#define HC_HTXnLoc_Sys 0x00000002
#define HC_HTXnLoc_AGP 0x00000003
diff -urp unichrome.orig/uc_accel.c unichrome/uc_accel.c
--- unichrome.orig/uc_accel.c 2007-08-08 03:43:00.000000000 +0800
+++ unichrome/uc_accel.c 2007-11-21 13:29:50.000000000 +0800
@@ -73,11 +73,14 @@ void uc_flush_texture_cache(void* drv, v
(void) ucdev;
- UC_FIFO_PREPARE(fifo, 4);
+ UC_FIFO_PREPARE(fifo, 16);
UC_FIFO_ADD_HDR(fifo, (HC_ParaType_Tex << 16) | (HC_SubType_TexGeneral <<
24));
- UC_FIFO_ADD_3D(fifo, HC_SubA_HTXSMD, HC_HTXCHCLR_MASK);
- UC_FIFO_ADD_3D(fifo, HC_SubA_HTXSMD, 0);
+ UC_FIFO_ADD (fifo, 0x00000002);
+
+ UC_FIFO_ADD (fifo, 0x0113000d);
+ UC_FIFO_ADD (fifo, 0x02ed1316);
+ UC_FIFO_ADD (fifo, 0x03071000);
UC_FIFO_CHECK(fifo);
}
Only in unichrome: uc_accel.c~
diff -urp unichrome.orig/uc_hw.h unichrome/uc_hw.h
--- unichrome.orig/uc_hw.h 2007-08-08 03:43:00.000000000 +0800
+++ unichrome/uc_hw.h 2007-11-21 13:29:50.000000000 +0800
@@ -48,6 +48,7 @@ static inline int uc_map_src_format_3d(
case DSPF_AiRGB: return HC_HTXnFM_ARGB8888; // limited support
case DSPF_A8: return HC_HTXnFM_A8;
case DSPF_LUT8: return HC_HTXnFM_Index8;
+ case DSPF_YUY2: return HC_HTXnFM_YUY2;
default:
D_BUG( "unexpected pixel format" );
diff -urp unichrome.orig/uc_probe.h unichrome/uc_probe.h
--- unichrome.orig/uc_probe.h 2007-08-08 03:43:00.000000000 +0800
+++ unichrome/uc_probe.h 2008-01-01 05:10:56.000000000 +0800
@@ -15,7 +15,7 @@
#endif
#ifndef FB_ACCEL_VIA_UNICHROME
-#define FB_ACCEL_VIA_UNICHROME 77
+#define FB_ACCEL_VIA_UNICHROME 50
#endif
struct uc_via_chipinfo
@@ -35,6 +35,8 @@ static struct uc_via_chipinfo uc_via_dev
{0x7204, "K8M800/UniChrome Pro"}, // aka VT3204, Unichrome Pro B
{0x3118, "CN400/UniChrome Pro"}, // aka VT3259, PM8?0, Unichrome Pro A
{0x3344, "CN700/Unichrome Pro"}, // aka VT3314, P4M800Pro, VN800, CN900
+ {0x3157, "CX700/Unichrome Pro"}, // aka CX700 CX700M CX700M2
{0, ""}
};
diff -urp unichrome.orig/uc_state.c unichrome/uc_state.c
--- unichrome.orig/uc_state.c 2007-08-08 03:43:00.000000000 +0800
+++ unichrome/uc_state.c 2007-11-21 13:29:50.000000000 +0800
@@ -83,6 +83,7 @@ uc_has_src_format_3d( DFBSurfacePixelFor
case DSPF_ARGB:
case DSPF_A8:
case DSPF_LUT8:
+ case DSPF_YUY2:
return true;
default:
--
Deng XueFeng <[EMAIL PROTECTED]>
_______________________________________________
directfb-dev mailing list
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev