OpenXR - Support multiple loaders

This commit is contained in:
Lubos 2022-09-24 22:11:08 +02:00
parent ec22cee96a
commit 1fdbde8ee9
10 changed files with 995 additions and 2843 deletions

View File

@ -120,8 +120,16 @@ if(OPENXR)
add_definitions(-DOPENXR)
add_library(openxr SHARED IMPORTED)
include_directories(ext/openxr)
set_property(TARGET openxr PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/ext/openxr/libs/arm64-v8a/libopenxr_loader.so")
message("OpenXR enabled")
if(OPENXR_PLATFORM_PICO)
add_definitions(-DOPENXR_PLATFORM_PICO)
set_property(TARGET openxr PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/ext/openxr/libs/pico/arm64-v8a/libopenxr_loader.so")
message("OpenXR for Pico enabled")
endif()
if(OPENXR_PLATFORM_QUEST)
add_definitions(-DOPENXR_PLATFORM_QUEST)
set_property(TARGET openxr PROPERTY IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/ext/openxr/libs/quest/arm64-v8a/libopenxr_loader.so")
message("OpenXR for Quest enabled")
endif()
endif()
if(GOLD)

View File

@ -160,6 +160,7 @@ android {
'-DANDROID_CPP_FEATURES=',
'-DANDROID_STL=c++_static',
'-DANDROID_ARM_NEON=TRUE',
'-DOPENXR_PLATFORM_PICO=TRUE',
'-DOPENXR=TRUE'
}
}
@ -179,6 +180,7 @@ android {
'-DANDROID_CPP_FEATURES=',
'-DANDROID_STL=c++_static',
'-DANDROID_ARM_NEON=TRUE',
'-DOPENXR_PLATFORM_QUEST=TRUE',
'-DOPENXR=TRUE'
}
}

View File

@ -1547,6 +1547,6 @@ public abstract class NativeActivity extends Activity {
}
private boolean isVRDevice() {
return BuildConfig.FLAVOR.startsWith("vr_") == 0;
return BuildConfig.FLAVOR.startsWith("vr_");
}
}

Binary file not shown.

1705
ext/openxr/openxr.h Executable file → Normal file

File diff suppressed because it is too large Load Diff

907
ext/openxr/openxr_pico.h Normal file
View File

