optimize SDK

Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
This commit is contained in:
Michel-FK 2020-12-25 15:46:52 +01:00
parent 63bb57f1b8
commit 2e1990a653
50 changed files with 7876 additions and 141 deletions

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "buildroot"]
path = buildroot
url = git://git.buildroot.net/buildroot
url = git@fk:FunKey-Project/buildroot.git

View File

@ -14,3 +14,6 @@ source "$BR2_EXTERNAL_FUNKEY_PATH/package/libini/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/libopk/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/libxdgmime/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/gmenu2x/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/agg/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/fluidlite/Config.in"
source "$BR2_EXTERNAL_FUNKEY_PATH/package/libmikmod/Config.in"

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.31.1
# Tue Nov 24 08:37:01 2020
# Busybox version: 1.32.0
# Thu Dec 24 11:17:18 2020
#
CONFIG_HAVE_DOT_CONFIG=y
@ -76,6 +76,7 @@ CONFIG_PREFIX="./_install"
# CONFIG_DEBUG_SANITIZE is not set
# CONFIG_UNIT_TEST is not set
# CONFIG_WERROR is not set
# CONFIG_WARN_SIMPLE_MSG is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
@ -462,6 +463,7 @@ CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
CONFIG_FEATURE_FIND_QUIT=y
# CONFIG_FEATURE_FIND_DELETE is not set
CONFIG_FEATURE_FIND_EMPTY=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
@ -692,6 +694,7 @@ CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y
CONFIG_SWITCH_ROOT=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
# CONFIG_FEATURE_TASKSET_CPULIST is not set
CONFIG_UEVENT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
@ -805,6 +808,7 @@ CONFIG_MAKEDEVS=y
CONFIG_FEATURE_MAKEDEVS_TABLE=y
# CONFIG_MAN is not set
CONFIG_MICROCOM=y
CONFIG_MIM=y
CONFIG_MT=y
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
@ -1095,6 +1099,7 @@ CONFIG_SH_IS_ASH=y
# CONFIG_BASH_IS_ASH is not set
# CONFIG_BASH_IS_HUSH is not set
CONFIG_BASH_IS_NONE=y
CONFIG_SHELL_ASH=y
CONFIG_ASH=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_INTERNAL_GLOB=y
@ -1115,6 +1120,7 @@ CONFIG_ASH_GETOPTS=y
CONFIG_ASH_CMDCMD=y
# CONFIG_CTTYHACK is not set
# CONFIG_HUSH is not set
# CONFIG_SHELL_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_LINENO_VAR is not set
@ -1177,6 +1183,7 @@ CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
# CONFIG_FEATURE_SYSLOGD_DUP is not set
# CONFIG_FEATURE_SYSLOGD_CFG is not set
# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
# CONFIG_FEATURE_IPC_SYSLOG is not set
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0

View File

@ -25,6 +25,7 @@ CONFIG_CPU_FREQ=y
CONFIG_CPUFREQ_DT=y
CONFIG_VFP=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
# CONFIG_COREDUMP is not set
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION="/dev/mmcblk0p2"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
Merge this bug as it can affect performance :
https://github.com/OpenDingux/SDL/commit/e51100dce8da9099278dac9f5affbecf6396378b
--- a/src/audio/alsa/SDL_alsa_audio.c
+++ b/src/audio/alsa/SDL_alsa_audio.c
@@ -479,6 +479,10 @@
return(-1);
}
+ /* Switch to blocking mode for playback */
+ /* Note: this must happen before hw/sw params are set. */
+ SDL_NAME(snd_pcm_nonblock)(pcm_handle, 0);
+
/* Figure out what the hardware is capable of */
snd_pcm_hw_params_alloca(&hwparams);
status = SDL_NAME(snd_pcm_hw_params_any)(pcm_handle, hwparams);
@@ -611,9 +615,6 @@
}
SDL_memset(mixbuf, spec->silence, spec->size);
- /* Switch to blocking mode for playback */
- SDL_NAME(snd_pcm_nonblock)(pcm_handle, 0);
-
/* We're ready to rock and roll. :-) */
return(0);
}

View File

