Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added aarch64 platform support #116

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 7 additions & 2 deletions Include/Linux-Arm/OniPlatformLinux-Arm.h
Expand Up @@ -29,8 +29,13 @@
//---------------------------------------------------------------------------
#undef ONI_PLATFORM
#undef ONI_PLATFORM_STRING
#define ONI_PLATFORM ONI_PLATFORM_LINUX_ARM
#define ONI_PLATFORM_STRING "Linux-Arm"
#ifdef __aarch64__
# define ONI_PLATFORM ONI_PLATFORM_LINUX_AARCH64
# define ONI_PLATFORM_STRING "Linux-AArch64"
#else
# define ONI_PLATFORM ONI_PLATFORM_LINUX_ARM
# define ONI_PLATFORM_STRING "Linux-Arm"
#endif

#endif // ONIPLATFORMLINUX_ARM_H

3 changes: 2 additions & 1 deletion Include/OniPlatform.h
Expand Up @@ -27,6 +27,7 @@
#define ONI_PLATFORM_LINUX_ARM 3
#define ONI_PLATFORM_MACOSX 4
#define ONI_PLATFORM_ANDROID_ARM 5
#define ONI_PLATFORM_LINUX_AARCH64 6

#if (defined _WIN32)
# ifndef RC_INVOKED
Expand All @@ -39,7 +40,7 @@
# include "Android-Arm/OniPlatformAndroid-Arm.h"
#elif (__linux__ && (i386 || __x86_64__))
# include "Linux-x86/OniPlatformLinux-x86.h"
#elif (__linux__ && __arm__)
#elif (__linux__ && (__arm__ || __aarch64__))
# include "Linux-Arm/OniPlatformLinux-Arm.h"
#elif _ARC
# include "ARC/OniPlaformARC.h"
Expand Down
2 changes: 1 addition & 1 deletion Source/Drivers/PS1080/Sensor/XnDeviceSensorInit.h
Expand Up @@ -57,7 +57,7 @@

