mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-10 19:15:54 +02:00
directfb: fix comile on 32bit arm
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
@@ -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 \
|
||||
|
||||
@@ -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 <sramacher@debian.org>
|
||||
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 <dok@directfb.org>
|
||||
+
|
||||
+ 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 <sys/ioctl.h>
|
||||
+#include <davincifb.h>
|
||||
+
|
||||
+#include <core/surface_buffer.h>
|
||||
+
|
||||
+#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 <dok@directfb.org>
|
||||
+
|
||||
+ 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 <sys/ioctl.h>
|
||||
+#include <davincifb.h>
|
||||
+
|
||||
+#include <core/surface_buffer.h>
|
||||
+
|
||||
+#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
|
||||
22
src/patches/DirectFB-1.7.7-fix_mknod.patch
Normal file
22
src/patches/DirectFB-1.7.7-fix_mknod.patch
Normal file
@@ -0,0 +1,22 @@
|
||||
From: Debian Multimedia Maintainers
|
||||
<pkg-multimedia-maintainers@lists.alioth.debian.org>
|
||||
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 <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/sysmacros.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <directfb_util.h>
|
||||
@@ -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 <zumbi@debian.org>
|
||||
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 <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/types.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
#include <unistd.h>
|
||||
|
||||
#include <directfb_util.h>
|
||||
Reference in New Issue
Block a user