@ -0,0 +1,22 @@
diff --git a/src/video/fbcon/SDL_fbevents.c b/src/video/fbcon/SDL_fbevents.c
index 5e369a4..549a7ad 100644
--- a/src/video/fbcon/SDL_fbevents.c
+++ b/src/video/fbcon/SDL_fbevents.c
@@ -270,17 +270,6 @@ int FB_OpenKeyboard(_THIS)
fprintf(stderr, "vtpath = %s, fd = %d\n",
vtpath, keyboard_fd);
#endif /* DEBUG_KEYBOARD */
-
- /* This needs to be our controlling tty
- so that the kernel ioctl() calls work
- */
- if ( keyboard_fd >= 0 ) {
- tty0_fd = open("/dev/tty", O_RDWR, 0);
- if ( tty0_fd >= 0 ) {
- ioctl(tty0_fd, TIOCNOTTY, 0);
- close(tty0_fd);
- }
- }
}
}
if ( keyboard_fd < 0 ) {

View File

@ -1,7 +1,9 @@
BR2_arm=y
BR2_cortex_a7=y
BR2_ARM_FPU_VFPV4=y
BR2_DL_DIR="../download"
BR2_CCACHE=y
BR2_OPTIMIZE_FAST=y
BR2_SHARED_STATIC_LIBS=y
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/patches"
BR2_TOOLCHAIN_BUILDROOT_VENDOR="funkey"
@ -11,7 +13,7 @@ BR2_BINUTILS_VERSION_2_35_X=y
BR2_GCC_VERSION_10_X=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_GCC_ENABLE_LTO=y
BR2_TARGET_OPTIMIZATION="-fno-PIC -march=armv7-a+neon-vfpv4 -mtune=cortex-a7 -mfpu=neon-vfpv4"
BR2_TARGET_OPTIMIZATION="-fno-PIC -march=armv7-a+neon-vfpv4 -mtune=cortex-a7 -mfpu=neon-vfpv4 -mvectorize-with-neon-quad"
BR2_TARGET_GENERIC_HOSTNAME="FunKey"
BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the FunKey"
BR2_ROOTFS_DEVICE_TABLE="$(BR2_EXTERNAL_FUNKEY_PATH)/board/funkey/device_table.txt"
@ -49,6 +51,7 @@ BR2_PACKAGE_ALSA_UTILS_BAT=y
BR2_PACKAGE_ALSA_UTILS_IECSET=y
BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y
BR2_PACKAGE_AUMIX=y
BR2_PACKAGE_MPG123=y
BR2_PACKAGE_DOSFSTOOLS=y
BR2_PACKAGE_DOSFSTOOLS_FATLABEL=y
BR2_PACKAGE_DOSFSTOOLS_FSCK_FAT=y
@ -59,6 +62,7 @@ BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y
BR2_PACKAGE_SDL_IMAGE_GIF=y
BR2_PACKAGE_SDL_IMAGE_JPEG=y
BR2_PACKAGE_SDL_IMAGE_PNG=y
BR2_PACKAGE_SDL_NET=y
BR2_PACKAGE_SDL_SOUND=y
BR2_PACKAGE_SDL_SOUND_PLAYSOUND=y
BR2_PACKAGE_GPTFDISK=y
@ -68,14 +72,24 @@ BR2_PACKAGE_PARTED=y
BR2_PACKAGE_SYSSTAT=y
BR2_PACKAGE_UBOOT_TOOLS=y
BR2_PACKAGE_UBOOT_TOOLS_MKENVIMAGE=y
BR2_PACKAGE_LUA=y
BR2_PACKAGE_LIBSAMPLERATE=y
BR2_PACKAGE_LIBSNDFILE=y
BR2_PACKAGE_OPENAL=y
BR2_PACKAGE_TREMOR=y
BR2_PACKAGE_LIBARCHIVE=y
BR2_PACKAGE_LIBARCHIVE_BSDTAR=y
BR2_PACKAGE_LIBARCHIVE_BSDCPIO=y
BR2_PACKAGE_LIBARCHIVE_BSDCAT=y
BR2_PACKAGE_LIBCONFIG=y
BR2_PACKAGE_LIBQRENCODE=y
BR2_PACKAGE_LIBQRENCODE_TOOLS=y
BR2_PACKAGE_PIXMAN=y
BR2_PACKAGE_TINYXML2=y
BR2_PACKAGE_LIBNL=y
BR2_PACKAGE_LIBRSYNC=y
BR2_PACKAGE_FMT=y
BR2_PACKAGE_ICU=y
BR2_PACKAGE_DHCPCD=y
BR2_PACKAGE_DROPBEAR=y
BR2_PACKAGE_PROCPS_NG=y
@ -86,7 +100,7 @@ BR2_PACKAGE_UTIL_LINUX_BINARIES=y
BR2_PACKAGE_NANO=y
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="128M"
BR2_TARGET_ROOTFS_EXT2_SIZE="150M"
# BR2_TARGET_ROOTFS_TAR is not set
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_DTC=y
@ -96,3 +110,6 @@ BR2_PACKAGE_HOST_UBOOT_TOOLS=y
BR2_PACKAGE_LIBOPK=y
BR2_PACKAGE_LIBXDGMIME=y
BR2_PACKAGE_GMENU2X=y
BR2_PACKAGE_AGG=y
BR2_PACKAGE_FLUIDLITE=y
BR2_PACKAGE_LIBMIKMOD=y

View File

@ -12,25 +12,7 @@ FCEUX_LICENSE_FILES = COPYING
FCEUX_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
FCEUX_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
FCEUX_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
FCEUX_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
FCEUX_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
FCEUX_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
FCEUX_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
endif
FCEUX_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
FCEUX_CFLAGS += -ggdb -O3
FCEUX_CFLAGS += -Wno-write-strings -Wno-sign-compare

View File

@ -12,25 +12,10 @@ PCSX_REARMED_LICENSE_FILES = COPYING
PCSX_REARMED_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
PCSX_REARMED_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
PCSX_REARMED_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
PCSX_REARMED_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
PCSX_REARMED_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
PCSX_REARMED_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
PCSX_REARMED_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
PCSX_REARMED_CONF_OPTS += --enable-neon --gpu=neon
PCSX_REARMED_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
PCSX_REARMED_CONF_OPTS += --enable-neon --gpu=neon
endif
PCSX_REARMED_CONF_OPTS += --sound-drivers=sdl

View File

@ -12,25 +12,7 @@ POCKETSNES_LICENSE_FILES = COPYING
POCKETSNES_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
POCKETSNES_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
POCKETSNES_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
POCKETSNES_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
POCKETSNES_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
POCKETSNES_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
POCKETSNES_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
endif
POCKETSNES_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
POCKETSNES_SDL_CFLAGS += $(shell $(STAGING_DIR)/usr/bin/sdl-config --cflags)
POCKETSNES_SDL_LIBS += $(shell $(STAGING_DIR)/usr/bin/sdl-config --libs)

View File

@ -0,0 +1,81 @@
From efd33aad5e69f36ab343b1f28839a55db4538104 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 10:55:37 +0100
Subject: [PATCH 01/15] Fix non-terminating loop conditions when len=1
- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
{
sx = (lp.x1 + sx) >> 1;
sy = (lp.y1 + sy) >> 1;
}
---
include/agg_renderer_outline_aa.h | 8 ++++----
include/agg_renderer_outline_image.h | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/agg_renderer_outline_aa.h b/include/agg_renderer_outline_aa.h
index ce25a2e..cb2aa00 100644
--- a/include/agg_renderer_outline_aa.h
+++ b/include/agg_renderer_outline_aa.h
@@ -1659,7 +1659,7 @@ namespace agg
}
else
{
- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
{
sx = (lp.x1 + sx) >> 1;
sy = (lp.y1 + sy) >> 1;
@@ -1726,7 +1726,7 @@ namespace agg
}
else
{
- while(abs(ex - lp.x2) + abs(ey - lp.y2) > lp2.len)
+ while(abs(ex - lp.x2) + abs(ey - lp.y2) > 1 + lp2.len)
{
ex = (lp.x2 + ex) >> 1;
ey = (lp.y2 + ey) >> 1;
@@ -1798,7 +1798,7 @@ namespace agg
}
else
{
- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
{
sx = (lp.x1 + sx) >> 1;
sy = (lp.y1 + sy) >> 1;
@@ -1811,7 +1811,7 @@ namespace agg
}
else
{
- while(abs(ex - lp.x2) + abs(ey - lp.y2) > lp2.len)
+ while(abs(ex - lp.x2) + abs(ey - lp.y2) > 1 + lp2.len)
{
ex = (lp.x2 + ex) >> 1;
ey = (lp.y2 + ey) >> 1;
diff --git a/include/agg_renderer_outline_image.h b/include/agg_renderer_outline_image.h
index fbfac10..66d2b9a 100644
--- a/include/agg_renderer_outline_image.h
+++ b/include/agg_renderer_outline_image.h
@@ -969,7 +969,7 @@ namespace agg
}
else
{
- while(abs(sx - lp.x1) + abs(sy - lp.y1) > lp2.len)
+ while(abs(sx - lp.x1) + abs(sy - lp.y1) > 1 + lp2.len)
{
sx = (lp.x1 + sx) >> 1;
sy = (lp.y1 + sy) >> 1;
@@ -982,7 +982,7 @@ namespace agg
}
else
{
- while(abs(ex - lp.x2) + abs(ey - lp.y2) > lp2.len)
+ while(abs(ex - lp.x2) + abs(ey - lp.y2) > 1 + lp2.len)
{
ex = (lp.x2 + ex) >> 1;
ey = (lp.y2 + ey) >> 1;
--
1.8.1.4

View File

@ -0,0 +1,15 @@
Author: Andrea Veri <and@debian.org>
Description: Disable configure's run from the autogen file.
Index: agg-2.5+dfsg1/autogen.sh
===================================================================
--- a/autogen.sh 2007-10-11 00:06:16.000000000 +0200
+++ b/autogen.sh 2012-05-01 16:57:37.916862783 +0200
@@ -18,6 +18,6 @@
automake --foreign --add-missing --ignore-deps
# and finally invoke our new configure
-./configure $*
+[ -n "$NOCONFIGURE" ] || ./configure $*
# end

View File

@ -0,0 +1,40 @@
From e269fe9b62af6fe314cebe0ee7a6d6d1a4a84d1c Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 11:03:26 +0100
Subject: [PATCH 02/15] Cure recursion by aborting if the co-ordinates are to
big to handle
---
include/agg_rasterizer_cells_aa.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/include/agg_rasterizer_cells_aa.h b/include/agg_rasterizer_cells_aa.h
index d3bb138..3a616d9 100644
--- a/include/agg_rasterizer_cells_aa.h
+++ b/include/agg_rasterizer_cells_aa.h
@@ -40,7 +40,8 @@
#define AGG_RASTERIZER_CELLS_AA_INCLUDED
#include <string.h>
-#include <math.h>
+#include <cstdlib>
+#include <limits>
#include "agg_math.h"
#include "agg_array.h"
@@ -333,6 +334,12 @@ namespace agg
{
int cx = (x1 + x2) >> 1;
int cy = (y1 + y2) >> 1;
+
+ // Bail if values are so large they are likely to wrap
+ if ((std::abs(x1) >= std::numeric_limits<int>::max()/2) || (std::abs(y1) >= std::numeric_limits<int>::max()/2) ||
+ (std::abs(x2) >= std::numeric_limits<int>::max()/2) || (std::abs(y2) >= std::numeric_limits<int>::max()/2))
+ return;
+
line(x1, y1, cx, cy);
line(cx, cy, x2, y2);
}
--
1.8.1.4

View File

@ -0,0 +1,34 @@
--- a/configure.in
+++ b/configure.in
@@ -39,7 +39,7 @@
# used as platform library in examples:
# todo, make the PREFERED_PLATFORM selectable, after the set of possible
# Platforms to link the examples have been evaluated.
-PREFERED_PLATFORM=X11
+PREFERED_PLATFORM=sdl
case "$host" in
*darwin* )
OSX_LIBS="-framework Carbon -framework QuickTime"
@@ -120,9 +120,7 @@
if test "$no_x" = "yes"; then
AC_MSG_WARN([*** X11 not found! Omitting X11 layer.])
fi
-AM_CONDITIONAL(ENABLE_X11,[test x$no_x = x -a xno != x$enable_platform -a x$win32_host != xyes])
-AC_SUBST(x_includes)
-AC_SUBST(x_libraries)
+AM_CONDITIONAL(ENABLE_X11,0)
dnl ###############################################
dnl Settung up library version
--- a/include/agg_renderer_outline_aa.h
+++ b/include/agg_renderer_outline_aa.h
@@ -1375,7 +1375,7 @@
//---------------------------------------------------------------------
void profile(const line_profile_aa& prof) { m_profile = &prof; }
const line_profile_aa& profile() const { return *m_profile; }
- line_profile_aa& profile() { return *m_profile; }
+// line_profile_aa& profile() { return *m_profile; }
//---------------------------------------------------------------------
int subpixel_width() const { return m_profile->subpixel_width(); }

View File

@ -0,0 +1,30 @@
From 032d5342430f4c5dfbc34a2817d67386a14fd51b Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 11:40:49 +0100
Subject: [PATCH 03/15] Get coordinates from previous vertex if last command is
path_cmd_end_poly
---
include/agg_path_storage.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/agg_path_storage.h b/include/agg_path_storage.h
index 7be7393..8922fc8 100644
--- a/include/agg_path_storage.h
+++ b/include/agg_path_storage.h
@@ -878,6 +878,12 @@ namespace agg
*x += x2;
*y += y2;
}
+ else if (!is_stop(m_vertices.last_command()) &&
+ is_vertex(m_vertices.prev_vertex(&x2, &y2)))
+ {
+ *x += x2;
+ *y += y2;
+ }
}
}
--
1.8.1.4

View File

@ -0,0 +1,138 @@
From b9c4b1c72b4ad6b24c37f402d3eec39ef393b0eb Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 14:17:43 +0100
Subject: [PATCH 04/15] Make rasterizer_outline_aa ignore close_polygon when
vertex count < 3
---
include/agg_rasterizer_outline_aa.h | 107 ++++++++++++++++++------------------
1 file changed, 52 insertions(+), 55 deletions(-)
diff --git a/include/agg_rasterizer_outline_aa.h b/include/agg_rasterizer_outline_aa.h
index 4d6dd57..24301d5 100644
--- a/include/agg_rasterizer_outline_aa.h
+++ b/include/agg_rasterizer_outline_aa.h
@@ -333,68 +333,65 @@ namespace agg
int y2;
int lprev;
- if(close_polygon)
+ if(close_polygon && (m_src_vertices.size() >= 3))
{
- if(m_src_vertices.size() >= 3)
+ dv.idx = 2;
+
+ v = &m_src_vertices[m_src_vertices.size() - 1];
+ x1 = v->x;
+ y1 = v->y;
+ lprev = v->len;
+
+ v = &m_src_vertices[0];
+ x2 = v->x;
+ y2 = v->y;
+ dv.lcurr = v->len;
+ line_parameters prev(x1, y1, x2, y2, lprev);
+
+ v = &m_src_vertices[1];
+ dv.x1 = v->x;
+ dv.y1 = v->y;
+ dv.lnext = v->len;
+ dv.curr = line_parameters(x2, y2, dv.x1, dv.y1, dv.lcurr);
+
+ v = &m_src_vertices[dv.idx];
+ dv.x2 = v->x;
+ dv.y2 = v->y;
+ dv.next = line_parameters(dv.x1, dv.y1, dv.x2, dv.y2, dv.lnext);
+
+ dv.xb1 = 0;
+ dv.yb1 = 0;
+ dv.xb2 = 0;
+ dv.yb2 = 0;
+
+ switch(m_line_join)
{
- dv.idx = 2;
-
- v = &m_src_vertices[m_src_vertices.size() - 1];
- x1 = v->x;
- y1 = v->y;
- lprev = v->len;
-
- v = &m_src_vertices[0];
- x2 = v->x;
- y2 = v->y;
- dv.lcurr = v->len;
- line_parameters prev(x1, y1, x2, y2, lprev);
-
- v = &m_src_vertices[1];
- dv.x1 = v->x;
- dv.y1 = v->y;
- dv.lnext = v->len;
- dv.curr = line_parameters(x2, y2, dv.x1, dv.y1, dv.lcurr);
-
- v = &m_src_vertices[dv.idx];
- dv.x2 = v->x;
- dv.y2 = v->y;
- dv.next = line_parameters(dv.x1, dv.y1, dv.x2, dv.y2, dv.lnext);
-
- dv.xb1 = 0;
- dv.yb1 = 0;
- dv.xb2 = 0;
- dv.yb2 = 0;
-
- switch(m_line_join)
- {
- case outline_no_join:
- dv.flags = 3;
- break;
+ case outline_no_join:
+ dv.flags = 3;
+ break;
- case outline_miter_join:
- case outline_round_join:
- dv.flags =
- (prev.diagonal_quadrant() == dv.curr.diagonal_quadrant()) |
- ((dv.curr.diagonal_quadrant() == dv.next.diagonal_quadrant()) << 1);
- break;
+ case outline_miter_join:
+ case outline_round_join:
+ dv.flags =
+ (prev.diagonal_quadrant() == dv.curr.diagonal_quadrant()) |
+ ((dv.curr.diagonal_quadrant() == dv.next.diagonal_quadrant()) << 1);
+ break;
- case outline_miter_accurate_join:
- dv.flags = 0;
- break;
- }
+ case outline_miter_accurate_join:
+ dv.flags = 0;
+ break;
+ }
- if((dv.flags & 1) == 0 && m_line_join != outline_round_join)
- {
- bisectrix(prev, dv.curr, &dv.xb1, &dv.yb1);
- }
+ if((dv.flags & 1) == 0 && m_line_join != outline_round_join)
+ {
+ bisectrix(prev, dv.curr, &dv.xb1, &dv.yb1);
+ }
- if((dv.flags & 2) == 0 && m_line_join != outline_round_join)
- {
- bisectrix(dv.curr, dv.next, &dv.xb2, &dv.yb2);
- }
- draw(dv, 0, m_src_vertices.size());
+ if((dv.flags & 2) == 0 && m_line_join != outline_round_join)
+ {
+ bisectrix(dv.curr, dv.next, &dv.xb2, &dv.yb2);
}
+ draw(dv, 0, m_src_vertices.size());
}
else
{
--
1.8.1.4

View File

@ -0,0 +1,52 @@
From b8c43fb0ba13af0cc2b1050f48f81d76d2fdf0c7 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 15:04:05 +0100
Subject: [PATCH 05/15] Remove VC++ 6 workaround
---
include/agg_renderer_scanline.h | 29 +----------------------------
1 file changed, 1 insertion(+), 28 deletions(-)
diff --git a/include/agg_renderer_scanline.h b/include/agg_renderer_scanline.h
index c3bb6f0..c27ca60 100644
--- a/include/agg_renderer_scanline.h
+++ b/include/agg_renderer_scanline.h
@@ -79,34 +79,7 @@ namespace agg
sl.reset(ras.min_x(), ras.max_x());
while(ras.sweep_scanline(sl))
{
- //render_scanline_aa_solid(sl, ren, ren_color);
-
- // This code is equivalent to the above call (copy/paste).
- // It's just a "manual" optimization for old compilers,
- // like Microsoft Visual C++ v6.0
- //-------------------------------
- int y = sl.y();
- unsigned num_spans = sl.num_spans();
- typename Scanline::const_iterator span = sl.begin();
-
- for(;;)
- {
- int x = span->x;
- if(span->len > 0)
- {
- ren.blend_solid_hspan(x, y, (unsigned)span->len,
- ren_color,
- span->covers);
- }
- else
- {
- ren.blend_hline(x, y, (unsigned)(x - span->len - 1),
- ren_color,
- *(span->covers));
- }
- if(--num_spans == 0) break;
- ++span;
- }
+ render_scanline_aa_solid(sl, ren, ren_color);
}
}
}
--
1.8.1.4

View File

@ -0,0 +1,85 @@
From 9422570f4e099a834fc43619f7b2a7eb6b442e25 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 15:31:01 +0100
Subject: [PATCH 06/15] Implement grain-merge blending mode (GIMP)
---
include/agg_pixfmt_rgba.h | 42 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
index 79d10dc..f576ce4 100644
--- a/include/agg_pixfmt_rgba.h
+++ b/include/agg_pixfmt_rgba.h
@@ -1401,9 +1401,46 @@ namespace agg
}
};
+ //================================================comp_op_rgba_grain_merge
+ template <typename ColorT, typename Order> struct comp_op_rgba_grain_merge
+ {
+ typedef ColorT color_type;
+ typedef Order order_type;
+ typedef typename color_type::value_type value_type;
+ typedef typename color_type::calc_type calc_type;
+ typedef typename color_type::long_type long_type;
+ enum base_scale_e
+ {
+ base_shift = color_type::base_shift,
+ base_mask = color_type::base_mask
+ };
+ // E = I + M - 128
+ static AGG_INLINE void blend_pix(value_type* p,
+ unsigned sr, unsigned sg, unsigned sb,
+ unsigned sa, unsigned cover)
+ {
-
+ if(cover < 255)
+ {
+ sr = (sr * cover + 255) >> 8;
+ sg = (sg * cover + 255) >> 8;
+ sb = (sb * cover + 255) >> 8;
+ sa = (sa * cover + 255) >> 8;
+ }
+ if(sa)
+ {
+ calc_type da = p[Order::A];
+ int dr = sr + p[Order::R] - 128;
+ int dg = sg + p[Order::G] - 128;
+ int db = sb + p[Order::B] - 128;
+ p[Order::R] = (value_type)(dr < 0 ? 0 : (dr > 255 ? 255 : dr));
+ p[Order::G] = (value_type)(dg < 0 ? 0 : (dg > 255 ? 255 : dg));
+ p[Order::B] = (value_type)(db < 0 ? 0 : (db > 255 ? 255 : db));
+ p[Order::A] = (value_type)(sa + da - ((sa * da + base_mask) >> base_shift));
+ }
+ }
+ };
//======================================================comp_op_table_rgba
template<class ColorT, class Order> struct comp_op_table_rgba
@@ -1451,6 +1488,7 @@ namespace agg
comp_op_rgba_contrast <ColorT,Order>::blend_pix,
comp_op_rgba_invert <ColorT,Order>::blend_pix,
comp_op_rgba_invert_rgb <ColorT,Order>::blend_pix,
+ comp_op_rgba_grain_merge<ColorT,Order>::blend_pix,
0
};
@@ -1486,6 +1524,7 @@ namespace agg
comp_op_contrast, //----comp_op_contrast
comp_op_invert, //----comp_op_invert
comp_op_invert_rgb, //----comp_op_invert_rgb
+ comp_op_grain_merge, //----comp_op_grain_merge
end_of_comp_op_e
};
@@ -2908,4 +2947,3 @@ namespace agg
}
#endif
-
--
1.8.1.4