#define XN_SENSOR_USB_MISC_BUFFER_SIZE 0x1000
#define XN_SENSOR_USB_MISC_BUFFERS 1
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
#define XN_SENSOR_USB_IMAGE_BUFFER_SIZE_MULTIPLIER_ISO 32
#define XN_SENSOR_USB_IMAGE_BUFFER_SIZE_MULTIPLIER_BULK 40
#define XN_SENSOR_USB_IMAGE_BUFFER_SIZE_MULTIPLIER_LOWBAND_ISO 16
Expand Down
2 changes: 1 addition & 1 deletion Source/Drivers/PS1080/Sensor/XnSensorDepthStream.h
Expand Up @@ -32,7 +32,7 @@
//---------------------------------------------------------------------------
// Defines
//---------------------------------------------------------------------------
#if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
#if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
#define XN_DEPTH_STREAM_DEFAULT_INPUT_FORMAT XN_IO_DEPTH_FORMAT_UNCOMPRESSED_12_BIT
#define XN_DEPTH_STREAM_DEFAULT_RESOLUTION XN_RESOLUTION_QQVGA
#else
Expand Down
2 changes: 1 addition & 1 deletion Source/Drivers/PSLink/DriverImpl/LinkOniDepthStream.cpp
Expand Up @@ -233,7 +233,7 @@ XnStatus LinkOniDepthStream::GetDefaultVideoMode( OniVideoMode* pVideoMode )
if(pVideoMode != NULL)
{
//ARM cannot handle QVGA, so we default to QQVGA
#if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
#if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
pVideoMode->resolutionX = 160;
pVideoMode->resolutionY = 120;
#else
Expand Down
2 changes: 1 addition & 1 deletion Source/Drivers/PSLink/DriverImpl/LinkOniDevice.cpp
Expand Up @@ -36,7 +36,7 @@

#if XN_PLATFORM == XN_PLATFORM_WIN32
#define XN_DEFAULT_USB_INTERFACE PS_USB_INTERFACE_ISO_ENDPOINTS;
#elif XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM
#elif XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64
#define XN_DEFAULT_USB_INTERFACE PS_USB_INTERFACE_BULK_ENDPOINTS;
#else
#error Unsupported platform!
Expand Down
Expand Up @@ -36,7 +36,7 @@ namespace xn
const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_BUFFER_NUM_PACKETS_BULK = 120;
const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_NUM_BUFFERS_BULK = 8;
const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_TIMEOUT_BULK = 1000;
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_BUFFER_NUM_PACKETS_ISO = 32;
const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_NUM_BUFFERS_ISO = 16;
const XnUInt32 ClientUSBInDataEndpoint::READ_THREAD_TIMEOUT_ISO = 100;
Expand Down
2 changes: 1 addition & 1 deletion Source/Tools/NiViewer/NiViewer.cpp
Expand Up @@ -68,7 +68,7 @@
#if (ONI_PLATFORM == ONI_PLATFORM_WIN32)
#include <conio.h>
#include <direct.h>
#elif (ONI_PLATFORM == ONI_PLATFORM_LINUX_X86 || ONI_PLATFORM == ONI_PLATFORM_LINUX_ARM || ONI_PLATFORM == ONI_PLATFORM_MACOSX)
#elif (ONI_PLATFORM == ONI_PLATFORM_LINUX_X86 || ONI_PLATFORM == ONI_PLATFORM_LINUX_ARM || ONI_PLATFORM == ONI_PLATFORM_MACOSX || ONI_PLATFORM == ONI_PLATFORM_LINUX_AARCH64)
#define _getch() getchar()
#endif

Expand Down
2 changes: 2 additions & 0 deletions ThirdParty/PSCommon/BuildSystem/CommonDefs.mak
Expand Up @@ -18,6 +18,8 @@ else ifneq (,$(findstring i386,$(MACHINE)))
HOST_PLATFORM = x86
else ifneq (,$(findstring arm,$(MACHINE)))
HOST_PLATFORM = Arm
else ifneq (,$(findstring aarch64,$(MACHINE)))
HOST_PLATFORM = AArch64
else
DUMMY:=$(error Can't determine host platform)
endif
Expand Down
14 changes: 14 additions & 0 deletions ThirdParty/PSCommon/BuildSystem/Platform.AArch64
@@ -0,0 +1,14 @@
ifeq "$(CFG)" "Release"

# Hardware specifying flags
CFLAGS += -march=native -mtune=native

# Optimization level, minus currently buggy optimizing methods (which break bit-exact)
CFLAGS += -O3 -fno-tree-pre -fno-strict-aliasing

# More optimization flags
CFLAGS += -ftree-vectorize -ffast-math -funsafe-math-optimizations #-fsingle-precision-constant

#DEFINES += XN_NEON
CFLAGS += -flax-vector-conversions
endif
Expand Up @@ -55,4 +55,4 @@
#define XN_PLATFORM_LINUX_NO_SHM
#define XN_PLATFORM_LINUX_NO_PTHREAD_CANCEL

#endif //_XN_PLATFORM_LINUX_ARM_H_
#endif //_XN_PLATFORM_ANDROID_ARM_H_
Expand Up @@ -29,8 +29,13 @@
//---------------------------------------------------------------------------
#undef XN_PLATFORM
#undef XN_PLATFORM_STRING
#ifdef __aarch64__
#define XN_PLATFORM XN_PLATFORM_LINUX_AARCH64
#define XN_PLATFORM_STRING "Linux-AArch64"
#else
#define XN_PLATFORM XN_PLATFORM_LINUX_ARM
#define XN_PLATFORM_STRING "Linux-Arm"
#endif

#endif //_XN_PLATFORM_LINUX_ARM_H_

2 changes: 1 addition & 1 deletion ThirdParty/PSCommon/XnLib/Include/XnOS.h
Expand Up @@ -43,7 +43,7 @@
//---------------------------------------------------------------------------
#if (XN_PLATFORM == XN_PLATFORM_WIN32)
#include "Win32/XnOSWin32.h"
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
#include "Linux-x86/XnOSLinux-x86.h"
#elif (XN_PLATFORM == XN_PLATFORM_MACOSX)
#include "MacOSX/XnOSMacOSX.h"
Expand Down
3 changes: 2 additions & 1 deletion ThirdParty/PSCommon/XnLib/Include/XnPlatform.h
Expand Up @@ -31,6 +31,7 @@
#define XN_PLATFORM_LINUX_ARM 7
#define XN_PLATFORM_MACOSX 8
#define XN_PLATFORM_ANDROID_ARM 9
#define XN_PLATFORM_LINUX_AARCH64 10

#define XN_PLATFORM_IS_LITTLE_ENDIAN 1
#define XN_PLATFORM_IS_BIG_ENDIAN 2
Expand All @@ -51,7 +52,7 @@
#include "Android-Arm/XnPlatformAndroid-Arm.h"
#elif (__linux__ && (i386 || __x86_64__))
#include "Linux-x86/XnPlatformLinux-x86.h"
#elif (__linux__ && __arm__)
#elif (__linux__ && (__arm__ || __aarch64__))
#include "Linux-Arm/XnPlatformLinux-Arm.h"
#elif _ARC
#include "ARC/XnPlaformARC.h"
Expand Down
2 changes: 1 addition & 1 deletion ThirdParty/PSCommon/XnLib/Include/XnUSBDevice.h
Expand Up @@ -47,7 +47,7 @@
#define USB_DT_DEVICE_SIZE 0
#define USB_DT_DEVICE 0

#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM)
#elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
#include <linux/usb/ch9.h>
typedef struct usb_endpoint_descriptor XnUSBEndpointDescriptor;
typedef struct usb_interface_descriptor XnUSBInterfaceDescriptor;
Expand Down
2 changes: 1 addition & 1 deletion ThirdParty/PSCommon/XnLib/Source/Linux/XnLinuxUSB.cpp
Expand Up @@ -36,7 +36,7 @@
#include <XnOSCpp.h>
#include <XnList.h>

#if (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM)
#if (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)
#include <libudev.h>
#define XN_USE_UDEV
#endif
Expand Down
4 changes: 2 additions & 2 deletions ThirdParty/PSCommon/XnLib/Source/Linux/XnLinuxUSBDevice.cpp
Expand Up @@ -23,7 +23,7 @@
//---------------------------------------------------------------------------
#include <XnPlatform.h>

#if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM)
#if (XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64)

#include <XnUSBDevice.h>
#include <linux/usb/gadgetfs.h>
Expand Down Expand Up @@ -1148,4 +1148,4 @@ XN_C_API XnStatus XN_C_DECL xnUSBDeviceResetEndpoint(XnUSBDevice* pDevice, XnUIn
return XN_STATUS_OK;
}

#endif // XN_PLATFORM == XN_PLATFORM_LINUX_ARM
#endif // XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_LINUX_AARCH64