Merge pull request #1854 from asmorkalov:android_engine_tegra4i5
This commit is contained in:
commit
901dc3b878
@ -91,6 +91,10 @@ int GetCpuID()
|
|||||||
{
|
{
|
||||||
result |= FEATURES_HAS_NEON2;
|
result |= FEATURES_HAS_NEON2;
|
||||||
}
|
}
|
||||||
|
if (features.end() != features.find(CPU_INFO_VFPV4_STR))
|
||||||
|
{
|
||||||
|
result |= FEATURES_HAS_VFPv4;
|
||||||
|
}
|
||||||
if (features.end() != features.find(CPU_INFO_VFPV3_STR))
|
if (features.end() != features.find(CPU_INFO_VFPV3_STR))
|
||||||
{
|
{
|
||||||
if (features.end () != features.find(CPU_INFO_VFPV3D16_STR))
|
if (features.end () != features.find(CPU_INFO_VFPV3D16_STR))
|
||||||
|
@ -14,8 +14,10 @@
|
|||||||
|
|
||||||
#define FEATURES_HAS_VFPv3d16 1L
|
#define FEATURES_HAS_VFPv3d16 1L
|
||||||
#define FEATURES_HAS_VFPv3 2L
|
#define FEATURES_HAS_VFPv3 2L
|
||||||
#define FEATURES_HAS_NEON 4L
|
#define FEATURES_HAS_VFPv4 4L
|
||||||
#define FEATURES_HAS_NEON2 8L
|
#define FEATURES_HAS_NEON 8L
|
||||||
|
#define FEATURES_HAS_NEON2 16L
|
||||||
|
|
||||||
#define FEATURES_HAS_SSE 1L
|
#define FEATURES_HAS_SSE 1L
|
||||||
#define FEATURES_HAS_SSE2 2L
|
#define FEATURES_HAS_SSE2 2L
|
||||||
#define FEATURES_HAS_SSSE3 4L
|
#define FEATURES_HAS_SSSE3 4L
|
||||||
@ -27,7 +29,9 @@
|
|||||||
#define PLATFORM_TEGRA 1L
|
#define PLATFORM_TEGRA 1L
|
||||||
#define PLATFORM_TEGRA2 2L
|
#define PLATFORM_TEGRA2 2L
|
||||||
#define PLATFORM_TEGRA3 3L
|
#define PLATFORM_TEGRA3 3L
|
||||||
#define PLATFORM_TEGRA4 4L
|
#define PLATFORM_TEGRA4i 4L
|
||||||
|
#define PLATFORM_TEGRA4 5L
|
||||||
|
#define PLATFORM_TEGRA5 6L
|
||||||
|
|
||||||
int DetectKnownPlatforms();
|
int DetectKnownPlatforms();
|
||||||
int GetProcessorCount();
|
int GetProcessorCount();
|
||||||
|
@ -7,8 +7,9 @@
|
|||||||
|
|
||||||
#define CPU_INFO_NEON_STR "neon"
|
#define CPU_INFO_NEON_STR "neon"
|
||||||
#define CPU_INFO_NEON2_STR "neon2"
|
#define CPU_INFO_NEON2_STR "neon2"
|
||||||
#define CPU_INFO_VFPV3_STR "vfpv3"
|
|
||||||
#define CPU_INFO_VFPV3D16_STR "vfpv3d16"
|
#define CPU_INFO_VFPV3D16_STR "vfpv3d16"
|
||||||
|
#define CPU_INFO_VFPV3_STR "vfpv3"
|
||||||
|
#define CPU_INFO_VFPV4_STR "vfpv4"
|
||||||
|
|
||||||
#define CPU_INFO_SSE_STR "sse"
|
#define CPU_INFO_SSE_STR "sse"
|
||||||
#define CPU_INFO_SSE2_STR "sse2"
|
#define CPU_INFO_SSE2_STR "sse2"
|
||||||
|
@ -187,17 +187,26 @@ std::vector<std::pair<int, int> > CommonPackageManager::InitArmRating()
|
|||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3d16));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3d16));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv6 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16));
|
||||||
|
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_TEGRA2, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
|
result.push_back(std::pair<int, int>(PLATFORM_TEGRA2, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_VFPv3));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_VFPv3));
|
||||||
|
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_NEON));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
|
||||||
|
|
||||||
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON));
|
||||||
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv4 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
||||||
|
result.push_back(std::pair<int, int>(PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv4 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv3d16 | FEATURES_HAS_NEON));
|
||||||
|
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
result.push_back(std::pair<int, int>(PLATFORM_TEGRA3, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
||||||
result.push_back(std::pair<int, int>(PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
result.push_back(std::pair<int, int>(PLATFORM_TEGRA4i, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON));
|
||||||
|
result.push_back(std::pair<int, int>(PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON));
|
||||||
|
result.push_back(std::pair<int, int>(PLATFORM_TEGRA5, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ map<int, string> PackageInfo::InitPlatformNameMap()
|
|||||||
result[PLATFORM_TEGRA2] = PLATFORM_TEGRA2_NAME;
|
result[PLATFORM_TEGRA2] = PLATFORM_TEGRA2_NAME;
|
||||||
result[PLATFORM_TEGRA3] = PLATFORM_TEGRA3_NAME;
|
result[PLATFORM_TEGRA3] = PLATFORM_TEGRA3_NAME;
|
||||||
result[PLATFORM_TEGRA4] = PLATFORM_TEGRA4_NAME;
|
result[PLATFORM_TEGRA4] = PLATFORM_TEGRA4_NAME;
|
||||||
|
result[PLATFORM_TEGRA4i] = PLATFORM_TEGRA4_NAME;
|
||||||
|
result[PLATFORM_TEGRA5] = PLATFORM_TEGRA5_NAME;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,12 @@
|
|||||||
#define FEATURES_HAS_SSSE3_NAME "ssse3"
|
#define FEATURES_HAS_SSSE3_NAME "ssse3"
|
||||||
#define FEATURES_HAS_GPU_NAME "gpu"
|
#define FEATURES_HAS_GPU_NAME "gpu"
|
||||||
|
|
||||||
|
// TODO: Do not forget to update PackageInfo::InitPlatformNameMap() after constant changes
|
||||||
#define PLATFORM_TEGRA_NAME "tegra"
|
#define PLATFORM_TEGRA_NAME "tegra"
|
||||||
#define PLATFORM_TEGRA2_NAME "tegra2"
|
#define PLATFORM_TEGRA2_NAME "tegra2"
|
||||||
#define PLATFORM_TEGRA3_NAME "tegra3"
|
#define PLATFORM_TEGRA3_NAME "tegra3"
|
||||||
#define PLATFORM_TEGRA4_NAME "tegra4"
|
#define PLATFORM_TEGRA4_NAME "tegra4"
|
||||||
|
#define PLATFORM_TEGRA5_NAME "tegra5"
|
||||||
|
|
||||||
class PackageInfo
|
class PackageInfo
|
||||||
{
|
{
|
||||||
|
@ -205,7 +205,7 @@ TEST(OpenCVEngineTest, GetPathForCompatiblePackage3)
|
|||||||
{
|
{
|
||||||
sp<IOpenCVEngine> Engine = InitConnect();
|
sp<IOpenCVEngine> Engine = InitConnect();
|
||||||
Starter.PackageManager->InstalledPackages.clear();
|
Starter.PackageManager->InstalledPackages.clear();
|
||||||
Starter.PackageManager->InstallVersion(2040400, PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
|
Starter.PackageManager->InstallVersion(2040400, PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON);
|
||||||
EXPECT_FALSE(NULL == Engine.get());
|
EXPECT_FALSE(NULL == Engine.get());
|
||||||
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
|
String16 result = Engine->GetLibPathByVersion(String16("2.4"));
|
||||||
#ifdef __SUPPORT_TEGRA3
|
#ifdef __SUPPORT_TEGRA3
|
||||||
|
@ -34,6 +34,13 @@ TEST(PackageInfo, FullNameArmv7VFPv3)
|
|||||||
EXPECT_STREQ("org.opencv.lib_v23_armv7a", name.c_str());
|
EXPECT_STREQ("org.opencv.lib_v23_armv7a", name.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(PackageInfo, FullNameArmv7VFPv4)
|
||||||
|
{
|
||||||
|
PackageInfo info(2030300, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv4);
|
||||||
|
string name = info.GetFullName();
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v23_armv7a", name.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
TEST(PackageInfo, FullNameArmv7VFPv3Neon)
|
TEST(PackageInfo, FullNameArmv7VFPv3Neon)
|
||||||
{
|
{
|
||||||
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
|
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
|
||||||
@ -100,6 +107,36 @@ TEST(PackageInfo, FullNameTegra4)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(PackageInfo, FullNameTegra4i)
|
||||||
|
{
|
||||||
|
PackageInfo info(2040700, PLATFORM_TEGRA4i, ARCH_ARMv7 | FEATURES_HAS_NEON);
|
||||||
|
string name = info.GetFullName();
|
||||||
|
#ifdef __SUPPORT_TEGRA3
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v24_tegra4", name.c_str());
|
||||||
|
#else
|
||||||
|
# ifdef __SUPPORT_ARMEABI_V7A_FEATURES
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v24_armv7a_neon", name.c_str());
|
||||||
|
# else
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v24_armv7a", name.c_str());
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(PackageInfo, FullNameTegra5)
|
||||||
|
{
|
||||||
|
PackageInfo info(2040700, PLATFORM_TEGRA5, ARCH_ARMv7 | FEATURES_HAS_NEON);
|
||||||
|
string name = info.GetFullName();
|
||||||
|
#ifdef __SUPPORT_TEGRA3
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v24_tegra5", name.c_str());
|
||||||
|
#else
|
||||||
|
# ifdef __SUPPORT_ARMEABI_V7A_FEATURES
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v24_armv7a_neon", name.c_str());
|
||||||
|
# else
|
||||||
|
EXPECT_STREQ("org.opencv.lib_v24_armv7a", name.c_str());
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
TEST(PackageInfo, FullNameX86SSE2)
|
TEST(PackageInfo, FullNameX86SSE2)
|
||||||
{
|
{
|
||||||
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2);
|
PackageInfo info(2030000, PLATFORM_UNKNOWN, ARCH_X86 | FEATURES_HAS_SSE2);
|
||||||
|
@ -105,8 +105,8 @@ TEST(PackageManager, GetPackagePathForTegra3)
|
|||||||
TEST(PackageManager, GetPackagePathForTegra4)
|
TEST(PackageManager, GetPackagePathForTegra4)
|
||||||
{
|
{
|
||||||
PackageManagerStub pm;
|
PackageManagerStub pm;
|
||||||
EXPECT_TRUE(pm.InstallVersion(2040400, PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON));
|
EXPECT_TRUE(pm.InstallVersion(2040400, PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON));
|
||||||
string path = pm.GetPackagePathByVersion(2040400, PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_NEON);
|
string path = pm.GetPackagePathByVersion(2040400, PLATFORM_TEGRA4, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON);
|
||||||
#ifdef __SUPPORT_TEGRA3
|
#ifdef __SUPPORT_TEGRA3
|
||||||
EXPECT_STREQ("/data/data/org.opencv.lib_v24_tegra4/lib", path.c_str());
|
EXPECT_STREQ("/data/data/org.opencv.lib_v24_tegra4/lib", path.c_str());
|
||||||
#else
|
#else
|
||||||
@ -118,6 +118,22 @@ TEST(PackageManager, GetPackagePathForTegra4)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(PackageManager, GetPackagePathForTegra5)
|
||||||
|
{
|
||||||
|
PackageManagerStub pm;
|
||||||
|
EXPECT_TRUE(pm.InstallVersion(2040400, PLATFORM_TEGRA5, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON));
|
||||||
|
string path = pm.GetPackagePathByVersion(2040400, PLATFORM_TEGRA5, ARCH_ARMv7 | FEATURES_HAS_VFPv3 | FEATURES_HAS_VFPv4 | FEATURES_HAS_NEON);
|
||||||
|
#ifdef __SUPPORT_TEGRA3
|
||||||
|
EXPECT_STREQ("/data/data/org.opencv.lib_v24_tegra5/lib", path.c_str());
|
||||||
|
#else
|
||||||
|
#ifdef __SUPPORT_ARMEABI_V7A_FEATURES
|
||||||
|
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a_neon/lib", path.c_str());
|
||||||
|
#else
|
||||||
|
EXPECT_STREQ("/data/data/org.opencv.lib_v24_armv7a/lib", path.c_str());
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef __SUPPORT_MIPS
|
#ifdef __SUPPORT_MIPS
|
||||||
TEST(PackageManager, GetPackagePathForMips)
|
TEST(PackageManager, GetPackagePathForMips)
|
||||||
{
|
{
|
||||||
|
@ -19,8 +19,9 @@ public class HardwareDetector
|
|||||||
// ARM specific features
|
// ARM specific features
|
||||||
public static final int FEATURES_HAS_VFPv3d16 = 0x01;
|
public static final int FEATURES_HAS_VFPv3d16 = 0x01;
|
||||||
public static final int FEATURES_HAS_VFPv3 = 0x02;
|
public static final int FEATURES_HAS_VFPv3 = 0x02;
|
||||||
public static final int FEATURES_HAS_NEON = 0x04;
|
public static final int FEATURES_HAS_VFPv4 = 0x04;
|
||||||
public static final int FEATURES_HAS_NEON2 = 0x08;
|
public static final int FEATURES_HAS_NEON = 0x08;
|
||||||
|
public static final int FEATURES_HAS_NEON2 = 0x16;
|
||||||
|
|
||||||
// X86 specific features
|
// X86 specific features
|
||||||
public static final int FEATURES_HAS_SSE = 0x01;
|
public static final int FEATURES_HAS_SSE = 0x01;
|
||||||
|
@ -111,10 +111,14 @@ public class ManagerActivity extends Activity
|
|||||||
{
|
{
|
||||||
HardwarePlatformView.setText("Tegra 4i");
|
HardwarePlatformView.setText("Tegra 4i");
|
||||||
}
|
}
|
||||||
else
|
else if (HardwareDetector.PLATFORM_TEGRA4 == Platfrom)
|
||||||
{
|
{
|
||||||
HardwarePlatformView.setText("Tegra 4");
|
HardwarePlatformView.setText("Tegra 4");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HardwarePlatformView.setText("Tegra 5");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -477,9 +481,16 @@ public class ManagerActivity extends Activity
|
|||||||
{
|
{
|
||||||
// TODO: update if package will be published
|
// TODO: update if package will be published
|
||||||
if ((features & HardwareDetector.FEATURES_HAS_NEON) == HardwareDetector.FEATURES_HAS_NEON)
|
if ((features & HardwareDetector.FEATURES_HAS_NEON) == HardwareDetector.FEATURES_HAS_NEON)
|
||||||
|
{
|
||||||
|
if ((features & HardwareDetector.FEATURES_HAS_VFPv4) == HardwareDetector.FEATURES_HAS_VFPv4)
|
||||||
|
{
|
||||||
|
return "with Neon and VFPv4";
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
return "with Neon";
|
return "with Neon";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if ((features & HardwareDetector.FEATURES_HAS_VFPv3) == HardwareDetector.FEATURES_HAS_VFPv3)
|
else if ((features & HardwareDetector.FEATURES_HAS_VFPv3) == HardwareDetector.FEATURES_HAS_VFPv3)
|
||||||
{
|
{
|
||||||
return "with VFP v3";
|
return "with VFP v3";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user