View File

@ -0,0 +1,85 @@
From abd440342e166a90d08610bf5b31d2a8357eafbe Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 15:43:18 +0100
Subject: [PATCH 07/15] Implement grain-extract blending mode (GIMP)
---
include/agg_pixfmt_rgba.h | 48 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
index f576ce4..42f0a05 100644
--- a/include/agg_pixfmt_rgba.h
+++ b/include/agg_pixfmt_rgba.h
@@ -1442,6 +1442,52 @@ namespace agg
}
};
+ //==============================================comp_op_rgba_grain_extract
+ template <typename ColorT, typename Order> struct comp_op_rgba_grain_extract
+ {
+ typedef ColorT color_type;
+ typedef Order order_type;
+ typedef typename color_type::value_type value_type;
+ typedef typename color_type::calc_type calc_type;
+ typedef typename color_type::long_type long_type;
+ enum base_scale_e
+ {
+ base_shift = color_type::base_shift,
+ base_mask = color_type::base_mask
+ };
+
+ // E = I - M + 128
+ static AGG_INLINE void blend_pix(value_type* p,
+ unsigned sr, unsigned sg, unsigned sb,
+ unsigned sa, unsigned cover)
+ {
+ calc_type da = (p[Order::A] * sa + 255) >> 8;
+
+ int dr = p[Order::R] - sr + 128;
+ int dg = p[Order::G] - sg + 128;
+ int db = p[Order::B] - sb + 128;
+
+ dr = dr < 0 ? 0 : (dr > 255 ? 255 : dr);
+ dg = dg < 0 ? 0 : (dg > 255 ? 255 : dg);
+ db = db < 0 ? 0 : (db > 255 ? 255 : db);
+
+ p[Order::A] = da;
+
+ if(da < 255)
+ {
+ p[Order::R] = (dr * da + 255) >> 8;
+ p[Order::G] = (dg * da + 255) >> 8;
+ p[Order::B] = (db * da + 255) >> 8;
+ }
+ else
+ {
+ p[Order::R] = dr;
+ p[Order::G] = dg;
+ p[Order::B] = db;
+ }
+ }
+ };
+
//======================================================comp_op_table_rgba
template<class ColorT, class Order> struct comp_op_table_rgba
{
@@ -1489,6 +1535,7 @@ namespace agg
comp_op_rgba_invert <ColorT,Order>::blend_pix,
comp_op_rgba_invert_rgb <ColorT,Order>::blend_pix,
comp_op_rgba_grain_merge<ColorT,Order>::blend_pix,
+ comp_op_rgba_grain_extract<ColorT,Order>::blend_pix,
0
};
@@ -1525,6 +1572,7 @@ namespace agg
comp_op_invert, //----comp_op_invert
comp_op_invert_rgb, //----comp_op_invert_rgb
comp_op_grain_merge, //----comp_op_grain_merge
+ comp_op_grain_extract, //----comp_op_grain_extract
end_of_comp_op_e
};
--
1.8.1.4