@ -0,0 +1,907 @@
#ifndef OPENXR_PICO_H_
#define OPENXR_PICO_H_ 1
#include "openxr.h"
#if defined(__cplusplus)
extern "C" {
#endif
typedef struct {
char software_ver[6];
char hardware_ver[3];
char sn[18];
char addr[6];
char ndi_version[5];
} XrControllerInfo;
typedef enum
{
XR_CONTROLLER_KEY_HOME = 0,
XR_CONTROLLER_KEY_AX = 1,
XR_CONTROLLER_KEY_BY= 2,
XR_CONTROLLER_KEY_BACK = 3,
XR_CONTROLLER_KEY_TRIGGER = 4,
XR_CONTROLLER_KEY_VOL_UP = 5,
XR_CONTROLLER_KEY_VOL_DOWN = 6,
XR_CONTROLLER_KEY_ROCKER = 7,
XR_CONTROLLER_KEY_GRIP = 8,
XR_CONTROLLER_KEY_TOUCHPAD = 9,
XR_CONTROLLER_KEY_LASTONE = 127,
XR_CONTROLLER_TOUCH_AX = 128,
XR_CONTROLLER_TOUCH_BY = 129,
XR_CONTROLLER_TOUCH_ROCKER = 130,
XR_CONTROLLER_TOUCH_TRIGGER = 131,
XR_CONTROLLER_TOUCH_THUMB = 132,
XR_CONTROLLER_TOUCH_LASTONE = 255
} XrControllerKeyMap;
enum xrt_device_eventtype
{
XRT_DEVICE_CONNECTCHANGED = 0,
XRT_DEVICE_MAIN_CHANGED = 1,
XRT_DEVICE_VERSION = 2,
XRT_DEVICE_SN = 3,
XRT_DEVICE_BIND_STATUS = 4,
XRT_STATION_STATUS = 5,
XRT_DEVICE_IOBUSY = 6,
XRT_DEVICE_OTASTAUS = 7,
XRT_DEVICE_ID = 8,
// XRT_DEVICE_OTASATAION_PROGRESS = 9,
// XRT_DEVICE_OTASATAION_CODE = 10,
// XRT_DEVICE_OTACONTROLLER_PROGRESS = 11,
// XRT_DEVICE_OTACONTROLLER_CODE = 12,
// XRT_DEVICE_OTA_SUCCESS = 13,
// XRT_DEVICE_BLEMAC = 14,
XRT_DEVICE_HANDNESS_CHANGED = 15,
XRT_DEVICE_CHANNEL = 16,
XRT_DEVICE_LOSSRATE = 17,
XRT_DEVICE_THREAD_STARTED = 18
};
typedef struct XrRigidBodyPosef_ {
XrPosef Pose;
XrVector3f AngularVelocity;
XrVector3f LinearVelocity;
XrVector3f AngularAcceleration;
XrVector3f LinearAcceleration;
int64_t TimeInSeconds; //< Absolute time of this pose.
int64_t PredictionInSeconds; //< Seconds this pose was predicted ahead.
} XrRigidBodyPosef;
typedef struct XrTracking_ {
unsigned int Status;
XrRigidBodyPosef ControllerLocalPose;
XrRigidBodyPosef ControllerGlobalPose;
} XrTracking;
//pico add event:Seethrough
typedef struct XrEventDataSeethroughStateChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
int state;
} XrEventDataSeethroughStateChanged;
typedef struct XrEventDataKeyEvent{
XrStructureType type;
const void* XR_MAY_ALIAS next;
int32_t repeat;
int32_t keyCode;
int8_t keyAction;
}XrEventDataKeyEvent;
//pico add new device interface
typedef struct XrControllerEventChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
enum xrt_device_eventtype eventtype;
uint8_t controller;
uint8_t status;
uint8_t varying[400];
uint16_t length;
} XrControllerEventChanged;
typedef struct XrEventDataHardIPDStateChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
float ipd;
} XrEventDataHardIPDStateChanged;
typedef struct XrEventDataFoveationLevelChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
int level;
} XrEventDataFoveationLevelChanged;
typedef struct XrEventDataFrustumChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
} XrEventDataFrustumChanged;
typedef struct XrEventDataRenderTextureChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
int width;
int height;
} XrEventDataRenderTextureChanged;
typedef struct XrEventDataTargetFrameRateChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
int frameRate;
} XrEventDataTargetFrameRateChanged;
typedef struct XrEventDataMrcStatusChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
int mrcStatus;
} XrEventDataMrcStatusChanged;
//XR_TYPE_EVENT_REFRESH_RATE_CHANGE
typedef struct XrEventDataRefreshRateChanged {
XrStructureType type;
const void* XR_MAY_ALIAS next;
float refreshRate;
} XrEventDataRefreshRateChanged;
//pico add end
typedef enum XrTrackingMode
{
XR_TRACKING_MODE_ROTATION = 0x1,
XR_TRACKING_MODE_POSITION = 0x2,
XR_TRACKING_MODE_EYE = 0x4
}XrTrackingMode;
typedef struct XrEyeTrackingData
{
int32_t leftEyePoseStatus; //!< Bit field (pvrEyePoseStatus) indicating left eye pose status
int32_t rightEyePoseStatus; //!< Bit field (pvrEyePoseStatus) indicating right eye pose status
int32_t combinedEyePoseStatus; //!< Bit field (pvrEyePoseStatus) indicating combined eye pose status
float leftEyeGazePoint[3]; //!< Left Eye Gaze Point
float rightEyeGazePoint[3]; //!< Right Eye Gaze Point
float combinedEyeGazePoint[3]; //!< Combined Eye Gaze Point (HMD center-eye point)
float leftEyeGazeVector[3]; //!< Left Eye Gaze Point
float rightEyeGazeVector[3]; //!< Right Eye Gaze Point
float combinedEyeGazeVector[3]; //!< Comnbined Eye Gaze Vector (HMD center-eye point)
float leftEyeOpenness; //!< Left eye value between 0.0 and 1.0 where 1.0 means fully open and 0.0 closed.
float rightEyeOpenness; //!< Right eye value between 0.0 and 1.0 where 1.0 means fully open and 0.0 closed.
float leftEyePupilDilation; //!< Left eye value in millimeters indicating the pupil dilation
float rightEyePupilDilation; //!< Right eye value in millimeters indicating the pupil dilation
float leftEyePositionGuide[3]; //!< Position of the inner corner of the left eye in meters from the HMD center-eye coordinate system's origin.
float rightEyePositionGuide[3]; //!< Position of the inner corner of the right eye in meters from the HMD center-eye coordinate system's origin.
float foveatedGazeDirection[3]; //!< Position of the gaze direction in meters from the HMD center-eye coordinate system's origin.
int32_t foveatedGazeTrackingState; //!< The current state of the foveatedGazeDirection signal.
}XrEyeTrackingData;
typedef XrResult (XRAPI_PTR *PFN_xrSetTrackingModePICO)(XrSession session, uint32_t trackingMode);
typedef XrResult (XRAPI_PTR *PFN_xrGetTrackingModePICO)(XrSession session, uint32_t *trackingMode);
typedef XrResult (XRAPI_PTR *PFN_xrGetEyeTrackingDataPICO)(XrSession session, XrEyeTrackingData *eyeTrackingData);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrSetTrackingModePICO(
XrSession session,
uint32_t trackingMode);
XRAPI_ATTR XrResult XRAPI_CALL xrGetTrackingModePICO(
XrSession session,
uint32_t * trackingMode);
XRAPI_ATTR XrResult XRAPI_CALL xrGetEyeTrackingDataPICO(
XrSession session,
XrEyeTrackingData * eyeTrackingData);
#endif
#define XR_PICO_singlepass_enable 1
#define XR_PICO_singlepass_enable_SPEC_VERSION 1
#define XR_PICO_SINGLEPASS_ENABLE_EXTENSION_NAME "XR_PICO_singlepass_enable"
#ifdef XR_USE_PLATFORM_ANDROID
//kevin extend for pass user created textures to runtime begin@{
#define XR_PICO_android_swapchain_ext_enable 1
#define XR_PICO_android_swapchain_ext_enable_SPEC_VERSION 1
#define XR_PICO_ANDROID_SWAPCHAIN_EXT_ENABLE_EXTENSION_NAME "XR_PICO_android_swapchain_ext_enable"
typedef struct XrSwapchainCreateInfoAndroidEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
uint32_t imageNumExt;
uint32_t* imagesExt;
} XrSwapchainCreateInfoAndroidEXT;
//kevin extend end@}
//peter extend for pass user ffr to runtime begin@{
typedef enum XrFoveationLevel{
XR_FOVEATION_LEVEL_NONE = -1,
XR_FOVEATION_LEVEL_LOW = 0,
XR_FOVEATION_LEVEL_MID = 1,
XR_FOVEATION_LEVEL_HIGH = 2,
XR_FOVEATION_LEVEL_TOP_HIGH = 3
}XrFoveationLevel;
typedef enum XrFoveationType{
XR_FOVEATION_LEVEL = 0,
XR_FOVEATION_PARAMETERS = 1
}XrFoveationType;
typedef struct XrFoveationParametersEXT{
XrStructureType type;
const void* XR_MAY_ALIAS next;
int textureIdCount;
int* textureId;
int* previousId;
float focalPointX;
float focalPointY;
XrFoveationType ffrType;
float foveationGainX;
float foveationGainY;
float foveationArea;
float foveationMinimum;
XrFoveationLevel level;
int frameOffsetCount;
float* frameOffset;
}XrFoveationParametersEXT;
//peter extend end@}
//peter extend for IPD in runtime begin@{
#define XR_PICO_ipd 1
#define XR_PICO_ipd_SPEC_VERSION 1
#define XR_PICO_IPD_EXTENSION_NAME "XR_PICO_ipd"
typedef XrResult (XRAPI_PTR *PFN_xrSetIPDPICO)(XrSession session, float distance);
typedef XrResult (XRAPI_PTR *PFN_xrGetIPDPICO)(XrSession session, float* ipd);
typedef XrResult (XRAPI_PTR *PFN_xrSetTrackingIPDEnabledPICO)(XrSession session, bool enable);
typedef XrResult (XRAPI_PTR *PFN_xrGetTrackingIPDEnabledPICO)(XrSession session, bool* enable);
typedef XrResult (XRAPI_PTR *PFN_xrGetEyeTrackingAutoIPDPICO)(XrSession session, float* autoIPD);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrSetIPDPICO(XrSession session, float distance);
XRAPI_ATTR XrResult XRAPI_CALL xrGetIPDPICO(XrSession session, float* ipd);
XRAPI_ATTR XrResult XRAPI_CALL xrSetTrackingIPDEnabledPICO(XrSession session, bool enable);
XRAPI_ATTR XrResult XRAPI_CALL xrGetTrackingIPDEnabledPICO(XrSession session, bool* enable);
XRAPI_ATTR XrResult XRAPI_CALL xrGetEyeTrackingAutoIPDPICO(XrSession session, float* autoIPD);
#endif
//peter extend for IPD end@}
//peter extend for stencilmesh in runtime begin @ {
#define XR_PICO_stencilmesh 1
#define XR_PICO_stencilmesh_SPEC_VERSION 1
#define XR_PICO_STENCILMESH_EXTENSION_NAME "XR_PICO_stencilmesh"
typedef XrResult (XRAPI_PTR *PFN_xrGetStencilmeshPICO)(
XrSession session,
int eye,
int *vertsCount,
int *indexCount,
float **localVerts,
unsigned int **localIndex
);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetStencilmeshPICO(
XrSession session,
int eye,
int *vertsCount,
int *indexCount,
float **localVerts,
unsigned int **localIndex
);
#endif
//peter extend for stencilmesh in runtime end @ }
// peter extend for frustum in runtime before @ {
#define XR_PICO_view_frustum_ext 1
#define XR_PICO_view_frustum_ext_SPEC_VERSION 1
#define XR_PICO_VIEW_FRUSTUM_EXT_EXTENSION_NAME "XR_PICO_view_frustum_ext"
struct XrViewFrustum
{
float left;//!<?Left?Plane?of?Frustum
float right;//!<?Right?Plane?of?Frustum
float top;//!<?Top?Plane?of?Frustum
float bottom;//!<?Bottom?Plane?of?Frustum
float near;//!<?Near?Plane?of?Frustum
float far;//!<?Far?Plane?of?Frustum?(Arbitrary)
XrPosef frustumPose;
};
typedef XrResult (XRAPI_PTR *PFN_xrGetFrustumParametersPICO)(
XrSession session,
struct XrViewFrustum *pLeftFrustum,
struct XrViewFrustum *pRightFrustum);
typedef XrResult (XRAPI_PTR *PFN_xrSetFrustumParametersPICO)(
XrSession session,
struct XrViewFrustum *pLeftFrustum,
struct XrViewFrustum *pRightFrustum);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetFrustumParametersPICO(
XrSession session,
struct XrViewFrustum *pLeftFrustum,
struct XrViewFrustum *pRightFrustum);
XRAPI_ATTR XrResult XRAPI_CALL xrSetFrustumParametersPICO(
XrSession session,
struct XrViewFrustum *pLeftFrustum,
struct XrViewFrustum *pRightFrustum);
#endif
// peter extend for frustum in runtime end @ }
// peter extend for config in runtime before @ {
#define XR_PICO_configs_ext 1
#define XR_PICO_configs_ext_SPEC_VERSION 1
#define XR_PICO_CONFIGS_EXT_EXTENSION_NAME "XR_PICO_configs_ext"
enum ConfigsEXT
{
RENDER_TEXTURE_WIDTH = 0,
RENDER_TEXTURE_HEIGHT,
SHOW_FPS,
RUNTIME_LOG_LEVEL,
PXRPLUGIN_LOG_LEVEL,
UNITY_LOG_LEVEL,
UNREAL_LOG_LEVEL,
NATIVE_LOG_LEVEL,
TARGET_FRAME_RATE,
NECK_MODEL_X,
NECK_MODEL_Y,
NECK_MODEL_Z,
DISPLAY_REFRESH_RATE,
ENABLE_6DOF,
CONTROLLER_TYPE,
PHYSICAL_IPD,
TO_DELTA_SENSOR_Y,
GET_DISPLAY_RATE,
FOVEATION_SUBSAMPLED_ENABLED = 18,
TRACKING_ORIGIN_HEIGHT
};
enum ConfigsSetEXT
{
UNREAL_VERSION = 0,
TRACKING_ORIGIN,
OPENGL_NOERROR,
ENABLE_SIX_DOF,
PRESENTATION_FLAG,
ENABLE_CPT,
PLATFORM,
FOVEATION_LEVEL,
SET_DISPLAY_RATE = 8,
MRC_TEXTURE_ID = 9,
};
enum TrackingOrigin
{
EYELEVEL = 0,
FLOORLEVEL,
STAGELEVEL
};
enum Platform
{
UNITY = 0,
UNREAL,
NATIVE
};
struct ConfigsSetPICO
{
char* engineVersion;
int trackingOrigin;
bool noErrorFlag;
bool enableSixDof;
bool presentationFlag;
int platform;
float displayRate;
uint64_t mrcTextureId;
};
typedef XrResult (XRAPI_PTR *PFN_xrGetConfigPICO)(
XrSession session,
enum ConfigsEXT configIndex,
float * configData);
typedef XrResult (XRAPI_PTR *PFN_xrGetConfigsPICO)(
XrSession session,
int * configCount,
float ** configArray);
typedef XrResult (XRAPI_PTR *PFN_xrSetConfigPICO) (
XrSession session,
enum ConfigsSetEXT configIndex,
char * configData);
typedef XrResult (XRAPI_PTR *PFN_xrSetConfigsPICO) (
XrSession session,
struct ConfigsSetPICO * configsData);
typedef XrResult (XRAPI_PTR *PFN_xrGetFoveationConfigPICO)(
XrSession session,
enum XrFoveationLevel level,
float * gainX,
float * gainY,
float * area,
float * minimum);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetConfigPICO(
XrSession session,
enum ConfigsEXT configIndex,
float * configData);
XRAPI_ATTR XrResult XRAPI_CALL xrGetConfigsPICO(
XrSession session,
int * configCount,
float ** configArray);
XRAPI_ATTR XrResult XRAPI_CALL xrSetConfigPICO (
XrSession session,
enum ConfigsSetEXT configIndex,
char * configData);
XRAPI_ATTR XrResult XRAPI_CALL xrSetConfigsPICO (
XrSession session,
struct ConfigsSetPICO * configsData);
XRAPI_ATTR XrResult XRAPI_CALL xrGetFoveationConfigPICO(
XrSession session,
enum XrFoveationLevel level,
float * gainX,
float * gainY,
float * area,
float * minimum);
#endif
// peter extend for config in runtime end @ }
// peter add reset sensor begin @ {
#define XR_PICO_reset_sensor 1
#define XR_PICO_reset_sensor_SPEC_VERSION 1
#define XR_PICO_RESET_SENSOR_EXTENSION_NAME "XR_PICO_reset_sensor"
typedef enum XrResetSensorOption {
XR_RESET_POSITION = 0,
XR_RESET_ORIENTATION = 1,
XR_RESET_ORIENTATION_Y_ONLY= 2,
XR_RESET_ALL
} XrResetSensorOption;
typedef XrResult (XRAPI_PTR *PFN_xrResetSensorPICO)(XrSession session, XrResetSensorOption option);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrResetSensorPICO(
XrSession session,
XrResetSensorOption option);
#endif
// reset sensor end @ }
//add setMrcPose and getMrcPose {
#define XR_PICO_android_getMrcPose_function_ext_enable 1
#define XR_PICO_android_MrcPose_function_ext_enable_SPEC_VERSION 1
#define XR_PICO_ANDROID_MRCPOSE_FUNCTION_EXT_ENABLE_EXTENSION_NAME "XR_PICO_android_MrcPose_function_ext_enable"
typedef XrResult (XRAPI_PTR *PFN_xrSetMrcPose)(
XrSession session,
float x,
float y,
float z,
float w,
float px,
float py,
float pz);
typedef XrResult (XRAPI_PTR *PFN_xrGetMrcPose)(
XrSession session,
float * x,
float * y,
float * z,
float * w,
float * px,
float * py,
float * pz);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrSetMrcPose(
XrSession session,
float x,
float y,
float z,
float w,
float px,
float py,
float pz);
XRAPI_ATTR XrResult XRAPI_CALL xrGetMrcPose(
XrSession session,
float * x,
float * y,
float * z,
float * w,
float * px,
float * py,
float * pz);
#endif
//add setMrcGlobalPose and getMrcLocalPose }
// peter add boundary api begin @ {
#define XR_PICO_boundary_ext 1
#define XR_PICO_boundary_ext_SPEC_VERSION 1
#define XR_PICO_BOUNDARY_EXT_EXTENSION_NAME "XR_PICO_boundary_ext"
typedef enum xrFuncitonName {
XR_SET_SEETHROUGH_VISIBLE = 0,
XR_SET_GUARDIANSYSTEM_DISABLE,
XR_RESUME_GUARDIANSYSTEM_FOR_STS,
XR_PAUSE_GUARDIANSYSTEM_FOR_STS,
XR_SHUTDOWN_SDK_GUARDIANSYSTEM,
XR_GET_CAMERA_DATA_EXT,
XR_START_SDK_BOUNDARY,
XR_SET_CONTROLLER_POSITION, //unused
XR_START_CAMERA_PREVIEW,
XR_GET_ROOM_MODE_STATE,
XR_DISABLE_BOUNDARY,
XR_SET_MONO_MODE,
XR_GET_BOUNDARY_CONFIGURED,
XR_GET_BOUNDARY_ENABLED,
XR_SET_BOUNDARY_VISIBLE,
XR_SET_SEETHROUGH_BACKGROUND,
XR_GET_BOUNDARY_VISIBLE,
} xrFuncitonName;
typedef XrResult (XRAPI_PTR *PFN_xrInvokeFunctionsPICO)(
XrSession session,
xrFuncitonName name,
void * input,
unsigned int size_in,
void ** output,
unsigned int size_out);
typedef XrResult (XRAPI_PTR *PFN_xrSetControllerPositionPICO)(
XrSession session,
float x,
float y,
float z,
float w,
float px,
float py,
float pz,
int hand,
bool valid,
int keyEvent);
typedef XrResult (XRAPI_PTR *PFN_xrBoundaryTestNodePICO)(
XrSession session,
int node,
bool isPlayArea,
bool * pisTriggering,
float * pclosestDistance,
float * ppx,
float * ppy,
float * ppz,
float * pnx,
float * pny,
float * pnz,
int * ret);
typedef XrResult (XRAPI_PTR *PFN_xrBoundaryTestPointPICO)(
XrSession session,
float x,
float y,
float z,
bool isPlayArea,
bool * pisTriggering,
float * pclosestDistance,
float * ppx,
float * ppy,
float * ppz,
float * pnx,
float * pny,
float * pnz,
int * ret);
typedef XrResult (XRAPI_PTR *PFN_xrGetBoundaryGeometryPICO)(
XrSession session,
float ** outPointsFloat,
bool isPlayArea,
int * ret);
typedef XrResult (XRAPI_PTR *PFN_xrGetBoundaryDimensionsPICO)(
XrSession session,
float * x,
float * y,
float * z,
bool isPlayArea,
int * ret);
typedef XrResult (XRAPI_PTR *PFN_xrGetSeeThroughDataPICO)(
XrSession session,
uint8_t * leftEye,
uint8_t * rightEye,
uint32_t * width,
uint32_t * height,
uint32_t * exposure,
int64_t * start_of_exposure_ts,
int * ret);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrInvokeFunctionsPICO(
XrSession session,
xrFuncitonName name,
void * input,
unsigned int size_in,
void ** output,
unsigned int size_out);
XRAPI_ATTR XrResult XRAPI_CALL xrSetControllerPositionPICO(
XrSession session,
float x,
float y,
float z,
float w,
float px,
float py,
float pz,
int hand,
bool valid,
int keyEvent);
XRAPI_ATTR XrResult XRAPI_CALL xrBoundaryTestNodePICO(
XrSession session,
int node,
bool isPlayArea,
bool * pisTriggering,
float * pclosestDistance,
float * ppx,
float * ppy,
float * ppz,
float * pnx,
float * pny,
float * pnz,
int * ret);
XRAPI_ATTR XrResult XRAPI_CALL xrBoundaryTestPointPICO(
XrSession session,
float x,
float y,
float z,
bool isPlayArea,
bool * pisTriggering,
float * pclosestDistance,
float * ppx,
float * ppy,
float * ppz,
float * pnx,
float * pny,
float * pnz,
int * ret);
XRAPI_ATTR XrResult XRAPI_CALL xrGetBoundaryGeometryPICO(
XrSession session,
float ** outPointsFloat,
bool isPlayArea,
int * ret);
XRAPI_ATTR XrResult XRAPI_CALL xrGetBoundaryDimensionsPICO(
XrSession session,
float * x,
float * y,
float * z,
bool isPlayArea,
int * ret);
XRAPI_ATTR XrResult XRAPI_CALL xrGetSeeThroughDataPICO(
XrSession session,
uint8_t * leftEye,
uint8_t * rightEye,
uint32_t * width,
uint32_t * height,
uint32_t * exposure,
int64_t * start_of_exposure_ts,
int * ret);
#endif
// boundary api end @ }
// peter add performance settings begin @ {
#define XR_PICO_performance_settings 1
#define XR_PICO_performance_settings_SPEC_VERSION 1
#define XR_PICO_PERFORMANCE_SETTINGS_EXTENSION_NAME "XR_PICO_performance_settings"
typedef XrResult (XRAPI_PTR *PFN_xrSetPerformanceLevelPICO)(
XrSession session,
XrPerfSettingsDomainEXT domain,
int level);
typedef XrResult (XRAPI_PTR *PFN_xrGetPerformanceLevelPICO)(
XrSession session,
XrPerfSettingsDomainEXT domain,
int * level);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrSetPerformanceLevelPICO(
XrSession session,
XrPerfSettingsDomainEXT domain,
int level);
XRAPI_ATTR XrResult XRAPI_CALL xrGetPerformanceLevelPICO(
XrSession session,
XrPerfSettingsDomainEXT domain,
int * level);
#endif
// performance settings end @ }
//gaojian extend for pass surfaceview to runtime for display begin@{
#define XR_PICO_android_create_instance_ext_enable 1
#define XR_PICO_android_create_instance_ext_enable_SPEC_VERSION 1
#define XR_PICO_ANDROID_CREATE_INSTANCE_EXT_ENABLE_EXTENSION_NAME "XR_PICO_android_create_instance_ext_enable"
typedef struct XrInstanceCreateInfoAndroidPICOEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
struct ANativeWindow* nativeWindow;
jobject* surfaceView;
} XrInstanceCreateInfoAndroidPICOEXT;
//gaojian extend end@}
//gaojian extend for get headpose when call xrLocateViews begin@{
#define XR_PICO_view_state_ext_enable 1
#define XR_PICO_view_state_ext_enable_SPEC_VERSION 1
#define XR_PICO_VIEW_STATE_EXT_ENABLE_EXTENSION_NAME "XR_PICO_view_state_ext_enable"
typedef struct XrViewStatePICOEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
XrPosef headpose;
int32_t poseStatus; //!< Bit field (sxrTrackingMode) indicating pose status
uint64_t poseTimeStampNs; //!< Time stamp in which the head pose was generated (nanoseconds)
uint64_t poseFetchTimeNs; //!< Time stamp when this pose was retrieved
uint64_t expectedDisplayTimeNs; //!< Expected time when this pose should be on screen (nanoseconds)
int gsIndex;
XrVector3f linear_velocity;
XrVector3f angular_velocity;
XrVector3f linear_acceleration;
XrVector3f angular_acceleration;
} XrViewStatePICOEXT;
//gaojian extend end@}
#define XR_PICO_frame_end_info_ext 1
#define XR_PICO_frame_end_info_ext_SPEC_VERSION 1
#define XR_PICO_FRAME_END_INFO_EXT_EXTENSION_NAME "XR_PICO_frame_end_info_ext"
typedef struct XrFrameEndInfoEXT
{
XrStructureType type;
const void* XR_MAY_ALIAS next;
// Alex FFR begin @{
uint32_t enableFoveation;
XrFoveationParametersEXT foveationParametersEXT;
//Alex FFR end @}
//gaojian extend begin@{
uint32_t useHeadposeExt;
XrPosef headpose;
int32_t poseStatus; //!< Bit field (sxrTrackingMode) indicating pose status
uint64_t poseTimeStampNs; //!< Time stamp in which the head pose was generated (nanoseconds)
uint64_t poseFetchTimeNs; //!< Time stamp when this pose was retrieved
uint64_t expectedDisplayTimeNs; //!< Expected time when this pose should be on screen (nanoseconds)
int gsIndex;
//gaojian extend end@}
float depth;
}XrFrameEndInfoEXT;
//gaojian extend begin@{
#define XR_PICO_session_begin_info_ext_enable 1
#define XR_PICO_session_begin_info_ext_enable_SPEC_VERSION 1
#define XR_PICO_SESSION_BEGIN_INFO_EXT_ENABLE_EXTENSION_NAME "XR_PICO_session_begin_info_ext_enable"
enum XrColorSpace{
colorSpaceLinear = 0,
colorSpaceSRGB = 1,
};
typedef struct XrSessionBeginInfoEXT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
uint32_t enableSinglePass;
enum XrColorSpace colorSpace;
} XrSessionBeginInfoEXT;
//gaojian extend end@}
#define XR_PICO_foveation_image_ext_enable 1
#define XR_PICO_foveation_image_ext_enable_SPEC_VERSION 1
#define XR_PICO_FOVEATION_IMAGE_EXT_ENABLE_EXTENSION_NAME "XR_PICO_foveation_image_ext_enable"
typedef XrResult (XRAPI_PTR *PFN_xrGetFoveationImagePICO)(XrSession session, XrSwapchain swapchain, int eye, uint64_t* foveationImage, uint32_t* width, uint32_t* height);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetFoveationImagePICO(XrSession session, XrSwapchain swapchain, int eye, uint64_t* foveationImage, uint32_t* width, uint32_t* height);
#endif
// mrc begin
#define XR_PICO_mrc_pose_ext_enable 1
#define XR_PICO_mrc_pose_ext_enable_SPEC_VERSION 1
#define XR_PICO_MRC_POSE_EXT_ENABLE_EXTENSION_NAME "XR_PICO_mrc_pose_ext_enable"
typedef XrResult (XRAPI_PTR *PFN_xrGetMrcPosePICO)(XrSession session, float *x, float *y, float *z, float *w, float *px, float *py, float *pz);
typedef XrResult (XRAPI_PTR *PFN_xrSetMrcPosePICO)(XrSession session, float x, float y, float z,float w,float px, float py, float pz);
#ifndef XR_NO_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetMrcPosePICO(XrSession session, float *x, float *y, float *z, float *w, float *px, float *py, float *pz);
XRAPI_ATTR XrResult XRAPI_CALL xrSetMrcPosePICO(XrSession session, float x, float y, float z,float w,float px, float py, float pz);
#endif
// mrc end
//berton extend for getting controller functions begin@{ pico add new property
#define XR_PICO_android_controller_function_ext_enable 1
#define XR_PICO_android_controller_function_ext_enable_SPEC_VERSION 1
#define XR_PICO_ANDROID_CONTROLLER_FUNCTION_EXT_ENABLE_EXTENSION_NAME "XR_PICO_android_controller_function_ext_enable"
//cmc ext function ,not use from 2021/07
typedef XrResult (XRAPI_PTR *PFN_xrSetEngineVersionPico)(XrInstance instance,const char* version);
typedef XrResult (XRAPI_PTR *PFN_xrSetControllerEventCallbackPico)(XrInstance instance,bool enable_controller_callback);
typedef XrResult (XRAPI_PTR *PFN_xrResetControllerSensorPico)(XrInstance instance,int controllerHandle);
typedef XrResult (XRAPI_PTR *PFN_xrGetConnectDeviceMacPico)(XrInstance instance,char* mac);
typedef XrResult (XRAPI_PTR *PFN_xrStartCVControllerThreadPico)(XrInstance instance,int headSensorState, int handSensorState);
typedef XrResult (XRAPI_PTR *PFN_xrStopCVControllerThreadPico)(XrInstance instance,int headSensorState, int handSensorState);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerAngularVelocityStatePico)(XrInstance instance,int controllerHandle,float* data);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerAccelerationStatePico)(XrInstance instance,int controllerHandle,float *data);
typedef XrResult (XRAPI_PTR *PFN_xrResetHeadSensorForControllerPico)(XrInstance instance);
typedef XrResult (XRAPI_PTR *PFN_xrSetIsEnbleHomeKeyPico)(XrInstance instance,bool isEnable);
typedef XrResult (XRAPI_PTR *PFN_xrGetHeadSensorDataPico)(XrInstance instance,float* data);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerSensorDataPredictPico)(XrInstance instance,int controllerHandle, float headSensorData[], float predictTime,float* data);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerLinearVelocityStatePico)(XrInstance instance,int controllerHandle,float* data);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerSensorDataPico)(XrInstance instance,int controllerHandle, float headSensorData[],float* data);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerFixedSensorStatePico)(XrInstance instance,int controllerHandle,float* data);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerTouchValuePico)(XrInstance instance,int controllerSerialNum,int length,int* value);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerGripValuePico)(XrInstance instance,int controllerSerialNum,int *tripvalue);
//cmc ext function ,not use from 2021/07
//inputmanager
typedef XrResult (XRAPI_PTR *PFN_xrSetMainControllerHandlePico)(XrInstance instance,int controllerHandle);
typedef XrResult (XRAPI_PTR *PFN_xrGetMainControllerHandlePico)(XrInstance instance,int* controllerHandle);
typedef XrResult (XRAPI_PTR *PFN_xrGetControllerConnectionStatePico)(XrInstance instance,uint8_t controllerhandle,uint8_t* status);
typedef XrResult (XRAPI_PTR *PFN_xrGetPhyControllerInfoPico)(XrInstance instance,int device,XrControllerInfo * controllerinfo);
typedef XrResult (XRAPI_PTR *PFN_xrVibrateControllerPico)(XrInstance instance,float strength ,int time,int controllerHandle);
typedef XrResult (XRAPI_PTR *PFN_xrSetPhyControllerEnterPairingPico)(XrInstance instance,int device);
typedef XrResult (XRAPI_PTR *PFN_xrSetPhyControllerStopPairingPico)(XrInstance instance,int device);
typedef XrResult (XRAPI_PTR *PFN_xrSetPhyControllerUpgradePico)(XrInstance instance,int devicetype,int rule,char* station_path_by_char,char* controller_path_by_char);
typedef XrResult (XRAPI_PTR *PFN_xrSetPhyControllerUnbindPico)(XrInstance instance,int device);
typedef XrResult (XRAPI_PTR *PFN_xrSetPhyControllerEnableKeyPico)(XrInstance instance,bool isEnable,XrControllerKeyMap Key);
#ifndef XR_NO_PROTOTYPES
//cmc ext function ,not use from 2021/07
XRAPI_ATTR XrResult XRAPI_CALL xrSetEngineVersionPico(XrInstance instance,const char* version);
XRAPI_ATTR XrResult XRAPI_CALL xrSetControllerEventCallbackPico(XrInstance instance,bool enable_controller_callback);
XRAPI_ATTR XrResult XRAPI_CALL xrResetControllerSensorPico(XrInstance instance,int controllerHandle);
XRAPI_ATTR XrResult XRAPI_CALL xrGetConnectDeviceMacPico(XrInstance instance,char* mac);
XRAPI_ATTR XrResult XRAPI_CALL xrStartCVControllerThreadPico(XrInstance instance,int headSensorState, int handSensorState);
XRAPI_ATTR XrResult XRAPI_CALL xrStopCVControllerThreadPico(XrInstance instance,int headSensorState, int handSensorState);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerAngularVelocityStatePico(XrInstance instance,int controllerHandle,float* data);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerAccelerationStatePico(XrInstance instance,int controllerHandle,float *data);
XRAPI_ATTR XrResult XRAPI_CALL xrResetHeadSensorForControllerPico(XrInstance instance);
XRAPI_ATTR XrResult XRAPI_CALL xrSetIsEnbleHomeKeyPico(XrInstance instance,bool isEnable);
XRAPI_ATTR XrResult XRAPI_CALL xrGetHeadSensorDataPico(XrInstance instance,float* data);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerSensorDataPredictPico(XrInstance instance,int controllerHandle, float headSensorData[], float predictTime,float* data);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerLinearVelocityStatePico(XrInstance instance,int controllerHandle,float* data);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerSensorDataPico(XrInstance instance,int controllerHandle, float headSensorData[],float* data);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerFixedSensorStatePico(XrInstance instance,int controllerHandle,float* data);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerTouchValuePico(XrInstance instance,int controllerSerialNum,int length,int* value);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerGripValuePico(XrInstance instance,int controllerSerialNum,int *tripvalue);
//cmc ext function ,not use from 2021/07
//inputmanager
XRAPI_ATTR XrResult XRAPI_CALL xrSetMainControllerHandlePico(XrInstance instance,int controllerHandle);
XRAPI_ATTR XrResult XRAPI_CALL xrGetMainControllerHandlePico(XrInstance instance,int* controllerHandle);
XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerConnectionStatePico(
XrInstance instance,uint8_t controllerhandle,uint8_t* status);
XRAPI_ATTR XrResult XRAPI_CALL xrGetPhyControllerInfoPico(XrInstance instance,int device,XrControllerInfo * controllerinfo);
XRAPI_ATTR XrResult XRAPI_CALL xrVibrateControllerPico(XrInstance instance,float strength ,int time,int controllerHandle);
XRAPI_ATTR XrResult XRAPI_CALL xrSetPhyControllerEnterPairingPico(XrInstance instance,int device);
XRAPI_ATTR XrResult XRAPI_CALL xrSetPhyControllerStopPairingPico(XrInstance instance,int device);
XRAPI_ATTR XrResult XRAPI_CALL xrSetPhyControllerUpgradePico(XrInstance instance,int devicetype,int rule,char* station_path_by_char,char* controller_path_by_char);
XRAPI_ATTR XrResult XRAPI_CALL xrSetPhyControllerUnbindPico(XrInstance instance,int device);
XRAPI_ATTR XrResult XRAPI_CALL xrSetPhyControllerEnableKeyPico(XrInstance instance,bool isEnable,XrControllerKeyMap Key);
#endif//berton extend end@} pico end
#endif
#ifdef __cplusplus
}
#endif
#endif // OPENXR_PICO_H_

