summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-libs/DirectFB/ChangeLog7
-rw-r--r--dev-libs/DirectFB/DirectFB-0.9.20.ebuild16
-rw-r--r--dev-libs/DirectFB/files/DirectFB-0.9.20-64bit.diff117
-rw-r--r--dev-libs/DirectFB/files/DirectFB-0.9.20-simd-amd64.diff183
4 files changed, 320 insertions, 3 deletions
diff --git a/dev-libs/DirectFB/ChangeLog b/dev-libs/DirectFB/ChangeLog
index 3a8c82f17de6..40b6f3ce2fa5 100644
--- a/dev-libs/DirectFB/ChangeLog
+++ b/dev-libs/DirectFB/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for dev-libs/DirectFB
# Copyright 2002-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/DirectFB/ChangeLog,v 1.39 2004/04/18 15:07:29 lv Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/DirectFB/ChangeLog,v 1.40 2004/05/05 01:05:08 lv Exp $
+
+ 04 May 2004; Travis Tilley <lv@gentoo.org>
+ +files/DirectFB-0.9.20-64bit.diff, +files/DirectFB-0.9.20-simd-amd64.diff,
+ DirectFB-0.9.20.ebuild:
+ added misc 64bit fixes and enabled simd optimisations for amd64
18 Apr 2004; Travis Tilley <lv@gentoo.org> DirectFB-0.9.20.ebuild:
marking as stable on amd64
diff --git a/dev-libs/DirectFB/DirectFB-0.9.20.ebuild b/dev-libs/DirectFB/DirectFB-0.9.20.ebuild
index a0b0bddf05c6..3da038a8a3e5 100644
--- a/dev-libs/DirectFB/DirectFB-0.9.20.ebuild
+++ b/dev-libs/DirectFB/DirectFB-0.9.20.ebuild
@@ -1,8 +1,8 @@
# Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/DirectFB/DirectFB-0.9.20.ebuild,v 1.14 2004/04/18 15:07:29 lv Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/DirectFB/DirectFB-0.9.20.ebuild,v 1.15 2004/05/05 01:05:08 lv Exp $
-inherit eutils
+inherit eutils 64-bit
IUSE_VIDEO_CARDS="ati128 cle266 cyber5k i810 matrox neomagic nsc nvidia radeon savage tdfx"
@@ -34,6 +34,16 @@ src_unpack() {
unpack ${A}
cd ${S}
epatch ${FILESDIR}/${PV}-linux-2.6.patch
+
+ # This patch changes ints to longs where appropriate
+ 64-bit && epatch ${FILESDIR}/DirectFB-0.9.20-64bit.diff
+
+ # This patch enables simd optimisations for amd64. Since mmx and sse are
+ # masked USE flags on amd64 due to their enabling x86 specific asm more
+ # often than not, we'll just enable them by default. All x86_64 cpus
+ # should support mmx and see. Travis Tilley <lv@gentoo.org>
+ use amd64 && epatch ${FILESDIR}/DirectFB-0.9.20-simd-amd64.diff
+
sed -i 's:wm97xx_ts=yes:wm97xx_ts=no:' configure #36924
}
@@ -52,6 +62,8 @@ src_compile() {
econf CPPFLAGS="${mycppflags}" \
`use_enable mmx` \
`use_enable sse` \
+ `use_enable amd64 mmx` \
+ `use_enable amd64 sse` \
`use_enable mpeg libmpeg3` \
`use_enable jpeg` \
`use_enable png` \
diff --git a/dev-libs/DirectFB/files/DirectFB-0.9.20-64bit.diff b/dev-libs/DirectFB/files/DirectFB-0.9.20-64bit.diff
new file mode 100644
index 000000000000..b614eed12d68
--- /dev/null
+++ b/dev-libs/DirectFB/files/DirectFB-0.9.20-64bit.diff
@@ -0,0 +1,117 @@
+diff -urN DirectFB-0.9.20.orig/interfaces/IDirectFBFont/idirectfbfont_default.c DirectFB-0.9.20/interfaces/IDirectFBFont/idirectfbfont_default.c
+--- DirectFB-0.9.20.orig/interfaces/IDirectFBFont/idirectfbfont_default.c 2003-07-08 18:25:48.000000000 +0200
++++ DirectFB-0.9.20/interfaces/IDirectFBFont/idirectfbfont_default.c 2004-01-08 23:32:07.000000000 +0100
+@@ -147,7 +147,7 @@
+ else
+ key = index;
+
+- dfb_tree_insert (font->glyph_infos, (void*) key, data);
++ dfb_tree_insert (font->glyph_infos, (void*)(unsigned long)key, data);
+
+ start = i + 1;
+ index++;
+@@ -165,7 +165,7 @@
+ else
+ key = index;
+
+- dfb_tree_insert (font->glyph_infos, (void*) key, data);
++ dfb_tree_insert (font->glyph_infos, (void*) (unsigned long)key, data);
+ }
+
+ dfb_surface_soft_lock( surface, DSLF_WRITE, &dst, &pitch, 0 );
+diff -urN DirectFB-0.9.20.orig/interfaces/IDirectFBFont/idirectfbfont_ft2.c DirectFB-0.9.20/interfaces/IDirectFBFont/idirectfbfont_ft2.c
+--- DirectFB-0.9.20.orig/interfaces/IDirectFBFont/idirectfbfont_ft2.c 2003-08-25 19:10:53.000000000 +0200
++++ DirectFB-0.9.20/interfaces/IDirectFBFont/idirectfbfont_ft2.c 2004-01-08 23:30:27.000000000 +0100
+@@ -120,7 +120,7 @@
+ else
+ index = FT_Get_Char_Index( face, glyph );
+
+- load_flags = (FT_Int) face->generic.data;
++ load_flags = (FT_Int)(unsigned long) face->generic.data;
+ load_flags |= FT_LOAD_RENDER;
+
+ if ((err = FT_Load_Glyph( face, index, load_flags ))) {
+@@ -225,7 +225,7 @@
+ else
+ index = FT_Get_Char_Index( face, glyph );
+
+- load_flags = (FT_Int) face->generic.data;
++ load_flags = (FT_Int)(unsigned long) face->generic.data;
+
+ if ((err = FT_Load_Glyph( face, index, load_flags ))) {
+ HEAVYDEBUGMSG( "DirectB/FontFT2: "
+@@ -530,7 +530,7 @@
+ }
+ }
+
+- face->generic.data = (void *) load_flags;
++ face->generic.data = (void *)(unsigned long) load_flags;
+ face->generic.finalizer = NULL;
+
+ font = dfb_font_create();
+diff -urN DirectFB-0.9.20.orig/src/core/colorhash.c DirectFB-0.9.20/src/core/colorhash.c
+--- DirectFB-0.9.20.orig/src/core/colorhash.c 2003-10-01 14:02:21.000000000 +0200
++++ DirectFB-0.9.20/src/core/colorhash.c 2004-01-08 23:30:27.000000000 +0100
+@@ -182,7 +182,7 @@
+ {
+ Colorhash *hash;
+ unsigned int pixel = PIXEL_ARGB(a, r, g, b);
+- unsigned int index = (pixel ^ (unsigned int) palette) % HASH_SIZE;
++ unsigned int index = (pixel ^ (unsigned long) palette) % HASH_SIZE;
+
+ DFB_ASSERT( hash_field != NULL );
+ DFB_ASSERT( hash_field->hash != NULL );
+diff -urN DirectFB-0.9.20.orig/src/core/fbdev/fbdev.c DirectFB-0.9.20/src/core/fbdev/fbdev.c
+--- DirectFB-0.9.20.orig/src/core/fbdev/fbdev.c 2003-10-09 04:05:57.000000000 +0200
++++ DirectFB-0.9.20/src/core/fbdev/fbdev.c 2004-01-08 23:30:27.000000000 +0100
+@@ -367,7 +367,7 @@
+ dfb_fbdev->framebuffer_base = mmap( NULL, dfb_fbdev->shared->fix.smem_len,
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ dfb_fbdev->fd, 0 );
+- if ((int)(dfb_fbdev->framebuffer_base) == -1) {
++ if ((long)(dfb_fbdev->framebuffer_base) == -1) {
+ PERRORMSG( "DirectFB/core/fbdev: "
+ "Could not mmap the framebuffer!\n");
+ SHFREE( dfb_fbdev->shared );
+diff -urN DirectFB-0.9.20.orig/src/core/fonts.c DirectFB-0.9.20/src/core/fonts.c
+--- DirectFB-0.9.20.orig/src/core/fonts.c 2003-10-13 05:58:04.000000000 +0200
++++ DirectFB-0.9.20/src/core/fonts.c 2004-01-08 23:30:27.000000000 +0100
+@@ -101,7 +101,7 @@
+ DFBResult ret;
+ CoreGlyphData *data;
+
+- if ((data = dfb_tree_lookup (font->glyph_infos, (void *)glyph)) != NULL) {
++ if ((data = dfb_tree_lookup (font->glyph_infos, (void *)(long)glyph)) != NULL) {
+ *glyph_data = data;
+ return DFB_OK;
+ }
+@@ -173,7 +173,7 @@
+ data->start = data->width = data->height = 0;
+ }
+
+- dfb_tree_insert (font->glyph_infos, (void *) glyph, data);
++ dfb_tree_insert (font->glyph_infos, (void *)(long) glyph, data);
+ }
+
+ *glyph_data = data;
+diff -urN DirectFB-0.9.20.orig/src/misc/tree.c DirectFB-0.9.20/src/misc/tree.c
+--- DirectFB-0.9.20.orig/src/misc/tree.c 2003-08-15 13:33:10.000000000 +0200
++++ DirectFB-0.9.20/src/misc/tree.c 2004-01-08 23:30:27.000000000 +0100
+@@ -76,7 +76,7 @@
+ void *value)
+ {
+ int inserted = 0;
+- int fast_key = (unsigned int) key - 32;
++ long fast_key = (unsigned long) key - 32;
+
+ if (fast_key >= 0 && fast_key < 96)
+ tree->fast_keys[fast_key] = value;
+@@ -91,7 +91,7 @@
+ void *key)
+ {
+ Node *node;
+- int fast_key = (unsigned int) key - 32;
++ long fast_key = (unsigned long) key - 32;
+
+ if (fast_key >= 0 && fast_key < 96)
+ return tree->fast_keys[fast_key];
diff --git a/dev-libs/DirectFB/files/DirectFB-0.9.20-simd-amd64.diff b/dev-libs/DirectFB/files/DirectFB-0.9.20-simd-amd64.diff
new file mode 100644
index 000000000000..8755daab0c8e
--- /dev/null
+++ b/dev-libs/DirectFB/files/DirectFB-0.9.20-simd-amd64.diff
@@ -0,0 +1,183 @@
+diff -urN DirectFB-0.9.20.orig/src/gfx/generic/generic_mmx.h DirectFB-0.9.20/src/gfx/generic/generic_mmx.h
+--- DirectFB-0.9.20.orig/src/gfx/generic/generic_mmx.h 2003-06-30 23:26:04.000000000 +0200
++++ DirectFB-0.9.20/src/gfx/generic/generic_mmx.h 2004-01-08 23:46:40.000000000 +0100
+@@ -172,15 +172,19 @@
+ "movq %%mm1, (%1)\n\t"
+ "dec %2\n\t"
+ "jz 3f\n\t"
+- "addl $8, %1\n\t"
+- "addl %4, %0\n\t"
+- "testl $0xFFFF0000, %0\n\t"
++ "add $8, %1\n\t"
++ "add %4, %0\n\t"
++ "test $0xFFFF0000, %0\n\t"
+ "jz 2b\n\t"
+- "movl %0, %%ebx\n\t"
+- "andl $0xFFFF0000, %%ebx\n\t"
+- "shrl $14, %%ebx\n\t"
++ "mov %0, %%ebx\n\t"
++ "and $0xFFFF0000, %%ebx\n\t"
++ "shr $14, %%ebx\n\t"
++#ifdef __x86_64__
++ "add %%rbx, %3\n\t"
++#else
+ "add %%ebx, %3\n\t"
+- "andl $0xFFFF, %0\n\t"
++#endif
++ "and $0xFFFF, %0\n\t"
+ "jmp 1b\n"
+ "3:\n\t"
+ "emms"
+@@ -201,8 +205,8 @@
+ "movd (%2), %%mm1\n\t"
+ "punpcklbw %%mm0, %%mm1\n\t"
+ "movq %%mm1, (%0)\n\t"
+- "addl $4, %2\n\t"
+- "addl $8, %0\n\t"
++ "add $4, %2\n\t"
++ "add $8, %0\n\t"
+ "dec %1\n\t"
+ "jnz 1b\n\t"
+ "emms"
+@@ -238,7 +242,7 @@
+ "dec %1\n\t"
+ "jz 2f\n\t"
+ "psrlq $16, %%mm0\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %0\n\t"
+ /* 2. Konvertierung nach 24 bit interleaved */
+ "movq %%mm0, %%mm3\n\t"
+ "punpcklwd %%mm3, %%mm3\n\t"
+@@ -252,7 +256,7 @@
+ "dec %1\n\t"
+ "jz 2f\n\t"
+ "psrlq $16, %%mm0\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %0\n\t"
+ /* 3. Konvertierung nach 24 bit interleaved */
+ "movq %%mm0, %%mm3\n\t"
+ "punpcklwd %%mm3, %%mm3\n\t"
+@@ -266,7 +270,7 @@
+ "dec %1\n\t"
+ "jz 2f\n\t"
+ "psrlq $16, %%mm0\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %0\n\t"
+ /* 4. Konvertierung nach 24 bit interleaved */
+ "movq %%mm0, %%mm3\n\t"
+ "punpcklwd %%mm3, %%mm3\n\t"
+@@ -279,8 +283,8 @@
+ "movq %%mm3, (%0)\n\t"
+ "dec %1\n\t"
+ "jz 2f\n\t"
+- "addl $8, %0\n\t"
+- "addl $8, %2\n\t"
++ "add $8, %0\n\t"
++ "add $8, %2\n\t"
+ "jmp 1b\n"
+ "2:\n\t"
+ "emms"
+@@ -304,8 +308,8 @@
+ "punpcklbw %%mm6, %%mm0\n\t"
+ "por %%mm7, %%mm0\n\t"
+ "movq %%mm0, (%0)\n\t"
+- "addl $4, %2\n\t"
+- "addl $8, %0\n\t"
++ "add $4, %2\n\t"
++ "add $8, %0\n\t"
+ "dec %1\n\t"
+ "jnz 1b\n\t"
+ "emms"
+@@ -322,7 +326,7 @@
+
+ __asm__ __volatile__ (
+ "movq %3, %%mm7\n\t"
+- "cmpl $0, %2\n\t"
++ "cmp $0, %2\n\t"
+ "jne 3f\n\t"
+ "movq %4, %%mm6\n\t"
+ "movd %5, %%mm0\n\t"
+@@ -341,7 +345,7 @@
+ "psrlw $8, %%mm0\n\t"
+ "movq %%mm0, (%0)\n"
+ "1:\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %0\n\t"
+ "dec %1\n\t"
+ "jnz 4b\n\t"
+ "jmp 2f\n\t"
+@@ -360,8 +364,8 @@
+ "psrlw $8, %%mm0\n\t"
+ "movq %%mm0, (%0)\n"
+ "1:\n\t"
+- "addl $8, %2\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %2\n\t"
++ "add $8, %0\n\t"
+ "dec %1\n\t"
+ "jnz 3b\n\t"
+ "2:\n\t"
+@@ -379,7 +383,7 @@
+
+ __asm__ __volatile__ (
+ "movq %3, %%mm7\n\t"
+- "cmpl $0, %2\n\t"
++ "cmp $0, %2\n\t"
+ "jne 3f\n\t"
+ "movq %4, %%mm6\n\t"
+ "movd %5, %%mm0\n\t"
+@@ -397,7 +401,7 @@
+ "psrlw $8, %%mm1\n\t"
+ "movq %%mm1, (%0)\n"
+ "1:\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %0\n\t"
+ "dec %1\n\t"
+ "jnz 4b\n\t"
+ "jmp 2f\n\t"
+@@ -415,8 +419,8 @@
+ "psrlw $8, %%mm1\n\t"
+ "movq %%mm1, (%0)\n"
+ "1:\n\t"
+- "addl $8, %2\n\t"
+- "addl $8, %0\n\t"
++ "add $8, %2\n\t"
++ "add $8, %0\n\t"
+ "dec %1\n\t"
+ "jnz 3b\n\t"
+ "2:\n\t"
+diff -urN DirectFB-0.9.20.orig/src/misc/cpu_accel.c DirectFB-0.9.20/src/misc/cpu_accel.c
+--- DirectFB-0.9.20.orig/src/misc/cpu_accel.c 2003-08-15 13:32:45.000000000 +0200
++++ DirectFB-0.9.20/src/misc/cpu_accel.c 2004-01-08 23:48:05.000000000 +0100
+@@ -57,6 +57,13 @@
+
+ #include "cpu_accel.h"
+
++#ifdef __x86_64__
++static __u32 arch_accel (void)
++{
++ return MM_ACCEL_X86_MMX | MM_ACCEL_X86_SSE | MM_ACCEL_X86_MMXEXT | MM_ACCEL_X86_SSE2 | MM_ACCEL_X86_3DNOW;
++}
++#endif
++
+ #ifdef ARCH_X86
+ static __u32 arch_accel (void)
+ {
+@@ -175,7 +182,7 @@
+
+ __u32 dfb_mm_accel (void)
+ {
+-#if defined (ARCH_X86) || (defined (ARCH_PPC) && defined (ENABLE_ALTIVEC))
++#if defined(__x86_64__) || defined (ARCH_X86) || (defined (ARCH_PPC) && defined (ENABLE_ALTIVEC))
+ static __u32 accel = ~0U;
+
+ if (accel != ~0U)
+@@ -183,7 +190,7 @@
+
+ accel = arch_accel ();
+
+-#ifdef USE_SSE
++#if defined(USE_SSE) && !defined(__x86_64__)
+
+ /* test OS support for SSE */
+ if (accel & MM_ACCEL_X86_SSE) {