View File

@ -0,0 +1,36 @@
From 2688af280836b95908d3cfd6915510d55de673b8 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 16:15:01 +0100
Subject: [PATCH 08/15] Declare multiplication and division operators as const
---
include/agg_trans_affine.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/agg_trans_affine.h b/include/agg_trans_affine.h
index a662099..2f602a0 100644
--- a/include/agg_trans_affine.h
+++ b/include/agg_trans_affine.h
@@ -216,15 +216,15 @@ namespace agg
}
// Multiply the matrix by another one and return
- // the result in a separete matrix.
- trans_affine operator * (const trans_affine& m)
+ // the result in a separate matrix.
+ trans_affine operator * (const trans_affine& m) const
{
return trans_affine(*this).multiply(m);
}
// Multiply the matrix by inverse of another one
- // and return the result in a separete matrix.
- trans_affine operator / (const trans_affine& m)
+ // and return the result in a separate matrix.
+ trans_affine operator / (const trans_affine& m) const
{
return trans_affine(*this).multiply_inv(m);
}
--
1.8.1.4

View File

@ -0,0 +1,37 @@
From be9ed90897bc43b4547a3a1f8046827caaf13b4c Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 16:15:36 +0100
Subject: [PATCH 09/15] Add a static identity transformation
---
include/agg_trans_affine.h | 1 +
src/agg_trans_affine.cpp | 1 +
2 files changed, 2 insertions(+)
diff --git a/include/agg_trans_affine.h b/include/agg_trans_affine.h
index 2f602a0..67fe5ca 100644
--- a/include/agg_trans_affine.h
+++ b/include/agg_trans_affine.h
@@ -92,6 +92,7 @@ namespace agg
//----------------------------------------------------------------------
struct trans_affine
{
+ static const trans_affine identity;
double sx, shy, shx, sy, tx, ty;
//------------------------------------------ Construction
diff --git a/src/agg_trans_affine.cpp b/src/agg_trans_affine.cpp
index aca18c2..b3d9bc0 100644
--- a/src/agg_trans_affine.cpp
+++ b/src/agg_trans_affine.cpp
@@ -28,6 +28,7 @@
namespace agg
{
+ const trans_affine trans_affine::identity;
//------------------------------------------------------------------------
const trans_affine& trans_affine::parl_to_parl(const double* src,
--
1.8.1.4

View File

@ -0,0 +1,193 @@
From 749c8cd11e9e6f81e93ae5ce19258431722b6bdf Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 16:43:25 +0100
Subject: [PATCH 10/15] Add renderer_scanline_aa_alpha
---
include/agg_pixfmt_rgba.h | 24 +++++++++++++-
include/agg_renderer_base.h | 28 ++++++++++++++++
include/agg_renderer_scanline.h | 71 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 122 insertions(+), 1 deletion(-)
diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
index 42f0a05..6c4bc37 100644
--- a/include/agg_pixfmt_rgba.h
+++ b/include/agg_pixfmt_rgba.h
@@ -2247,7 +2247,6 @@ namespace agg
}
-
//--------------------------------------------------------------------
void blend_color_vspan(int x, int y,
unsigned len,
@@ -2751,6 +2750,29 @@ namespace agg
}
//--------------------------------------------------------------------
+ void blend_color_hspan_alpha(int x, int y, unsigned len,
+ const color_type* colors,
+ value_type alpha,
+ const int8u* covers,
+ int8u cover)
+ {
+ value_type* p = (value_type*)m_rbuf->row_ptr(x, y, len) + (x << 2);
+ do
+ {
+ blender_type::blend_pix(m_comp_op,
+ p,
+ (colors->r * alpha + 255) >> 8,
+ (colors->g * alpha + 255) >> 8,
+ (colors->b * alpha + 255) >> 8,
+ (colors->a * alpha + 255) >> 8,
+ covers ? *covers++ : cover);
+ p += 4;
+ ++colors;
+ }
+ while(--len);
+ }
+
+ //--------------------------------------------------------------------
void blend_color_vspan(int x, int y, unsigned len,
const color_type* colors,
const int8u* covers,
diff --git a/include/agg_renderer_base.h b/include/agg_renderer_base.h
index 1808944..25f07c3 100644
--- a/include/agg_renderer_base.h
+++ b/include/agg_renderer_base.h
@@ -37,6 +37,7 @@ namespace agg
public:
typedef PixelFormat pixfmt_type;
typedef typename pixfmt_type::color_type color_type;
+ typedef typename pixfmt_type::color_type::value_type value_type;
typedef typename pixfmt_type::row_data row_data;
//--------------------------------------------------------------------
@@ -383,6 +384,33 @@ namespace agg
}
//--------------------------------------------------------------------
+ void blend_color_hspan_alpha(int x, int y, int len,
+ const color_type* colors,
+ value_type alpha,
+ const cover_type* covers,
+ cover_type cover = agg::cover_full)
+ {
+ if(y > ymax()) return;
+ if(y < ymin()) return;
+
+ if(x < xmin())
+ {
+ int d = xmin() - x;
+ len -= d;
+ if(len <= 0) return;
+ if(covers) covers += d;
+ colors += d;
+ x = xmin();
+ }
+ if(x + len > xmax())
+ {
+ len = xmax() - x + 1;
+ if(len <= 0) return;
+ }
+ m_ren->blend_color_hspan_alpha(x, y, len, colors, alpha, covers, cover);
+ }
+
+ //--------------------------------------------------------------------
void blend_color_vspan(int x, int y, int len,
const color_type* colors,
const cover_type* covers,
diff --git a/include/agg_renderer_scanline.h b/include/agg_renderer_scanline.h
index c27ca60..4fcb557 100644
--- a/include/agg_renderer_scanline.h
+++ b/include/agg_renderer_scanline.h
@@ -156,6 +156,35 @@ namespace agg
}
}
+ //================================================render_scanline_aa_alpha
+ template<class Scanline, class BaseRenderer,
+ class SpanAllocator, class SpanGenerator>
+ void render_scanline_aa_alpha(const Scanline& sl, BaseRenderer& ren,
+ SpanAllocator& alloc, SpanGenerator& span_gen,
+ unsigned alpha)
+ {
+ int y = sl.y();
+
+ unsigned num_spans = sl.num_spans();
+ typename Scanline::const_iterator span = sl.begin();
+ for(;;)
+ {
+ int x = span->x;
+ int len = span->len;
+ const typename Scanline::cover_type* covers = span->covers;
+
+ if(len < 0) len = -len;
+ typename BaseRenderer::color_type* colors = alloc.allocate(len);
+ span_gen.generate(colors, x, y, len);
+ ren.blend_color_hspan_alpha(x, y, len, colors, alpha,
+ (span->len < 0) ? 0 : covers, *covers);
+
+ if(--num_spans == 0) break;
+ ++span;
+ }
+ }
+
+
//=====================================================render_scanlines_aa
template<class Rasterizer, class Scanline, class BaseRenderer,
class SpanAllocator, class SpanGenerator>
@@ -216,8 +245,50 @@ namespace agg
};
+ //==============================================renderer_scanline_aa_alpha
+ template<class BaseRenderer, class SpanAllocator, class SpanGenerator>
+ class renderer_scanline_aa_alpha
+ {
+ public:
+ typedef BaseRenderer base_ren_type;
+ typedef SpanAllocator alloc_type;
+ typedef SpanGenerator span_gen_type;
+ //--------------------------------------------------------------------
+ renderer_scanline_aa_alpha() : m_ren(0), m_alloc(0), m_span_gen(0), m_alpha(1.0) {}
+ renderer_scanline_aa_alpha(base_ren_type& ren,
+ alloc_type& alloc,
+ span_gen_type& span_gen,
+ unsigned alpha) :
+ m_ren(&ren),
+ m_alloc(&alloc),
+ m_span_gen(&span_gen),
+ m_alpha(alpha)
+ {}
+ void attach(base_ren_type& ren,
+ alloc_type& alloc,
+ span_gen_type& span_gen)
+ {
+ m_ren = &ren;
+ m_alloc = &alloc;
+ m_span_gen = &span_gen;
+ }
+ //--------------------------------------------------------------------
+ void prepare() { m_span_gen->prepare(); }
+
+ //--------------------------------------------------------------------
+ template<class Scanline> void render(const Scanline& sl)
+ {
+ render_scanline_aa_alpha(sl, *m_ren, *m_alloc, *m_span_gen, m_alpha);
+ }
+
+ private:
+ base_ren_type* m_ren;
+ alloc_type* m_alloc;
+ span_gen_type* m_span_gen;
+ unsigned m_alpha;
+ };
//===============================================render_scanline_bin_solid
--
1.8.1.4

