From 5edc6b10e0d754dcb94604831bbbc7dcfddd464a Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Fri, 2 Nov 2018 15:13:15 +0000 Subject: [PATCH] directfb: fix comile on 32bit arm Signed-off-by: Arne Fitzenreiter --- lfs/directfb | 3 +- ...tFB-1.7.7-add-missing-davinci-files.patch} | 378 +++++++++--------- src/patches/DirectFB-1.7.7-fix_mknod.patch | 22 + src/patches/directfb-1.1.1-fix-mknod.patch | 26 -- 4 files changed, 223 insertions(+), 206 deletions(-) rename src/patches/{DirectFB-1.5.3-add-missing-davinci-files.patch => DirectFB-1.7.7-add-missing-davinci-files.patch} (98%) create mode 100644 src/patches/DirectFB-1.7.7-fix_mknod.patch delete mode 100644 src/patches/directfb-1.1.1-fix-mknod.patch diff --git a/lfs/directfb b/lfs/directfb index 14916e403f..8b2ff60226 100644 --- a/lfs/directfb +++ b/lfs/directfb @@ -79,7 +79,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/DirectFB-1.7.7-add-missing-davinci-files.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/DirectFB-1.7.7-fix_mknod.patch cd $(DIR_APP) && ./configure \ --prefix=/usr \ diff --git a/src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch b/src/patches/DirectFB-1.7.7-add-missing-davinci-files.patch similarity index 98% rename from src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch rename to src/patches/DirectFB-1.7.7-add-missing-davinci-files.patch index bdea601055..078754ef3a 100644 --- a/src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch +++ b/src/patches/DirectFB-1.7.7-add-missing-davinci-files.patch @@ -1,6 +1,22 @@ -diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h DirectFB-1.5.3/gfxdrivers/davinci/davinci_c64x.h ---- DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h 1969-12-31 19:00:00.000000000 -0500 -+++ DirectFB-1.5.3/gfxdrivers/davinci/davinci_c64x.h 2012-05-09 02:20:38.342006623 -0400 +From: Sebastian Ramacher +Date: Thu, 16 Mar 2017 20:53:09 +0100 +Subject: Add missing files from upstream + +Closes: #598976 +--- + gfxdrivers/davinci/davinci_c64x.h | 935 +++++++++++++++++++++++++++++++++ + gfxdrivers/davinci/davinci_gfxdriver.h | 169 ++++++ + gfxdrivers/davinci/davincifb.h | 581 ++++++++++++++++++++ + 3 files changed, 1685 insertions(+) + create mode 100644 gfxdrivers/davinci/davinci_c64x.h + create mode 100644 gfxdrivers/davinci/davinci_gfxdriver.h + create mode 100644 gfxdrivers/davinci/davincifb.h + +diff --git a/gfxdrivers/davinci/davinci_c64x.h b/gfxdrivers/davinci/davinci_c64x.h +new file mode 100644 +index 0000000..682da22 +--- /dev/null ++++ b/gfxdrivers/davinci/davinci_c64x.h @@ -0,0 +1,935 @@ +/* + TI Davinci driver - C64X+ DSP Library @@ -937,9 +953,186 @@ diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h DirectFB-1.5.3/ + +#endif + -diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h DirectFB-1.5.3/gfxdrivers/davinci/davincifb.h ---- DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h 1969-12-31 19:00:00.000000000 -0500 -+++ DirectFB-1.5.3/gfxdrivers/davinci/davincifb.h 2012-05-09 02:20:07.271230380 -0400 +diff --git a/gfxdrivers/davinci/davinci_gfxdriver.h b/gfxdrivers/davinci/davinci_gfxdriver.h +new file mode 100644 +index 0000000..4ca79b3 +--- /dev/null ++++ b/gfxdrivers/davinci/davinci_gfxdriver.h +@@ -0,0 +1,169 @@ ++/* ++ TI Davinci driver - Graphics Driver ++ ++ (c) Copyright 2007 Telio AG ++ ++ Written by Denis Oliver Kropp ++ ++ Code is derived from VMWare driver. ++ ++ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) ++ (c) Copyright 2000-2004 Convergence (integrated media) GmbH ++ ++ All rights reserved. ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, write to the ++ Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ Boston, MA 02111-1307, USA. ++*/ ++ ++#ifndef __DAVINCI_GFXDRIVER_H__ ++#define __DAVINCI_GFXDRIVER_H__ ++ ++#include ++#include ++ ++#include ++ ++#include "davincifb.h" ++ ++#include "davinci_c64x.h" ++ ++ ++typedef struct { ++ /* validation flags */ ++ int v_flags; ++ ++ /* cached/computed values */ ++ void *dst_addr; ++ unsigned long dst_phys; ++ unsigned int dst_size; ++ unsigned long dst_pitch; ++ DFBSurfacePixelFormat dst_format; ++ unsigned long dst_bpp; ++ ++ void *src_addr; ++ unsigned long src_phys; ++ unsigned long src_pitch; ++ DFBSurfacePixelFormat src_format; ++ unsigned long src_bpp; ++ ++ unsigned long source_mult; ++ ++ unsigned long fillcolor; ++ ++ int blit_blend_sub_function; ++ int draw_blend_sub_function; ++ ++ DFBColor color; ++ unsigned long color_argb; ++ unsigned long colorkey; ++ ++ DFBSurfaceBlittingFlags blitting_flags; ++ ++ DFBRegion clip; ++ ++ /** Add shared data here... **/ ++ struct fb_fix_screeninfo fix[4]; ++ ++ CoreSurfacePool *osd_pool; ++ CoreSurfacePool *video_pool; ++ ++ bool synced; ++} DavinciDeviceData; ++ ++ ++typedef struct { ++ int num; ++ int fd; ++ void *mem; ++ int size; ++} DavinciFB; ++ ++typedef struct { ++ DavinciDeviceData *ddev; ++ ++ CoreDFB *core; ++ ++ CoreScreen *screen; ++ CoreLayer *osd; ++ CoreLayer *video; ++ ++ DavinciFB fb[4]; ++ ++ DavinciC64x c64x; ++ bool c64x_present; ++ ++ DavinciC64xTasks tasks; ++} DavinciDriverData; ++ ++ ++static inline DFBResult ++davincifb_pan_display( const DavinciFB *fb, ++ struct fb_var_screeninfo *var, ++ const CoreSurfaceBufferLock *lock, ++ DFBSurfaceFlipFlags flags, ++ int x, ++ int y ) ++{ ++ int ret; ++ ++ if (lock) { ++#ifdef FBIO_SET_START ++ CoreSurfaceBuffer *buffer = lock->buffer; ++ struct fb_set_start set_start; ++ ++ /* physical mode */ ++ set_start.offset = -1; ++ set_start.sync = (flags & DSFLIP_ONSYNC) ? 1 : 0; ++ ++ /* life's so easy */ ++ set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch; ++ ++ ret = ioctl( fb->fd, FBIO_SET_START, &set_start ); ++ if (ret < 0) ++ D_DEBUG( "FBIO_SET_START (0x%08lx, sync %llu) failed!\n", ++ set_start.physical, set_start.sync ); ++ ++ if (ret == 0) { ++ if (flags & DSFLIP_WAIT) ++ ioctl( fb->fd, FBIO_WAITFORVSYNC ); ++ ++ return DFB_OK; ++ } ++ ++ /* fallback */ ++#endif ++ var->xoffset = x; /* poor version */ ++ var->yoffset = y + lock->offset / lock->pitch; ++ } ++ else { ++ var->xoffset = x; ++ var->yoffset = y; ++ } ++ ++ var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW; ++ ++ ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var ); ++ if (ret) ++ D_PERROR( "Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\n", ++ fb->num, var->xoffset, var->yoffset ); ++ ++ if (flags & DSFLIP_WAIT) ++ ioctl( fb->fd, FBIO_WAITFORVSYNC ); ++ ++ return DFB_OK; ++} ++ ++#endif +diff --git a/gfxdrivers/davinci/davincifb.h b/gfxdrivers/davinci/davincifb.h +new file mode 100644 +index 0000000..35eb169 +--- /dev/null ++++ b/gfxdrivers/davinci/davincifb.h @@ -0,0 +1,581 @@ +/* + * Copyright (C) 2006 Texas Instruments Inc @@ -1522,176 +1715,3 @@ diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h DirectFB-1.5.3/gfx +#endif /*__KERNEL__*/ + +#endif /* End of #ifndef DAVINCI_VPBE_H */ -diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_gfxdriver.h DirectFB-1.5.3/gfxdrivers/davinci/davinci_gfxdriver.h ---- DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_gfxdriver.h 1969-12-31 19:00:00.000000000 -0500 -+++ DirectFB-1.5.3/gfxdrivers/davinci/davinci_gfxdriver.h 2012-05-09 02:19:40.797421031 -0400 -@@ -0,0 +1,169 @@ -+/* -+ TI Davinci driver - Graphics Driver -+ -+ (c) Copyright 2007 Telio AG -+ -+ Written by Denis Oliver Kropp -+ -+ Code is derived from VMWare driver. -+ -+ (c) Copyright 2001-2009 The world wide DirectFB Open Source Community (directfb.org) -+ (c) Copyright 2000-2004 Convergence (integrated media) GmbH -+ -+ All rights reserved. -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the -+ Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. -+*/ -+ -+#ifndef __DAVINCI_GFXDRIVER_H__ -+#define __DAVINCI_GFXDRIVER_H__ -+ -+#include -+#include -+ -+#include -+ -+#include "davincifb.h" -+ -+#include "davinci_c64x.h" -+ -+ -+typedef struct { -+ /* validation flags */ -+ int v_flags; -+ -+ /* cached/computed values */ -+ void *dst_addr; -+ unsigned long dst_phys; -+ unsigned int dst_size; -+ unsigned long dst_pitch; -+ DFBSurfacePixelFormat dst_format; -+ unsigned long dst_bpp; -+ -+ void *src_addr; -+ unsigned long src_phys; -+ unsigned long src_pitch; -+ DFBSurfacePixelFormat src_format; -+ unsigned long src_bpp; -+ -+ unsigned long source_mult; -+ -+ unsigned long fillcolor; -+ -+ int blit_blend_sub_function; -+ int draw_blend_sub_function; -+ -+ DFBColor color; -+ unsigned long color_argb; -+ unsigned long colorkey; -+ -+ DFBSurfaceBlittingFlags blitting_flags; -+ -+ DFBRegion clip; -+ -+ /** Add shared data here... **/ -+ struct fb_fix_screeninfo fix[4]; -+ -+ CoreSurfacePool *osd_pool; -+ CoreSurfacePool *video_pool; -+ -+ bool synced; -+} DavinciDeviceData; -+ -+ -+typedef struct { -+ int num; -+ int fd; -+ void *mem; -+ int size; -+} DavinciFB; -+ -+typedef struct { -+ DavinciDeviceData *ddev; -+ -+ CoreDFB *core; -+ -+ CoreScreen *screen; -+ CoreLayer *osd; -+ CoreLayer *video; -+ -+ DavinciFB fb[4]; -+ -+ DavinciC64x c64x; -+ bool c64x_present; -+ -+ DavinciC64xTasks tasks; -+} DavinciDriverData; -+ -+ -+static inline DFBResult -+davincifb_pan_display( const DavinciFB *fb, -+ struct fb_var_screeninfo *var, -+ const CoreSurfaceBufferLock *lock, -+ DFBSurfaceFlipFlags flags, -+ int x, -+ int y ) -+{ -+ int ret; -+ -+ if (lock) { -+#ifdef FBIO_SET_START -+ CoreSurfaceBuffer *buffer = lock->buffer; -+ struct fb_set_start set_start; -+ -+ /* physical mode */ -+ set_start.offset = -1; -+ set_start.sync = (flags & DSFLIP_ONSYNC) ? 1 : 0; -+ -+ /* life's so easy */ -+ set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch; -+ -+ ret = ioctl( fb->fd, FBIO_SET_START, &set_start ); -+ if (ret < 0) -+ D_DEBUG( "FBIO_SET_START (0x%08lx, sync %llu) failed!\n", -+ set_start.physical, set_start.sync ); -+ -+ if (ret == 0) { -+ if (flags & DSFLIP_WAIT) -+ ioctl( fb->fd, FBIO_WAITFORVSYNC ); -+ -+ return DFB_OK; -+ } -+ -+ /* fallback */ -+#endif -+ var->xoffset = x; /* poor version */ -+ var->yoffset = y + lock->offset / lock->pitch; -+ } -+ else { -+ var->xoffset = x; -+ var->yoffset = y; -+ } -+ -+ var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW; -+ -+ ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var ); -+ if (ret) -+ D_PERROR( "Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\n", -+ fb->num, var->xoffset, var->yoffset ); -+ -+ if (flags & DSFLIP_WAIT) -+ ioctl( fb->fd, FBIO_WAITFORVSYNC ); -+ -+ return DFB_OK; -+} -+ -+#endif diff --git a/src/patches/DirectFB-1.7.7-fix_mknod.patch b/src/patches/DirectFB-1.7.7-fix_mknod.patch new file mode 100644 index 0000000000..12ac2cac5b --- /dev/null +++ b/src/patches/DirectFB-1.7.7-fix_mknod.patch @@ -0,0 +1,22 @@ +From: Debian Multimedia Maintainers + +Date: Thu, 16 Mar 2017 20:48:20 +0100 +Subject: _fix_mknod + +--- + gfxdrivers/davinci/davinci_c64x.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gfxdrivers/davinci/davinci_c64x.c b/gfxdrivers/davinci/davinci_c64x.c +index 431ffdd..420b567 100644 +--- a/gfxdrivers/davinci/davinci_c64x.c ++++ b/gfxdrivers/davinci/davinci_c64x.c +@@ -37,6 +37,8 @@ + #include + #include + #include ++#include ++#include + #include + + #include diff --git a/src/patches/directfb-1.1.1-fix-mknod.patch b/src/patches/directfb-1.1.1-fix-mknod.patch deleted file mode 100644 index 97633e2b10..0000000000 --- a/src/patches/directfb-1.1.1-fix-mknod.patch +++ /dev/null @@ -1,26 +0,0 @@ -Description: directfb ftbfs on armel. Implicit declaration error - Fix for ARM builds failing on: - ../../../gfxdrivers/davinci/davinci_c64x.c: In function 'davinci_c64x_open': - ../../../gfxdrivers/davinci/davinci_c64x.c:1900:6: error: implicit declaration of function 'mknod' [-Werror=implicit-function-declaration] - cc1: some warnings being treated as errors - . - directfb (1.2.10.0-4.3) unstable; urgency=low - . - * Non-maintainer upload. - * Fix "directfb ftbfs on armel. Implicit declaration error" - - Thanks Peter Green for bug report and patch (Closes: #644782) - * Remove m4 macros when calling clean target -Author: Hector Oron -Bug-Debian: http://bugs.debian.org/644782 - ---- directfb-1.2.10.0.orig/gfxdrivers/davinci/davinci_c64x.c -+++ directfb-1.2.10.0/gfxdrivers/davinci/davinci_c64x.c -@@ -37,6 +37,8 @@ - #include - #include - #include -+#include -+ - #include - - #include -- 2.39.5