mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-02-18 11:55:38 +00:00
Android: Enable armeabi-v7a builds
This commit is contained in:
parent
497759b4d6
commit
a6529a9537
|
@ -196,6 +196,15 @@ elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
|
||||||
set(CPU_ARCH "aarch64")
|
set(CPU_ARCH "aarch64")
|
||||||
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7-a" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l")
|
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7-a" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armv7l")
|
||||||
set(CPU_ARCH "aarch32")
|
set(CPU_ARCH "aarch32")
|
||||||
|
if(ANDROID)
|
||||||
|
# Force ARM mode, since apparently ANDROID_ARM_MODE isn't working..
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm")
|
||||||
|
else()
|
||||||
|
# Enable NEON.
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -marm -march=armv7-a+simd -mfpu=neon-vfpv3")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -marm -march=armv7-a+simd -mfpu=neon-vfpv3")
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Unknown system processor: " ${CMAKE_SYSTEM_PROCESSOR})
|
message(FATAL_ERROR "Unknown system processor: " ${CMAKE_SYSTEM_PROCESSOR})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -30,8 +30,8 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
arguments "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
arguments "-DCMAKE_BUILD_TYPE=Release -DANDROID_ARM_NEON=ON"
|
||||||
abiFilters "arm64-v8a"
|
abiFilters "arm64-v8a", "armeabi-v7a"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@ Log_SetChannel(GPU_SW);
|
||||||
|
|
||||||
#if defined(CPU_X64)
|
#if defined(CPU_X64)
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
|
#elif defined(CPU_AARCH32)
|
||||||
|
#include <arm_neon.h>
|
||||||
#elif defined(CPU_AARCH64)
|
#elif defined(CPU_AARCH64)
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#include <arm64_neon.h>
|
#include <arm64_neon.h>
|
||||||
|
@ -155,7 +157,7 @@ ALWAYS_INLINE void CopyOutRow16<HostDisplayPixelFormat::RGBA5551, u16>(const u16
|
||||||
_mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), value);
|
_mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), value);
|
||||||
dst_ptr += 8;
|
dst_ptr += 8;
|
||||||
}
|
}
|
||||||
#elif defined(CPU_AARCH64)
|
#elif defined(CPU_AARCH32) || defined(CPU_AARCH64)
|
||||||
const u32 aligned_width = Common::AlignDownPow2(width, 8);
|
const u32 aligned_width = Common::AlignDownPow2(width, 8);
|
||||||
for (; col < aligned_width; col += 8)
|
for (; col < aligned_width; col += 8)
|
||||||
{
|
{
|
||||||
|
@ -195,7 +197,7 @@ ALWAYS_INLINE void CopyOutRow16<HostDisplayPixelFormat::RGB565, u16>(const u16*
|
||||||
_mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), value);
|
_mm_storeu_si128(reinterpret_cast<__m128i*>(dst_ptr), value);
|
||||||
dst_ptr += 8;
|
dst_ptr += 8;
|
||||||
}
|
}
|
||||||
#elif defined(CPU_AARCH64)
|
#elif defined(CPU_AARCH32) || defined(CPU_AARCH64)
|
||||||
const u32 aligned_width = Common::AlignDownPow2(width, 8);
|
const u32 aligned_width = Common::AlignDownPow2(width, 8);
|
||||||
const uint16x8_t single_mask = vdupq_n_u16(0x1F);
|
const uint16x8_t single_mask = vdupq_n_u16(0x1F);
|
||||||
for (; col < aligned_width; col += 8)
|
for (; col < aligned_width; col += 8)
|
||||||
|
|
Loading…
Reference in a new issue