View File

@ -0,0 +1,58 @@
From 0ec68d7f5695403eccac75025ba7f6f7ecf1814e Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sun, 19 May 2013 16:49:08 +0100
Subject: [PATCH 11/15] Avoid division by zero in color-burn mode
FIXME: re-work using latest math from http://www.w3.org/TR/SVGCompositing/
---
include/agg_pixfmt_rgba.h | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
index 6c4bc37..5d6b511 100644
--- a/include/agg_pixfmt_rgba.h
+++ b/include/agg_pixfmt_rgba.h
@@ -1027,6 +1027,21 @@ namespace agg
// Dca' = Sa.(Sca.Da + Dca.Sa - Sa.Da)/Sca + Sca.(1 - Da) + Dca.(1 - Sa)
//
// Da' = Sa + Da - Sa.Da
+
+
+ // http://www.w3.org/TR/SVGCompositing/
+ // if Sca == 0 and Dca == Da
+ // Dca' = Sa × Da + Sca × (1 - Da) + Dca × (1 - Sa)
+ // = Sa × Da + Dca × (1 - Sa)
+ // = Da = Dca
+ // otherwise if Sca == 0
+ // Dca' = Sca × (1 - Da) + Dca × (1 - Sa)
+ // = Dca × (1 - Sa)
+ // otherwise if Sca > 0
+ // Dca' = Sa × Da - Sa × Da × min(1, (1 - Dca/Da) × Sa/Sca) + Sca × (1 - Da) + Dca × (1 - Sa)
+ // = Sa × Da × (1 - min(1, (1 - Dca/Da) × Sa/Sca)) + Sca × (1 - Da) + Dca × (1 - Sa)
+
+ // sa * da * (255 - std::min(255, (255 - p[0]/da)*(sa/(sc*sa)) +
static AGG_INLINE void blend_pix(value_type* p,
unsigned sr, unsigned sg, unsigned sb,
unsigned sa, unsigned cover)
@@ -1056,15 +1071,15 @@ namespace agg
p[Order::R] = (value_type)(((srda + drsa <= sada) ?
sr * d1a + dr * s1a :
- sa * (srda + drsa - sada) / sr + sr * d1a + dr * s1a + base_mask) >> base_shift);
+ (sr > 0 ? sa * (srda + drsa - sada) / sr + sr * d1a + dr * s1a + base_mask : 0)) >> base_shift);
p[Order::G] = (value_type)(((sgda + dgsa <= sada) ?
sg * d1a + dg * s1a :
- sa * (sgda + dgsa - sada) / sg + sg * d1a + dg * s1a + base_mask) >> base_shift);
+ (sg > 0 ? sa * (sgda + dgsa - sada) / sg + sg * d1a + dg * s1a + base_mask : 0)) >> base_shift);
p[Order::B] = (value_type)(((sbda + dbsa <= sada) ?
sb * d1a + db * s1a :
- sa * (sbda + dbsa - sada) / sb + sb * d1a + db * s1a + base_mask) >> base_shift);
+ (sb > 0 ? sa * (sbda + dbsa - sada) / sb + sb * d1a + db * s1a + base_mask : 0)) >> base_shift);
p[Order::A] = (value_type)(sa + da - ((sa * da + base_mask) >> base_shift));
}
--
1.8.1.4

