diff options
-rw-r--r-- | Makefile.libretro | 21 | ||||
-rw-r--r-- | frontend/cspace.c | 50 |
2 files changed, 50 insertions, 21 deletions
diff --git a/Makefile.libretro b/Makefile.libretro index fb13657..b085912 100644 --- a/Makefile.libretro +++ b/Makefile.libretro @@ -53,11 +53,20 @@ else ifeq ($(platform), osx) fpic += -mmacosx-version-min=10.1 # iOS +else ifeq ($(platform),$(filter $(platform),ios-arm64)) + ARCH := arm64 + USE_DYNAREC = 0 + HAVE_NEON = 0 + BUILTIN_GPU = peops + TARGET := $(TARGET_NAME)_libretro_ios.dylib + else ifneq (,$(findstring ios,$(platform))) ARCH := arm USE_DYNAREC ?= 1 + HAVE_NEON = 1 + BUILTIN_GPU = neon TARGET := $(TARGET_NAME)_libretro_ios.dylib -ifeq ($(USE_DYNAREC),0) +ifeq ($(USE_DYNAREC),1) # Override TARGET := $(TARGET_NAME)_interpreter_libretro_ios.dylib endif @@ -72,8 +81,6 @@ endif CC_AS = perl ./tools/gas-preprocessor.pl $(CC) CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm ASFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon - HAVE_NEON = 1 - BUILTIN_GPU = neon CFLAGS += -DIOS ifeq ($(platform),ios9) CC += -miphoneos-version-min=8.0 @@ -122,7 +129,7 @@ else ifeq ($(platform), vita) AR = arm-vita-eabi-ar$(EXE_EXT) CFLAGS += -DVITA CFLAGS += -mcpu=cortex-a8 -mtune=cortex-a8 -mfpu=neon -marm - CFLAGS += -fsingle-precision-constant -mword-relocations -fno-unwind-tables + CFLAGS += -fsingle-precision-constant -mword-relocations -fno-unwind-tables CFLAGS += -fno-asynchronous-unwind-tables -ftree-vectorize -funroll-loops CFLAGS += -fno-optimize-sibling-calls CFLAGS += -I$(VITASDK)/include -Ifrontend/vita @@ -148,7 +155,7 @@ else ifeq ($(platform), ctr) CFLAGS += -DARM11 -D_3DS -DNO_OS -DNO_DYLIB -DNO_SOCKET CFLAGS += -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft CFLAGS += -Wall -mword-relocations - CFLAGS += -fomit-frame-pointer -ffast-math + CFLAGS += -fomit-frame-pointer -ffast-math CFLAGS += -Ifrontend/3ds CFLAGS += -Werror=implicit-function-declaration @@ -209,7 +216,7 @@ else ifeq ($(platform), rpi2) ARCH = arm BUILTIN_GPU = neon USE_DYNAREC = 1 - + #Raspberry Pi 3 else ifeq ($(platform), rpi3) TARGET := $(TARGET_NAME)_libretro.so @@ -256,7 +263,7 @@ else BUILTIN_GPU = peops PLATFORM = libretro MAIN_LDFLAGS += -static-libgcc -static-libstdc++ -s - CFLAGS += -D__WIN32__ -DNO_DYLIB + CFLAGS += -D__WIN32__ -DNO_DYLIB MMAP_WIN32=1 MAIN_LDLIBS += -lws2_32 LIBPTHREAD := diff --git a/frontend/cspace.c b/frontend/cspace.c index 33a981d..55d4ac6 100644 --- a/frontend/cspace.c +++ b/frontend/cspace.c @@ -34,24 +34,46 @@ void bgr555_to_rgb565(void *dst_, const void *src_, int bytes) #endif +#ifdef __arm64__ + +void bgr888_to_rgb565(void *dst_, const void *src_, int bytes) +{ + const unsigned char *src = src_; + unsigned int *dst = dst_; + unsigned int r1, g1, b1, r2, g2, b2; + + for (; bytes >= 6; bytes -= 6, src += 6, dst++) { + r1 = src[0] & 0xf8; + g1 = src[1] & 0xfc; + b1 = src[2] & 0xf8; + r2 = src[3] & 0xf8; + g2 = src[4] & 0xfc; + b2 = src[5] & 0xf8; + *dst = (r2 << 24) | (g2 << 19) | (b2 << 13) | + (r1 << 8) | (g1 << 3) | (b1 >> 3); + } +} + +#endif + #ifndef __ARM_NEON__ void bgr888_to_rgb565(void *dst_, const void *src_, int bytes) { - const unsigned char *src = src_; - unsigned int *dst = dst_; - unsigned int r1, g1, b1, r2, g2, b2; - - for (; bytes >= 6; bytes -= 6, src += 6, dst++) { - r1 = src[0] & 0xf8; - g1 = src[1] & 0xfc; - b1 = src[2] & 0xf8; - r2 = src[3] & 0xf8; - g2 = src[4] & 0xfc; - b2 = src[5] & 0xf8; - *dst = (r2 << 24) | (g2 << 19) | (b2 << 13) | - (r1 << 8) | (g1 << 3) | (b1 >> 3); - } + const unsigned char *src = src_; + unsigned int *dst = dst_; + unsigned int r1, g1, b1, r2, g2, b2; + + for (; bytes >= 6; bytes -= 6, src += 6, dst++) { + r1 = src[0] & 0xf8; + g1 = src[1] & 0xfc; + b1 = src[2] & 0xf8; + r2 = src[3] & 0xf8; + g2 = src[4] & 0xfc; + b2 = src[5] & 0xf8; + *dst = (r2 << 24) | (g2 << 19) | (b2 << 13) | + (r1 << 8) | (g1 << 3) | (b1 >> 3); + } } // TODO? |