From 043a0dd85d86b00c8ca0fbaccca4eef3d222643e Mon Sep 17 00:00:00 2001 From: tiopex <67048640+tiopex@users.noreply.github.com> Date: Mon, 15 Jan 2024 07:09:44 +0100 Subject: [PATCH] [Retroarch] Optimize snes9x2002, gpsp, pcsx_rearmed (#87) * Optimize snes9x2002 * Add optimize flags * optimize gpsp, pcsx_rearmed --- package/libretro-gpsp/0001-fno-PIC.patch | 13 -- .../libretro-gpsp/0001-optimize-flags.patch | 28 +++++ .../0001-use-unai-old-gpu.patch | 33 ++++- .../libretro-pcsx_rearmed.mk | 2 +- ...0001-optimize-flags-enable-frameskip.patch | 59 --------- .../0001-optimize-flags.patch | 117 ++++++++++++++++++ .../libretro-snes9x2002.mk | 6 +- 7 files changed, 177 insertions(+), 81 deletions(-) delete mode 100644 package/libretro-gpsp/0001-fno-PIC.patch create mode 100644 package/libretro-gpsp/0001-optimize-flags.patch delete mode 100644 package/libretro-snes9x2002/0001-optimize-flags-enable-frameskip.patch create mode 100644 package/libretro-snes9x2002/0001-optimize-flags.patch diff --git a/package/libretro-gpsp/0001-fno-PIC.patch b/package/libretro-gpsp/0001-fno-PIC.patch deleted file mode 100644 index 9ee61ad5..00000000 --- a/package/libretro-gpsp/0001-fno-PIC.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/Makefile b/Makefile -index 5a3bab7..0658014 100644 ---- a/Makefile -+++ b/Makefile -@@ -482,7 +482,7 @@ else ifeq ($(platform), miyoo) - CXX = /opt/miyoo/usr/bin/arm-linux-g++ - AR = /opt/miyoo/usr/bin/arm-linux-ar - SHARED := -shared -nostdlib -Wl,--version-script=link.T -- fpic := -fPIC -DPIC -+ fpic := -fno-PIC - CFLAGS += -fomit-frame-pointer -ffast-math -march=armv5te -mtune=arm926ej-s - CFLAGS += -DSMALL_TRANSLATION_CACHE - HAVE_DYNAREC := 1 diff --git a/package/libretro-gpsp/0001-optimize-flags.patch b/package/libretro-gpsp/0001-optimize-flags.patch new file mode 100644 index 00000000..2ba07d7c --- /dev/null +++ b/package/libretro-gpsp/0001-optimize-flags.patch @@ -0,0 +1,28 @@ +diff --git a/Makefile b/Makefile +index 5a3bab7..fda6869 100644 +--- a/Makefile ++++ b/Makefile +@@ -482,11 +482,22 @@ else ifeq ($(platform), miyoo) + CXX = /opt/miyoo/usr/bin/arm-linux-g++ + AR = /opt/miyoo/usr/bin/arm-linux-ar + SHARED := -shared -nostdlib -Wl,--version-script=link.T +- fpic := -fPIC -DPIC ++ fpic := -fno-PIC + CFLAGS += -fomit-frame-pointer -ffast-math -march=armv5te -mtune=arm926ej-s + CFLAGS += -DSMALL_TRANSLATION_CACHE + HAVE_DYNAREC := 1 + CPU_ARCH := arm ++ CFLAGS += -Ofast \ ++ -flto=4 -fwhole-program -fuse-linker-plugin \ ++ -fdata-sections -ffunction-sections -Wl,--gc-sections \ ++ -fno-stack-protector -fno-ident -fomit-frame-pointer \ ++ -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ ++ -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ ++ -fmerge-all-constants -fno-math-errno \ ++ -marm ++ ASFLAGS += $(CFLAGS) ++ ARCH = arm ++ MMAP_JIT_CACHE = 1 + + # Windows + else diff --git a/package/libretro-pcsx_rearmed/0001-use-unai-old-gpu.patch b/package/libretro-pcsx_rearmed/0001-use-unai-old-gpu.patch index 06063aec..40df6f04 100644 --- a/package/libretro-pcsx_rearmed/0001-use-unai-old-gpu.patch +++ b/package/libretro-pcsx_rearmed/0001-use-unai-old-gpu.patch @@ -1,7 +1,16 @@ diff --git a/Makefile b/Makefile -index 4786a922..c5029c00 100644 +index 4786a922..e27ec29b 100644 --- a/Makefile +++ b/Makefile +@@ -9,7 +9,7 @@ else + ifeq ($(platform), $(filter $(platform), vita ctr)) + CFLAGS += -O3 -DNDEBUG + else +-CFLAGS += -O2 -DNDEBUG ++CFLAGS += -O3 -DNDEBUG + endif + endif + ifeq ($(DEBUG_ASAN), 1) @@ -231,20 +231,20 @@ CFLAGS += -DTHREAD_RENDERING OBJS += plugins/gpulib/gpulib_thread_if.o endif @@ -23,29 +32,43 @@ index 4786a922..c5029c00 100644 OBJS += plugins/gpulib/gpulib_thread_if.o endif -plugins/gpu_unai/gpulib_if.o: CFLAGS += -DREARMED -O3 -+plugins/gpu_unai_old/gpulib_if.o: CFLAGS += -DREARMED -O3 ++plugins/gpu_unai_old/gpulib_if.o: CFLAGS += -DREARMED -Ofast CC_LINK = $(CXX) endif diff --git a/Makefile.libretro b/Makefile.libretro -index 1169d892..99fb3870 100644 +index 1169d892..144601b3 100644 --- a/Makefile.libretro +++ b/Makefile.libretro -@@ -532,11 +532,11 @@ else ifneq (,$(findstring armv,$(platform))) +@@ -532,13 +532,25 @@ else ifneq (,$(findstring armv,$(platform))) else ifeq ($(platform), miyoo) TARGET := $(TARGET_NAME)_libretro.so - fpic := -fPIC - CFLAGS += -mcpu=arm926ej-s -fsingle-precision-constant + fpic := -fno-PIC -+ CFLAGS += -mcpu=arm926ej-s -fsingle-precision-constant -Ofast -fdata-sections -ffunction-sections -fsingle-precision-constant -flto ++ CFLAGS += -mcpu=arm926ej-s -fsingle-precision-constant -Ofast -fdata-sections -ffunction-sections -fsingle-precision-constant CFLAGS += -DGPU_UNAI_USE_INT_DIV_MULTINV -D_MIYOO ++ CFLAGS += -Ofast \ ++ -flto=auto -fuse-linker-plugin \ ++ -fno-stack-protector -fno-ident -fomit-frame-pointer \ ++ -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ ++ -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ ++ -fmerge-all-constants -fno-math-errno \ ++ -marm ++ CXXFLAGS += $(CFLAGS) ++ CPPFLAGS += $(CFLAGS) ++ ASFLAGS += $(CFLAGS) ++ THREAD_RENDERING := 1 ARCH = arm - BUILTIN_GPU = unai + BUILTIN_GPU = unai_old DYNAREC = ari64 HAVE_NEON = 0 ++ BASE_ADDR_DYNAMIC := 1 + # Emscripten + else ifeq ($(platform), emscripten) diff --git a/plugins/gpu_unai_old/Makefile b/plugins/gpu_unai_old/Makefile new file mode 100644 index 00000000..1f4b8bdb diff --git a/package/libretro-pcsx_rearmed/libretro-pcsx_rearmed.mk b/package/libretro-pcsx_rearmed/libretro-pcsx_rearmed.mk index 6c9de691..05eded07 100644 --- a/package/libretro-pcsx_rearmed/libretro-pcsx_rearmed.mk +++ b/package/libretro-pcsx_rearmed/libretro-pcsx_rearmed.mk @@ -16,7 +16,7 @@ define LIBRETRO_PCSX_REARMED_BUILD_CMDS CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ - $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" AR="$(TARGET_AR)" -C $(@D) -f Makefile.libretro platform="$(RETROARCH_LIBRETRO_PLATFORM)" CPUFLAGS="-march=armv5tej -mtune=arm926ej-s" + $(MAKE) CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" AR="$(TARGET_AR)" -C $(@D) -f Makefile.libretro platform="$(RETROARCH_LIBRETRO_PLATFORM)" $(TARGET_STRIP) --strip-unneeded $(@D)/*_libretro.so endef diff --git a/package/libretro-snes9x2002/0001-optimize-flags-enable-frameskip.patch b/package/libretro-snes9x2002/0001-optimize-flags-enable-frameskip.patch deleted file mode 100644 index a869aa3b..00000000 --- a/package/libretro-snes9x2002/0001-optimize-flags-enable-frameskip.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff --git a/Makefile b/Makefile -index b6af83f..d6d5d83 100644 ---- a/Makefile -+++ b/Makefile -@@ -250,14 +250,19 @@ else ifeq ($(platform), miyoo) - CC = /opt/miyoo/usr/bin/arm-linux-gcc - CXX = /opt/miyoo/usr/bin/arm-linux-g++ - AR = /opt/miyoo/usr/bin/arm-linux-ar -- fpic := -fPIC -+ fpic := - ARM_ASM = 1 - ASM_CPU = 0 - ASM_SPC700 = 0 - SHARED := -shared -Wl,--version-script=libretro/link.T -Wl,--no-undefined -- CFLAGS += -fomit-frame-pointer -ffast-math -fno-unroll-loops -flto -mcpu=arm926ej-s -- CFLAGS += -DFAST_ALIGNED_LSB_WORD_ACCESS -- -+ CFLAGS += -fomit-frame-pointer -ffast-math -flto -mcpu=arm926ej-s -Ofast -+ CFLAGS += -DFAST_ALIGNED_LSB_WORD_ACCESS \ -+ -DDINGUX \ -+ -DLSB_FIRST \ -+ -DPSS_STYLE=1 \ -+ -DHAVE_ASPRINTF \ -+ -DFRAMESKIP \ -+ -D_REENTRANT - # Windows MSVC 2010 x64 - else ifeq ($(platform), windows_msvc2010_x64) - CC = cl.exe -@@ -396,7 +401,7 @@ LIBRETRO_DIR := ./libretro - ifeq ($(DEBUG), 1) - DEFINES += -O0 -g - else ifneq (,$(findstring msvc,$(platform))) --DEFINES += -O2 -DNDEBUG=1 -+DEFINES += -O3 -DNDEBUG=1 - else - DEFINES += -O3 -DNDEBUG=1 - endif -diff --git a/libretro/libretro_core_options.h b/libretro/libretro_core_options.h -index ad03eae..455debb 100644 ---- a/libretro/libretro_core_options.h -+++ b/libretro/libretro_core_options.h -@@ -68,7 +68,7 @@ struct retro_core_option_v2_definition option_defs_us[] = { - { "fixed_interval", "Fixed Interval" }, - { NULL, NULL }, - }, -- "disabled" -+ "auto" - }, - { - "snes9x2002_frameskip_threshold", -@@ -133,7 +133,7 @@ struct retro_core_option_v2_definition option_defs_us[] = { - { "enabled", NULL }, - { NULL, NULL }, - }, -- "enabled" -+ "disabled" - }, - { - "snes9x2002_low_pass_filter", diff --git a/package/libretro-snes9x2002/0001-optimize-flags.patch b/package/libretro-snes9x2002/0001-optimize-flags.patch new file mode 100644 index 00000000..90159cac --- /dev/null +++ b/package/libretro-snes9x2002/0001-optimize-flags.patch @@ -0,0 +1,117 @@ +diff --git a/Makefile b/Makefile +index b6af83f..f9f146f 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,5 +1,5 @@ + DEBUG = 0 +-LAGFIX = 1 ++LAGFIX = 0 + USE_OLD_COLOUR_OPS = 0 + TARGET_NAME = snes9x2002 + +@@ -27,12 +27,12 @@ LIBS := + + ifeq ($(platform), unix) + TARGET := $(TARGET_NAME)_libretro.so +- fpic := -fPIC ++ fpic := + SHARED := -shared -Wl,--version-script=libretro/link.T -Wl,--no-undefined + CFLAGS += -fno-builtin -fno-exceptions + else ifeq ($(platform), osx) + TARGET := $(TARGET_NAME)_libretro.dylib +- fpic := -fPIC ++ fpic := + SHARED := -dynamiclib + + ifeq ($(CROSS_COMPILE),1) +@@ -45,7 +45,7 @@ else ifeq ($(platform), osx) + + else ifneq (,$(findstring ios,$(platform))) + TARGET := $(TARGET_NAME)_libretro_ios.dylib +- fpic := -fPIC ++ fpic := + SHARED := -dynamiclib + MINVERSION := + +@@ -72,7 +72,7 @@ else ifneq (,$(findstring ios,$(platform))) + CXXFLAGS += $(MINVERSION) + else ifeq ($(platform), tvos-arm64) + TARGET := $(TARGET_NAME)_libretro_tvos.dylib +- fpic := -fPIC ++ fpic := + SHARED := -dynamiclib + ifeq ($(IOSSDK),) + IOSSDK := $(shell xcodebuild -version -sdk appletvos Path) +@@ -143,7 +143,7 @@ else ifeq ($(platform), wiiu) + # NESC, SNESC, C64 mini + else ifeq ($(platform),$(filter $(platform),classic_armv7_a7 unix-armv7-hardfloat-neon)) + TARGET := $(TARGET_NAME)_libretro.so +- fpic := -fPIC ++ fpic := + SHARED := -shared -Wl,--version-script=libretro/link.T -Wl,--no-undefined + CFLAGS += -Ofast \ + -flto=4 -fwhole-program -fuse-linker-plugin \ +@@ -238,7 +238,7 @@ else ifeq ($(platform), gcw0) + CC = /opt/gcw0-toolchain/usr/bin/mipsel-linux-gcc + CXX = /opt/gcw0-toolchain/usr/bin/mipsel-linux-g++ + AR = /opt/gcw0-toolchain/usr/bin/mipsel-linux-ar +- fpic := -fPIC ++ fpic := + SHARED := -shared -Wl,--version-script=libretro/link.T -Wl,--no-undefined + CFLAGS += -std=c99 -fomit-frame-pointer -ffast-math -march=mips32 -mtune=mips32r2 -mhard-float + CFLAGS += -fno-builtin -fno-exceptions +@@ -250,14 +250,28 @@ else ifeq ($(platform), miyoo) + CC = /opt/miyoo/usr/bin/arm-linux-gcc + CXX = /opt/miyoo/usr/bin/arm-linux-g++ + AR = /opt/miyoo/usr/bin/arm-linux-ar +- fpic := -fPIC ++ fpic := + ARM_ASM = 1 + ASM_CPU = 0 + ASM_SPC700 = 0 + SHARED := -shared -Wl,--version-script=libretro/link.T -Wl,--no-undefined +- CFLAGS += -fomit-frame-pointer -ffast-math -fno-unroll-loops -flto -mcpu=arm926ej-s +- CFLAGS += -DFAST_ALIGNED_LSB_WORD_ACCESS +- ++ CFLAGS += -fomit-frame-pointer -ffast-math -flto -mcpu=arm926ej-s \ ++ -Ofast -msoft-float -finline-limit=42 -fno-unroll-loops \ ++ -fno-ipa-cp -fno-common -fno-stack-protector -fno-guess-branch-probability \ ++ -fno-caller-saves -fno-regmove -flto=4 -fwhole-program -fuse-linker-plugin \ ++ -fdata-sections -ffunction-sections -Wl,--gc-sections \ ++ -fno-stack-protector -fno-ident -fomit-frame-pointer \ ++ -falign-functions=1 -falign-jumps=1 -falign-loops=1 \ ++ -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-unroll-loops \ ++ -fmerge-all-constants -fno-math-errno \ ++ -marm ++ CFLAGS += -DFAST_ALIGNED_LSB_WORD_ACCESS \ ++ -DDINGUX \ ++ -DLSB_FIRST \ ++ -DPSS_STYLE=1 \ ++ -DHAVE_ASPRINTF \ ++ -DFRAMESKIP \ ++ -D_REENTRANT + # Windows MSVC 2010 x64 + else ifeq ($(platform), windows_msvc2010_x64) + CC = cl.exe +@@ -396,7 +410,7 @@ LIBRETRO_DIR := ./libretro + ifeq ($(DEBUG), 1) + DEFINES += -O0 -g + else ifneq (,$(findstring msvc,$(platform))) +-DEFINES += -O2 -DNDEBUG=1 ++DEFINES += -O3 -DNDEBUG=1 + else + DEFINES += -O3 -DNDEBUG=1 + endif +diff --git a/libretro/libretro_core_options.h b/libretro/libretro_core_options.h +index ad03eae..6876868 100644 +--- a/libretro/libretro_core_options.h ++++ b/libretro/libretro_core_options.h +@@ -133,7 +133,7 @@ struct retro_core_option_v2_definition option_defs_us[] = { + { "enabled", NULL }, + { NULL, NULL }, + }, +- "enabled" ++ "disabled" + }, + { + "snes9x2002_low_pass_filter", diff --git a/package/libretro-snes9x2002/libretro-snes9x2002.mk b/package/libretro-snes9x2002/libretro-snes9x2002.mk index e111419b..a8adfb58 100644 --- a/package/libretro-snes9x2002/libretro-snes9x2002.mk +++ b/package/libretro-snes9x2002/libretro-snes9x2002.mk @@ -11,10 +11,10 @@ LIBRETRO_SNES9X2002_LICENSE = COPYRIGHT LIBRETRO_SNES9X2002_NON_COMMERCIAL = y # Dynarec on all boards -LIBRETRO_SNES9X2002_SUPP_OPT=USE_DYNAREC=1 +#LIBRETRO_SNES9X2002_SUPP_OPT=USE_DYNAREC=1 -LIBRETRO_SNES9X2002_SUPP_OPT+=ARM_ASM=1 -LIBRETRO_SNES9X2002_SUPP_CFLAGS+=-Wa,-mimplicit-it=thumb +#LIBRETRO_SNES9X2002_SUPP_OPT+=ARM_ASM=1 +#LIBRETRO_SNES9X2002_SUPP_CFLAGS+=-Wa,-mimplicit-it=thumb define LIBRETRO_SNES9X2002_BUILD_CMDS $(SED) "s|-O2|-O3|g" $(@D)/Makefile