View File

@ -0,0 +1,26 @@
From bf0e0b71360cfbc690a29f4abe15d7b9b61b8479 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sat, 22 Jun 2013 12:11:54 +0100
Subject: [PATCH 12/15] Avoid pixel artifacts when compositing
Change src_over alpha to avoid pixel artifacts by reordering computations.
---
include/agg_pixfmt_rgba.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/agg_pixfmt_rgba.h b/include/agg_pixfmt_rgba.h
index 5d6b511..bb255cd 100644
--- a/include/agg_pixfmt_rgba.h
+++ b/include/agg_pixfmt_rgba.h
@@ -346,7 +346,7 @@ namespace agg
p[Order::R] = (value_type)(sr + ((p[Order::R] * s1a + base_mask) >> base_shift));
p[Order::G] = (value_type)(sg + ((p[Order::G] * s1a + base_mask) >> base_shift));
p[Order::B] = (value_type)(sb + ((p[Order::B] * s1a + base_mask) >> base_shift));
- p[Order::A] = (value_type)(sa + p[Order::A] - ((sa * p[Order::A] + base_mask) >> base_shift));
+ p[Order::A] = (value_type)(sa + ((p[Order::A] * s1a + base_mask) >> base_shift));
}
};
--
1.8.1.4

View File

@ -0,0 +1,93 @@
From 6f1ab5f4b470bcf4e7e72aac6e2f7f6ee3e7b424 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sat, 22 Jun 2013 12:16:42 +0100
Subject: [PATCH 13/15] Modify agg conv classes to allow access to the original
geometry type
---
include/agg_conv_adaptor_vcgen.h | 2 ++
include/agg_conv_adaptor_vpgen.h | 1 +
include/agg_conv_clip_polygon.h | 1 +
include/agg_conv_clip_polyline.h | 1 +
include/agg_conv_smooth_poly1.h | 2 ++
5 files changed, 7 insertions(+)
diff --git a/include/agg_conv_adaptor_vcgen.h b/include/agg_conv_adaptor_vcgen.h
index 7bd9b07..fef4579 100644
--- a/include/agg_conv_adaptor_vcgen.h
+++ b/include/agg_conv_adaptor_vcgen.h
@@ -38,6 +38,7 @@ namespace agg
void rewind(unsigned) {}
unsigned vertex(double*, double*) { return path_cmd_stop; }
+ unsigned type() const { return 0; }
};
@@ -73,6 +74,7 @@ namespace agg
}
unsigned vertex(double* x, double* y);
+ unsigned type() const { return m_source->type(); }
private:
// Prohibit copying
diff --git a/include/agg_conv_adaptor_vpgen.h b/include/agg_conv_adaptor_vpgen.h
index dca9415..a39102d 100644
--- a/include/agg_conv_adaptor_vpgen.h
+++ b/include/agg_conv_adaptor_vpgen.h
@@ -42,6 +42,7 @@ namespace agg
void rewind(unsigned path_id);
unsigned vertex(double* x, double* y);
+ unsigned type() const { return m_source->type(); }
private:
conv_adaptor_vpgen(const conv_adaptor_vpgen<VertexSource, VPGen>&);
diff --git a/include/agg_conv_clip_polygon.h b/include/agg_conv_clip_polygon.h
index 3c34590..e417a7d 100644
--- a/include/agg_conv_clip_polygon.h
+++ b/include/agg_conv_clip_polygon.h
@@ -60,6 +60,7 @@ namespace agg
double y1() const { return base_type::vpgen().y1(); }
double x2() const { return base_type::vpgen().x2(); }
double y2() const { return base_type::vpgen().y2(); }
+ unsigned type() const { return base_type::type(); }
private:
conv_clip_polygon(const conv_clip_polygon<VertexSource>&);
diff --git a/include/agg_conv_clip_polyline.h b/include/agg_conv_clip_polyline.h
index d45067f..0de4b57 100644
--- a/include/agg_conv_clip_polyline.h
+++ b/include/agg_conv_clip_polyline.h
@@ -60,6 +60,7 @@ namespace agg
double y1() const { return base_type::vpgen().y1(); }
double x2() const { return base_type::vpgen().x2(); }
double y2() const { return base_type::vpgen().y2(); }
+ unsigned type() const { return base_type::type(); }
private:
conv_clip_polyline(const conv_clip_polyline<VertexSource>&);
diff --git a/include/agg_conv_smooth_poly1.h b/include/agg_conv_smooth_poly1.h
index 15f7f8d..0956c4e 100644
--- a/include/agg_conv_smooth_poly1.h
+++ b/include/agg_conv_smooth_poly1.h
@@ -48,6 +48,7 @@ namespace agg
void smooth_value(double v) { base_type::generator().smooth_value(v); }
double smooth_value() const { return base_type::generator().smooth_value(); }
+ unsigned type() const { return base_type::type(); }
private:
conv_smooth_poly1(const conv_smooth_poly1<VertexSource>&);
@@ -70,6 +71,7 @@ namespace agg
void smooth_value(double v) { m_smooth.generator().smooth_value(v); }
double smooth_value() const { return m_smooth.generator().smooth_value(); }
+ unsigned type() const { return m_smooth.type(); }
private:
conv_smooth_poly1_curve(const conv_smooth_poly1_curve<VertexSource>&);
--
1.8.1.4

View File

@ -0,0 +1,30 @@
From 6433a64f4cd41e88499386b0b7c7ae05d30683b8 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sat, 22 Jun 2013 12:33:32 +0100
Subject: [PATCH 14/15] Avoid potential zero division resulting in nan in
agg::gamma_linear
---
include/agg_gamma_functions.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/include/agg_gamma_functions.h b/include/agg_gamma_functions.h
index fa38a45..beb0c04 100644
--- a/include/agg_gamma_functions.h
+++ b/include/agg_gamma_functions.h
@@ -94,7 +94,11 @@ namespace agg
{
if(x < m_start) return 0.0;
if(x > m_end) return 1.0;
- return (x - m_start) / (m_end - m_start);
+ double delta = m_end - m_start;
+ // avoid nan from potential zero division
+ // https://github.com/mapnik/mapnik/issues/761
+ if (delta <= 0.0) return 0.0;
+ return (x - m_start) / delta;
}
private:
--
1.8.1.4

View File

@ -0,0 +1,24 @@
From ca818d4dcd428c5560fc3c341fbaf427a7485e32 Mon Sep 17 00:00:00 2001
From: Tom Hughes <tom@compton.nu>
Date: Sat, 22 Jun 2013 12:34:37 +0100
Subject: [PATCH 15/15] Ensure first value in the gamma table is always zero
---
include/agg_gamma_functions.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/agg_gamma_functions.h b/include/agg_gamma_functions.h
index beb0c04..b8eda52 100644
--- a/include/agg_gamma_functions.h
+++ b/include/agg_gamma_functions.h
@@ -49,6 +49,7 @@ namespace agg
double operator() (double x) const
{
+ if (x == 0.0) return 0.0;
return pow(x, m_gamma);
}
--
1.8.1.4

View File

@ -0,0 +1,14 @@
--- a/README.orig 2007-01-07 13:58:28.000000000 +0000
+++ b/README 2007-01-07 14:02:40.000000000 +0000
@@ -0,0 +1 @@
+cacac
--- a/NEWS.orig 2007-01-07 13:58:28.000000000 +0000
+++ b/NEWS 2007-01-07 14:02:40.000000000 +0000
@@ -0,0 +1 @@
+cacac
--- a/AUTHORS.orig 2007-01-07 13:58:28.000000000 +0000
+++ b/AUTHORS 2007-01-07 14:02:40.000000000 +0000
@@ -0,0 +1 @@
+cacac