177
ext/openxr/openxr_platform.h Executable file → Normal file
View File

@ -2,7 +2,7 @@
#define OPENXR_PLATFORM_H_ 1
/*
** Copyright (c) 2017-2022, The Khronos Group Inc.
** Copyright (c) 2017-2021, The Khronos Group Inc.
**
** SPDX-License-Identifier: Apache-2.0 OR MIT
*/
@ -35,13 +35,11 @@ typedef enum XrAndroidThreadTypeKHR {
typedef XrResult (XRAPI_PTR *PFN_xrSetAndroidApplicationThreadKHR)(XrSession session, XrAndroidThreadTypeKHR threadType, uint32_t threadId);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrSetAndroidApplicationThreadKHR(
XrSession session,
XrAndroidThreadTypeKHR threadType,
uint32_t threadId);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_PLATFORM_ANDROID */
#ifdef XR_USE_PLATFORM_ANDROID
@ -52,14 +50,12 @@ XRAPI_ATTR XrResult XRAPI_CALL xrSetAndroidApplicationThreadKHR(
typedef XrResult (XRAPI_PTR *PFN_xrCreateSwapchainAndroidSurfaceKHR)(XrSession session, const XrSwapchainCreateInfo* info, XrSwapchain* swapchain, jobject* surface);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrCreateSwapchainAndroidSurfaceKHR(
XrSession session,
const XrSwapchainCreateInfo* info,
XrSwapchain* swapchain,
jobject* surface);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_PLATFORM_ANDROID */
#ifdef XR_USE_PLATFORM_ANDROID
@ -67,7 +63,6 @@ XRAPI_ATTR XrResult XRAPI_CALL xrCreateSwapchainAndroidSurfaceKHR(
#define XR_KHR_android_create_instance 1
#define XR_KHR_android_create_instance_SPEC_VERSION 3
#define XR_KHR_ANDROID_CREATE_INSTANCE_EXTENSION_NAME "XR_KHR_android_create_instance"
// XrInstanceCreateInfoAndroidKHR extends XrInstanceCreateInfo
typedef struct XrInstanceCreateInfoAndroidKHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -80,7 +75,7 @@ typedef struct XrInstanceCreateInfoAndroidKHR {
#ifdef XR_USE_GRAPHICS_API_VULKAN
#define XR_KHR_vulkan_swapchain_format_list 1
#define XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION 4
#define XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION 3
#define XR_KHR_VULKAN_SWAPCHAIN_FORMAT_LIST_EXTENSION_NAME "XR_KHR_vulkan_swapchain_format_list"
typedef struct XrVulkanSwapchainFormatListCreateInfoKHR {
XrStructureType type;
@ -94,10 +89,9 @@ typedef struct XrVulkanSwapchainFormatListCreateInfoKHR {
#ifdef XR_USE_GRAPHICS_API_OPENGL
#define XR_KHR_opengl_enable 1
#define XR_KHR_opengl_enable_SPEC_VERSION 10
#define XR_KHR_opengl_enable_SPEC_VERSION 9
#define XR_KHR_OPENGL_ENABLE_EXTENSION_NAME "XR_KHR_opengl_enable"
#ifdef XR_USE_PLATFORM_WIN32
// XrGraphicsBindingOpenGLWin32KHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingOpenGLWin32KHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -107,7 +101,6 @@ typedef struct XrGraphicsBindingOpenGLWin32KHR {
#endif // XR_USE_PLATFORM_WIN32
#ifdef XR_USE_PLATFORM_XLIB
// XrGraphicsBindingOpenGLXlibKHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingOpenGLXlibKHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -120,7 +113,6 @@ typedef struct XrGraphicsBindingOpenGLXlibKHR {
#endif // XR_USE_PLATFORM_XLIB
#ifdef XR_USE_PLATFORM_XCB
// XrGraphicsBindingOpenGLXcbKHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingOpenGLXcbKHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -134,7 +126,6 @@ typedef struct XrGraphicsBindingOpenGLXcbKHR {
#endif // XR_USE_PLATFORM_XCB
#ifdef XR_USE_PLATFORM_WAYLAND
// XrGraphicsBindingOpenGLWaylandKHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingOpenGLWaylandKHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -158,22 +149,19 @@ typedef struct XrGraphicsRequirementsOpenGLKHR {
typedef XrResult (XRAPI_PTR *PFN_xrGetOpenGLGraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsOpenGLKHR* graphicsRequirements);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetOpenGLGraphicsRequirementsKHR(
XrInstance instance,
XrSystemId systemId,
XrGraphicsRequirementsOpenGLKHR* graphicsRequirements);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_GRAPHICS_API_OPENGL */
#ifdef XR_USE_GRAPHICS_API_OPENGL_ES
#define XR_KHR_opengl_es_enable 1
#define XR_KHR_opengl_es_enable_SPEC_VERSION 8
#define XR_KHR_opengl_es_enable_SPEC_VERSION 7
#define XR_KHR_OPENGL_ES_ENABLE_EXTENSION_NAME "XR_KHR_opengl_es_enable"
#ifdef XR_USE_PLATFORM_ANDROID
// XrGraphicsBindingOpenGLESAndroidKHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingOpenGLESAndroidKHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -199,21 +187,18 @@ typedef struct XrGraphicsRequirementsOpenGLESKHR {
typedef XrResult (XRAPI_PTR *PFN_xrGetOpenGLESGraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsOpenGLESKHR* graphicsRequirements);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetOpenGLESGraphicsRequirementsKHR(
XrInstance instance,
XrSystemId systemId,
XrGraphicsRequirementsOpenGLESKHR* graphicsRequirements);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_GRAPHICS_API_OPENGL_ES */
#ifdef XR_USE_GRAPHICS_API_VULKAN
#define XR_KHR_vulkan_enable 1
#define XR_KHR_vulkan_enable_SPEC_VERSION 8
#define XR_KHR_vulkan_enable_SPEC_VERSION 7
#define XR_KHR_VULKAN_ENABLE_EXTENSION_NAME "XR_KHR_vulkan_enable"
// XrGraphicsBindingVulkanKHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingVulkanKHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -243,7 +228,6 @@ typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsDeviceKHR)(XrInstance instan
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR* graphicsRequirements);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanInstanceExtensionsKHR(
XrInstance instance,
XrSystemId systemId,
@ -268,16 +252,14 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsRequirementsKHR(
XrInstance instance,
XrSystemId systemId,
XrGraphicsRequirementsVulkanKHR* graphicsRequirements);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_GRAPHICS_API_VULKAN */
#ifdef XR_USE_GRAPHICS_API_D3D11
#define XR_KHR_D3D11_enable 1
#define XR_KHR_D3D11_enable_SPEC_VERSION 8
#define XR_KHR_D3D11_enable_SPEC_VERSION 5
#define XR_KHR_D3D11_ENABLE_EXTENSION_NAME "XR_KHR_D3D11_enable"
// XrGraphicsBindingD3D11KHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingD3D11KHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -300,21 +282,18 @@ typedef struct XrGraphicsRequirementsD3D11KHR {
typedef XrResult (XRAPI_PTR *PFN_xrGetD3D11GraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsD3D11KHR* graphicsRequirements);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetD3D11GraphicsRequirementsKHR(
XrInstance instance,
XrSystemId systemId,
XrGraphicsRequirementsD3D11KHR* graphicsRequirements);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_GRAPHICS_API_D3D11 */
#ifdef XR_USE_GRAPHICS_API_D3D12
#define XR_KHR_D3D12_enable 1
#define XR_KHR_D3D12_enable_SPEC_VERSION 8
#define XR_KHR_D3D12_enable_SPEC_VERSION 7
#define XR_KHR_D3D12_ENABLE_EXTENSION_NAME "XR_KHR_D3D12_enable"
// XrGraphicsBindingD3D12KHR extends XrSessionCreateInfo
typedef struct XrGraphicsBindingD3D12KHR {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -338,13 +317,11 @@ typedef struct XrGraphicsRequirementsD3D12KHR {
typedef XrResult (XRAPI_PTR *PFN_xrGetD3D12GraphicsRequirementsKHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsD3D12KHR* graphicsRequirements);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetD3D12GraphicsRequirementsKHR(
XrInstance instance,
XrSystemId systemId,
XrGraphicsRequirementsD3D12KHR* graphicsRequirements);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_GRAPHICS_API_D3D12 */
#ifdef XR_USE_PLATFORM_WIN32
@ -356,7 +333,6 @@ typedef XrResult (XRAPI_PTR *PFN_xrConvertWin32PerformanceCounterToTimeKHR)(XrIn
typedef XrResult (XRAPI_PTR *PFN_xrConvertTimeToWin32PerformanceCounterKHR)(XrInstance instance, XrTime time, LARGE_INTEGER* performanceCounter);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrConvertWin32PerformanceCounterToTimeKHR(
XrInstance instance,
const LARGE_INTEGER* performanceCounter,
@ -366,8 +342,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrConvertTimeToWin32PerformanceCounterKHR(
XrInstance instance,
XrTime time,
LARGE_INTEGER* performanceCounter);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_PLATFORM_WIN32 */
#ifdef XR_USE_TIMESPEC
@ -379,7 +354,6 @@ typedef XrResult (XRAPI_PTR *PFN_xrConvertTimespecTimeToTimeKHR)(XrInstance inst
typedef XrResult (XRAPI_PTR *PFN_xrConvertTimeToTimespecTimeKHR)(XrInstance instance, XrTime time, struct timespec* timespecTime);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrConvertTimespecTimeToTimeKHR(
XrInstance instance,
const struct timespec* timespecTime,
@ -389,8 +363,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrConvertTimeToTimespecTimeKHR(
XrInstance instance,
XrTime time,
struct timespec* timespecTime);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_TIMESPEC */
#ifdef XR_USE_PLATFORM_ANDROID
@ -410,7 +383,7 @@ typedef struct XrLoaderInitInfoAndroidKHR {
#ifdef XR_USE_GRAPHICS_API_VULKAN
#define XR_KHR_vulkan_enable2 1
#define XR_KHR_vulkan_enable2_SPEC_VERSION 2
#define XR_KHR_vulkan_enable2_SPEC_VERSION 1
#define XR_KHR_VULKAN_ENABLE2_EXTENSION_NAME "XR_KHR_vulkan_enable2"
typedef XrFlags64 XrVulkanInstanceCreateFlagsKHR;
@ -454,13 +427,12 @@ typedef XrSwapchainImageVulkanKHR XrSwapchainImageVulkan2KHR;
typedef XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkan2KHR;
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanInstanceKHR)(XrInstance instance, const XrVulkanInstanceCreateInfoKHR* createInfo, VkInstance* vulkanInstance, VkResult* vulkanResult);
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanInstanceKHR)(XrInstance instance, const XrVulkanInstanceCreateInfoKHR*createInfo, VkInstance* vulkanInstance, VkResult* vulkanResult);
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanDeviceKHR)(XrInstance instance, const XrVulkanDeviceCreateInfoKHR* createInfo, VkDevice* vulkanDevice, VkResult* vulkanResult);
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsDevice2KHR)(XrInstance instance, const XrVulkanGraphicsDeviceGetInfoKHR* getInfo, VkPhysicalDevice* vulkanPhysicalDevice);
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsRequirements2KHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR* graphicsRequirements);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrCreateVulkanInstanceKHR(
XrInstance instance,
const XrVulkanInstanceCreateInfoKHR* createInfo,
@ -482,8 +454,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsRequirements2KHR(
XrInstance instance,
XrSystemId systemId,
XrGraphicsRequirementsVulkanKHR* graphicsRequirements);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_GRAPHICS_API_VULKAN */
#ifdef XR_USE_PLATFORM_EGL
@ -491,7 +462,6 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetVulkanGraphicsRequirements2KHR(
#define XR_MNDX_egl_enable 1
#define XR_MNDX_egl_enable_SPEC_VERSION 1
#define XR_MNDX_EGL_ENABLE_EXTENSION_NAME "XR_MNDX_egl_enable"
// XrGraphicsBindingEGLMNDX extends XrSessionCreateInfo
typedef struct XrGraphicsBindingEGLMNDX {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -512,7 +482,6 @@ typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFromPerceptionAnchorMSFT)(
typedef XrResult (XRAPI_PTR *PFN_xrTryGetPerceptionAnchorFromSpatialAnchorMSFT)(XrSession session, XrSpatialAnchorMSFT anchor, IUnknown** perceptionAnchor);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFromPerceptionAnchorMSFT(
XrSession session,
IUnknown* perceptionAnchor,
@ -522,8 +491,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrTryGetPerceptionAnchorFromSpatialAnchorMSFT(
XrSession session,
XrSpatialAnchorMSFT anchor,
IUnknown** perceptionAnchor);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif
#endif /* XR_USE_PLATFORM_WIN32 */
#ifdef XR_USE_PLATFORM_WIN32
@ -532,7 +500,6 @@ XRAPI_ATTR XrResult XRAPI_CALL xrTryGetPerceptionAnchorFromSpatialAnchorMSFT(
#define XR_MSFT_holographic_window_attachment_SPEC_VERSION 1
#define XR_MSFT_HOLOGRAPHIC_WINDOW_ATTACHMENT_EXTENSION_NAME "XR_MSFT_holographic_window_attachment"
#ifdef XR_USE_PLATFORM_WIN32
// XrHolographicWindowAttachmentMSFT extends XrSessionCreateInfo
typedef struct XrHolographicWindowAttachmentMSFT {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -555,7 +522,6 @@ static const XrAndroidSurfaceSwapchainFlagsFB XR_ANDROID_SURFACE_SWAPCHAIN_SYNCH
static const XrAndroidSurfaceSwapchainFlagsFB XR_ANDROID_SURFACE_SWAPCHAIN_USE_TIMESTAMPS_BIT_FB = 0x00000002;
#ifdef XR_USE_PLATFORM_ANDROID
// XrAndroidSurfaceSwapchainCreateInfoFB extends XrSwapchainCreateInfo
typedef struct XrAndroidSurfaceSwapchainCreateInfoFB {
XrStructureType type;
const void* XR_MAY_ALIAS next;
@ -565,109 +531,6 @@ typedef struct XrAndroidSurfaceSwapchainCreateInfoFB {
#endif /* XR_USE_PLATFORM_ANDROID */
#ifdef XR_USE_PLATFORM_WIN32
#define XR_OCULUS_audio_device_guid 1
#define XR_OCULUS_audio_device_guid_SPEC_VERSION 1
#define XR_OCULUS_AUDIO_DEVICE_GUID_EXTENSION_NAME "XR_OCULUS_audio_device_guid"
#define XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS 128
typedef XrResult (XRAPI_PTR *PFN_xrGetAudioOutputDeviceGuidOculus)(XrInstance instance, wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]);
typedef XrResult (XRAPI_PTR *PFN_xrGetAudioInputDeviceGuidOculus)(XrInstance instance, wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]);
#ifndef XR_NO_PROTOTYPES
#ifdef XR_EXTENSION_PROTOTYPES
XRAPI_ATTR XrResult XRAPI_CALL xrGetAudioOutputDeviceGuidOculus(
XrInstance instance,
wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]);
XRAPI_ATTR XrResult XRAPI_CALL xrGetAudioInputDeviceGuidOculus(
XrInstance instance,
wchar_t buffer[XR_MAX_AUDIO_DEVICE_STR_SIZE_OCULUS]);
#endif /* XR_EXTENSION_PROTOTYPES */
#endif /* !XR_NO_PROTOTYPES */
#endif /* XR_USE_PLATFORM_WIN32 */
#ifdef XR_USE_GRAPHICS_API_VULKAN
#define XR_FB_foveation_vulkan 1
#define XR_FB_foveation_vulkan_SPEC_VERSION 1
#define XR_FB_FOVEATION_VULKAN_EXTENSION_NAME "XR_FB_foveation_vulkan"
// XrSwapchainImageFoveationVulkanFB extends XrSwapchainImageVulkanKHR
typedef struct XrSwapchainImageFoveationVulkanFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
VkImage image;
uint32_t width;
uint32_t height;
} XrSwapchainImageFoveationVulkanFB;
#endif /* XR_USE_GRAPHICS_API_VULKAN */
#ifdef XR_USE_PLATFORM_ANDROID
#define XR_FB_swapchain_update_state_android_surface 1
#define XR_FB_swapchain_update_state_android_surface_SPEC_VERSION 1
#define XR_FB_SWAPCHAIN_UPDATE_STATE_ANDROID_SURFACE_EXTENSION_NAME "XR_FB_swapchain_update_state_android_surface"
#ifdef XR_USE_PLATFORM_ANDROID
typedef struct XrSwapchainStateAndroidSurfaceDimensionsFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
uint32_t width;
uint32_t height;
} XrSwapchainStateAndroidSurfaceDimensionsFB;
#endif // XR_USE_PLATFORM_ANDROID
#endif /* XR_USE_PLATFORM_ANDROID */
#ifdef XR_USE_GRAPHICS_API_OPENGL_ES
#define XR_FB_swapchain_update_state_opengl_es 1
#define XR_FB_swapchain_update_state_opengl_es_SPEC_VERSION 1
#define XR_FB_SWAPCHAIN_UPDATE_STATE_OPENGL_ES_EXTENSION_NAME "XR_FB_swapchain_update_state_opengl_es"
#ifdef XR_USE_GRAPHICS_API_OPENGL_ES
typedef struct XrSwapchainStateSamplerOpenGLESFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
EGLenum minFilter;
EGLenum magFilter;
EGLenum wrapModeS;
EGLenum wrapModeT;
EGLenum swizzleRed;
EGLenum swizzleGreen;
EGLenum swizzleBlue;
EGLenum swizzleAlpha;
float maxAnisotropy;
XrColor4f borderColor;
} XrSwapchainStateSamplerOpenGLESFB;
#endif // XR_USE_GRAPHICS_API_OPENGL_ES
#endif /* XR_USE_GRAPHICS_API_OPENGL_ES */
#ifdef XR_USE_GRAPHICS_API_VULKAN
#define XR_FB_swapchain_update_state_vulkan 1
#define XR_FB_swapchain_update_state_vulkan_SPEC_VERSION 1
#define XR_FB_SWAPCHAIN_UPDATE_STATE_VULKAN_EXTENSION_NAME "XR_FB_swapchain_update_state_vulkan"
#ifdef XR_USE_GRAPHICS_API_VULKAN
typedef struct XrSwapchainStateSamplerVulkanFB {
XrStructureType type;
void* XR_MAY_ALIAS next;
VkFilter minFilter;
VkFilter magFilter;
VkSamplerMipmapMode mipmapMode;
VkSamplerAddressMode wrapModeS;
VkSamplerAddressMode wrapModeT;
VkComponentSwizzle swizzleRed;
VkComponentSwizzle swizzleGreen;
VkComponentSwizzle swizzleBlue;
VkComponentSwizzle swizzleAlpha;
float maxAnisotropy;
XrColor4f borderColor;
} XrSwapchainStateSamplerVulkanFB;
#endif // XR_USE_GRAPHICS_API_VULKAN
#endif /* XR_USE_GRAPHICS_API_VULKAN */
#ifdef __cplusplus
}
#endif

2
ext/openxr/openxr_platform_defines.h Executable file → Normal file
View File

@ -1,5 +1,5 @@
/*
** Copyright (c) 2017-2022, The Khronos Group Inc.
** Copyright (c) 2017-2021, The Khronos Group Inc.
**
** SPDX-License-Identifier: Apache-2.0 OR MIT
*/

1031
ext/openxr/openxr_reflection.h Executable file → Normal file

File diff suppressed because it is too large Load Diff