Hi, Having been pretty unsatisfied with the performance of fs-uae (and emulators in general) on OpenBSD, I asked upstream what I could do to make it run faster and rid of jerky screen updates and frame drops. If you press ctrl+f10 in fs-uae it displays diagnostics. I sent upstream a screenshot. Surprisingly the slowness is not a symptom of slow graphics rendering, but rather of cpu core emulation.
I experimented by cranking the optimiser to -O3 for fs-uae only. I wasn't expecting much of a difference, but in this particular case it makes a big difference. It makes some of the more demanding amiga games, like pinball dreams and pinball fantasies usable on OpenBSD (even with the accuracy knob set to the highest). Now, I know we don't usually like to turn the optimiser up past -O2 for fear of compiler bugs making crappy code, however, the code gcc has made in this case for my amd64 machine seems to be ok. I spoke to Jasper on icb about the possibility of making exceptions. We came to the conclusion that we could allow exceptions for selected ports (I guess where latency/lag is critical) as long as we test carefully. We could: * Turn on -O3 unconditionally for selected ports. * Turn on -O3 for selected ports on a subset of architectures. * Make -O3 package flavours for selected ports. * Any other suggestions? I prefer one of the first two options. What do people think? Are any of the options acceptable? Below is a diff that makes fs-uae listen to CFLAGS and CXXFLAGS and unconditionally turns on -O3. Try twhat we have in tree and then using the diff an older machine (say an x61). If you do testing, please let me know how you get on. Index: Makefile =================================================================== RCS file: /cvs/ports/emulators/fs-uae/Makefile,v retrieving revision 1.5 diff -u -p -u -r1.5 Makefile --- Makefile 7 Dec 2012 08:43:06 -0000 1.5 +++ Makefile 20 Dec 2012 13:19:23 -0000 @@ -6,7 +6,7 @@ COMMENT = modern Amiga emulator V = 2.0.1 DISTNAME = fs-uae-$V CATEGORIES = emulators -REVISION = 1 +REVISION = 2 HOMEPAGE = http://fengestad.no/fs-uae/ MAINTAINER = Edd Barrett <e...@openbsd.org> @@ -34,7 +34,12 @@ RUN_DEPENDS = devel/desktop-file-utils x11/py-wxPython USE_GMAKE = Yes -MAKE_FLAGS += prefix=${PREFIX} + +# We don't usually crank the optimiser up this high, but +# if you don't it really impacts emulation performace. +CFLAGS = -O3 -pipe +CXXFLAGS= ${CFLAGS} +MAKE_FLAGS += prefix=${PREFIX} CXXFLAGS="${CXXFLAGS}" CFLAGS="${CFLAGS}" NO_REGRESS = Yes Index: patches/patch-libfsemu_Makefile =================================================================== RCS file: /cvs/ports/emulators/fs-uae/patches/patch-libfsemu_Makefile,v retrieving revision 1.1.1.1 diff -u -p -u -r1.1.1.1 patch-libfsemu_Makefile --- patches/patch-libfsemu_Makefile 22 Nov 2012 23:45:20 -0000 1.1.1.1 +++ patches/patch-libfsemu_Makefile 20 Dec 2012 13:19:23 -0000 @@ -1,9 +1,9 @@ $OpenBSD: patch-libfsemu_Makefile,v 1.1.1.1 2012/11/22 23:45:20 edd Exp $ -Missing libpng flags +Missing libpng flags. Strip hardcoded CFLAGS ---- libfsemu/Makefile.orig Tue Nov 20 00:28:32 2012 -+++ libfsemu/Makefile Tue Nov 20 00:28:44 2012 +--- libfsemu/Makefile.orig Fri Oct 26 17:28:39 2012 ++++ libfsemu/Makefile Tue Dec 18 21:28:36 2012 @@ -36,7 +36,7 @@ warnings = -Wall errors = -Werror=implicit-function-declaration cppflags = $(CXXFLAGS) @@ -13,3 +13,16 @@ Missing libpng flags $(CFLAGS) -D_FILE_OFFSET_BITS=64 objects = obj/emu_emu.o obj/emu_video.o obj/emu_audio.o obj/emu_input.o \ obj/emu_menu.o obj/emu_texture.o obj/emu_font.o \ +@@ -53,12 +53,6 @@ objects = obj/emu_emu.o obj/emu_video.o obj/emu_audio. + + ldflags = $(LDFLAGS) + libs = +- +-ifeq ($(debug), 1) +- cflags += -g -O0 -fno-inline +-else ifneq ($(noflags), 1) +- cflags += -g -O2 +-endif + + ifeq ($(os), windows) + -- Best Regards Edd Barrett http://www.theunixzoo.co.uk