View File

@ -0,0 +1,13 @@
config BR2_PACKAGE_AGG
bool "agg"
depends on BR2_INSTALL_LIBSTDCPP
select BR2_PACKAGE_SDL
help
The Anti-Grain Geometry project. A High Quality 2D Graphics Rendering
Engine for C++.
We select the SDL backend by default.
http://www.antigrain.com/index.html
comment "agg needs a toolchain with C++ support"
depends on !BR2_INSTALL_LIBSTDCPP

View File

@ -0,0 +1,36 @@
--- agg-2.4.orig/font_freetype/Makefile.am 2005-10-18 11:45:40.000000000 +0100
+++ agg-2.4/font_freetype/Makefile.am 2006-07-10 15:11:55.000000000 +0100
@@ -4,8 +4,9 @@
agginclude_HEADERS = agg_font_freetype.h
lib_LTLIBRARIES = libaggfontfreetype.la
-libaggfontfreetype_la_LDFLAGS = -version-info @AGG_LIB_VERSION@ @FREETYPE_LIBS@
+libaggfontfreetype_la_LDFLAGS = -version-info @AGG_LIB_VERSION@
libaggfontfreetype_la_SOURCES = agg_font_freetype.cpp
libaggfontfreetype_la_CXXFLAGS = -I$(top_srcdir)/include @FREETYPE_CFLAGS@
+libaggfontfreetype_la_LIBADD = ../src/libagg.la @FREETYPE_LIBS@
endif
--- agg-2.4.orig/src/platform/sdl/Makefile.am 2005-10-17 23:49:35.000000000 +0100
+++ agg-2.4/src/platform/sdl/Makefile.am 2006-07-10 15:11:55.000000000 +0100
@@ -5,6 +5,6 @@
libaggplatformsdl_la_LDFLAGS = -version-info @AGG_LIB_VERSION@
libaggplatformsdl_la_SOURCES = agg_platform_support.cpp
libaggplatformsdl_la_CXXFLAGS = -I$(top_srcdir)/include @SDL_CFLAGS@
-libaggplatformsdl_la_LIBADD = @SDL_LIBS@
+libaggplatformsdl_la_LIBADD = ../../libagg.la @SDL_LIBS@
endif
--- agg-2.5.orig/src/platform/X11/Makefile.am 2006-12-11 00:59:45.000000000 +0000
+++ agg-2.5/src/platform/X11/Makefile.am 2007-01-07 14:07:39.000000000 +0000
@@ -1,8 +1,8 @@
if ENABLE_X11
lib_LTLIBRARIES = libaggplatformX11.la
-libaggplatformX11_la_LDFLAGS = -version-info @AGG_LIB_VERSION@ -L@x_libraries@
+libaggplatformX11_la_LDFLAGS = -version-info @AGG_LIB_VERSION@ @X_LDFLAGS@
libaggplatformX11_la_SOURCES = agg_platform_support.cpp
libaggplatformX11_la_CXXFLAGS = -I$(top_srcdir)/include -I@x_includes@
-libaggplatformX11_la_LIBADD = -lX11
+libaggplatformX11_la_LIBADD = ../../libagg.la -lX11
endif

View File

@ -0,0 +1,11 @@
--- a/configure.in 2013-02-22 09:30:00.000000000 -0600
+++ b/configure.in 2013-02-22 09:30:49.030777571 -0600
@@ -8,7 +8,7 @@
AC_PROG_CC
AC_PROG_CXX
AC_ISC_POSIX
-AM_C_PROTOTYPES
+#AM_C_PROTOTYPES
if test "x$U" != "x"; then
AC_MSG_ERROR(Compiler not ANSI compliant)
fi

View File

@ -0,0 +1,10 @@
--- agg-2.5/libagg.pc.in.orig 2007-01-07 13:58:28.000000000 +0000
+++ agg-2.5/libagg.pc.in 2007-01-07 14:02:40.000000000 +0000
@@ -6,5 +6,6 @@
Name: libagg
Description: Anti Grain Geometry - A High Quality Rendering Engine for C++
Version: @VERSION@
-Libs: -L${libdir} -Wl,-rpath,${exec_prefix}/lib -lagg
+Requires.private: freetype2
+Libs: -L${libdir} -lagg
Cflags: -I${includedir}

32
FunKey/package/agg/agg.mk Normal file
View File

@ -0,0 +1,32 @@
###############################################################################
#
# agg
#
###############################################################################
AGG_VERSION = 2.5
AGG_SOURCE = agg-$(AGG_VERSION).tar.gz
AGG_SITE = https://ftp.osuosl.org/pub/blfs/8.0/a
AGG_LICENSE = GPLv3+
AGG_LICENSE_FILES = COPYING
AGG_INSTALL_STAGING = YES
AGG_AUTORECONF = YES
AGG_DEPENDENCIES = host-pkgconf sdl
AGG_CONF_OPTS = \
--with-sdl-prefix=$(STAGING_DIR)/usr \
--disable-sdltest
AGG_CONF_OPTS += \
--with-x=NO \
--disable-examples --disable-gpc
ifeq ($(BR2_PACKAGE_FREETYPE),y)
AGG_DEPENDENCIES += freetype
AGG_CONF_OPTS += --enable-freetype
else
AGG_CONF_OPTS += --disable-freetype
endif
$(eval $(autotools-package))

View File

@ -0,0 +1,11 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -125,7 +125,7 @@
endif()
endif()
-option(FLUIDLITE_BUILD_SHARED "Build shared library" TRUE)
+option(FLUIDLITE_BUILD_SHARED "Build shared library" FALSE)
if(FLUIDLITE_BUILD_SHARED)
add_library(${PROJECT_NAME} SHARED ${SOURCES})

View File

@ -0,0 +1,5 @@
config BR2_PACKAGE_FLUIDLITE
bool "FluidLite"
depends on BR2_USE_MMU
help
FluidLite is a very light version of FluidSynth.

View File

@ -0,0 +1,3 @@
# Locally computed
sha256 ef4d008f9fe2fa9a48135505d42dd7e8e9cc4d7494a4b13d6caa13adb5c61ff8 1.0.tar.gz
sha256 a5564e99fd7f49e1344152a8c5bc1d420d5f973b30e010946764db0b5b9e668c LICENSE

View File

@ -0,0 +1,19 @@
################################################################################
#
# FLUIDLITE
#
################################################################################
FLUIDLITE_VERSION = fdd05bad03cdb24d1f78b5fe3453842890c1b0e8
FLUIDLITE_SITE = $(call github,gcw0,FluidLite,$(FLUIDLITE_VERSION))
FLUIDLITE_LICENSE = LGPL-2.1+
FLUIDLITE_LICENSE_FILES = LICENSE
FLUIDLITE_INSTALL_STAGING = YES
FLUIDLITE_DEPENDENCIES =
# Disable the shared library for static only build
ifeq ($(BR2_STATIC_LIBS),y)
FLUIDLITE_CONF_OPTS += -DDFLUIDLITE_BUILD_SHARED=FALSE
endif
$(eval $(cmake-package))

View File

@ -12,25 +12,7 @@ GNUBOY_LICENSE_FILES = COPYING
GNUBOY_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
GNUBOY_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
GNUBOY_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
GNUBOY_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
GNUBOY_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
GNUBOY_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
GNUBOY_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
endif
GNUBOY_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
GNUBOY_CFLAGS += -ggdb -O3

View File

@ -12,25 +12,7 @@ GPSP_LICENSE_FILES = COPYING.DOC
GPSP_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
GPSP_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
GPSP_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
GPSP_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
GPSP_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
GPSP_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
GPSP_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
endif
GPSP_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
GPSP_SDL_CFLAGS += $(shell $(STAGING_DIR)/usr/bin/sdl-config --cflags)
GPSP_SDL_LIBS += $(shell $(STAGING_DIR)/usr/bin/sdl-config --libs)

View File

@ -0,0 +1,7 @@
config BR2_PACKAGE_LIBMIKMOD
bool "libmikmod"
help
Mikmod is a module player and library supporting many
tracker formats, including mod, s3m, it, and xm.
http://mikmod.shlomifish.org/

View File

@ -0,0 +1,21 @@
#############################################################
#
# libmikmod
#
#############################################################
LIBMIKMOD_VERSION:=3.3.11.1
LIBMIKMOD_SITE:=http://sourceforge.net/projects/mikmod/files/libmikmod/$(LIBMIKMOD_VERSION)
LIBMIKMOD_CONF_OPTS = --localstatedir=/var
LIBMIKMOD_LIBTOOL_PATCH = NO
LIBMIKMOD_INSTALL_STAGING = YES
LIBMIKMOD_CONFIG_SCRIPTS = libmikmod-config
define LIBMIKMOD_REMOVE_LIBMIKMOD_CONFIG
mv $(TARGET_DIR)/usr/bin/libmikmod-config $(HOST_DIR)/bin/
endef
LIBMIKMOD_POST_INSTALL_TARGET_HOOKS += LIBMIKMOD_REMOVE_LIBMIKMOD_CONFIG
$(eval $(autotools-package))

View File

@ -12,25 +12,7 @@ MEDNAFEN_LICENSE_FILES = COPYING
MEDNAFEN_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
MEDNAFEN_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
MEDNAFEN_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
MEDNAFEN_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
MEDNAFEN_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
MEDNAFEN_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
MEDNAFEN_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
endif
MEDNAFEN_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
#MEDNAFEN_AUTORECONF = YES

View File

@ -12,25 +12,7 @@ PICODRIVE_LICENSE_FILES = COPYING
PICODRIVE_DEPENDENCIES = sdl sdl_image sdl_mixer sdl_ttf zlib
PICODRIVE_CFLAGS = $(TARGET_CFLAGS)
ifeq ($(BR2_ARM_CPU_ARMV7A),y)
PICODRIVE_CFLAGS += -march=armv7-a
endif
ifeq ($(BR2_GCC_TARGET_CPU),"cortex-a7")
PICODRIVE_CFLAGS += -mtune=cortex-a7
endif
ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"hard")
PICODRIVE_CFLAGS += -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
else ifeq ($(BR2_GCC_TARGET_FLOAT_ABI),"soft")
PICODRIVE_CFLAGS += -mfloat-abi=soft -ffast-math -funsafe-math-optimizations
endif
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
PICODRIVE_CFLAGS += -D__ARM_NEON__ -mfpu=neon -mvectorize-with-neon-quad
endif
PICODRIVE_CFLAGS = $(TARGET_CFLAGS) $(subst $\",,$(BR2_TARGET_OPTIMIZATION)) -mfloat-abi=hard -ffast-math -funsafe-math-optimizations
PICODRIVE_CONF_OPTS += --platform=generic --sound-drivers=sdl
PICODRIVE_CFLAGS += -ggdb -O3

View File

@ -4,7 +4,7 @@
#
################################################################################
RETROFE_VERSION = 9dad33d
RETROFE_VERSION = 63180b9
RETROFE_SITE_METHOD = git
RETROFE_SITE = https://github.com/FunKey-Project/RetroFE.git
RETROFE_DEPENDENCIES = gstreamer1 gst1-plugins-base sdl sdl_image sdl_mixer sdl_sound sdl_ttf libglib2 sqlite zlib
@ -15,9 +15,16 @@ RETROFE_SUBDIR = RetroFE/Source
RETROFE_SUPPORTS_IN_SOURCE_BUILD = NO
RETROFE_CONF_OPTS += -DVERSION_MAJOR=0 -DVERSION_MINOR=0 -DVERSION_BUILD=0
ifeq ($(BR2_PACKAGE_LIBMIKMOD),y)
RETROFE_DEPENDENCIES += libmikmod
RETROFE_CONF_OPTS += -DLIBMIKMOD=1
endif
define RETROFE_INSTALL_TARGET_CMDS
$(INSTALL) -d -m 0755 $(TARGET_DIR)/usr/games
$(INSTALL) -m 0755 $(@D)/RetroFE/Build/retrofe $(TARGET_DIR)/usr/games/retrofe
endef
TARGET_CFLAGS += -O3
$(eval $(cmake-package))

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.31.1
# Tue Nov 24 01:26:17 2020
# Busybox version: 1.32.0
# Thu Dec 24 10:53:30 2020
#
CONFIG_HAVE_DOT_CONFIG=y
@ -76,6 +76,7 @@ CONFIG_PREFIX="./_install"
# CONFIG_DEBUG_SANITIZE is not set
# CONFIG_UNIT_TEST is not set
# CONFIG_WERROR is not set
# CONFIG_WARN_SIMPLE_MSG is not set
CONFIG_NO_DEBUG_LIB=y
# CONFIG_DMALLOC is not set
# CONFIG_EFENCE is not set
@ -462,6 +463,7 @@ CONFIG_FEATURE_FIND_SIZE=y
CONFIG_FEATURE_FIND_PRUNE=y
CONFIG_FEATURE_FIND_QUIT=y
# CONFIG_FEATURE_FIND_DELETE is not set
CONFIG_FEATURE_FIND_EMPTY=y
CONFIG_FEATURE_FIND_PATH=y
CONFIG_FEATURE_FIND_REGEX=y
# CONFIG_FEATURE_FIND_CONTEXT is not set
@ -692,6 +694,7 @@ CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y
CONFIG_SWITCH_ROOT=y
# CONFIG_TASKSET is not set
# CONFIG_FEATURE_TASKSET_FANCY is not set
# CONFIG_FEATURE_TASKSET_CPULIST is not set
CONFIG_UEVENT=y
CONFIG_UMOUNT=y
CONFIG_FEATURE_UMOUNT_ALL=y
@ -805,6 +808,7 @@ CONFIG_MAKEDEVS=y
CONFIG_FEATURE_MAKEDEVS_TABLE=y
# CONFIG_MAN is not set
CONFIG_MICROCOM=y
CONFIG_MIM=y
CONFIG_MT=y
# CONFIG_NANDWRITE is not set
# CONFIG_NANDDUMP is not set
@ -1095,6 +1099,7 @@ CONFIG_SH_IS_ASH=y
# CONFIG_BASH_IS_ASH is not set
# CONFIG_BASH_IS_HUSH is not set
CONFIG_BASH_IS_NONE=y
CONFIG_SHELL_ASH=y
CONFIG_ASH=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
CONFIG_ASH_INTERNAL_GLOB=y
@ -1115,6 +1120,7 @@ CONFIG_ASH_GETOPTS=y
CONFIG_ASH_CMDCMD=y
# CONFIG_CTTYHACK is not set
# CONFIG_HUSH is not set
# CONFIG_SHELL_HUSH is not set
# CONFIG_HUSH_BASH_COMPAT is not set
# CONFIG_HUSH_BRACE_EXPANSION is not set
# CONFIG_HUSH_LINENO_VAR is not set
@ -1177,6 +1183,7 @@ CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
# CONFIG_FEATURE_SYSLOGD_DUP is not set
# CONFIG_FEATURE_SYSLOGD_CFG is not set
# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
# CONFIG_FEATURE_IPC_SYSLOG is not set
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0

View File

@ -25,6 +25,7 @@ CONFIG_CPU_FREQ=y
CONFIG_CPUFREQ_DT=y
CONFIG_VFP=y
CONFIG_NEON=y
CONFIG_KERNEL_MODE_NEON=y
# CONFIG_COREDUMP is not set
CONFIG_HIBERNATION=y
CONFIG_PM_STD_PARTITION="/dev/mmcblk0p2"

View File

@ -1,7 +1,9 @@
BR2_arm=y
BR2_cortex_a7=y
BR2_ARM_FPU_VFPV4=y
BR2_DL_DIR="../download"
BR2_CCACHE=y
BR2_OPTIMIZE_FAST=y
BR2_SHARED_STATIC_LIBS=y
BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_RECOVERY_PATH)/board/funkey/patches"
BR2_TOOLCHAIN_BUILDROOT_VENDOR="funkey"

@ -1 +1 @@
Subproject commit cbb0483f9875d6e24ce32e9259cccfdac21ff20a
Subproject commit aa82be68228451e436c9b9b529eecd794d321403

View File

@ -31,7 +31,7 @@ image sdcard.img {
partition-type = 0x83
bootable = "yes"
image = "FunKey/output/images/rootfs.ext4"
size = 128M # This will be resized to 1G during first boot
size = 160M # This will be resized to 1G during first boot
}
# These partitions will be created during first boot