fixed merge conflicts

This commit is contained in:
Schmarni
2023-11-16 03:09:42 +01:00
21 changed files with 2869 additions and 387 deletions

View File

@@ -3,10 +3,12 @@ name = "bevy_oxr"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
description = "Community crate for OpenXR in Bevy" description = "Community crate for OpenXR in Bevy"
repository = "https://github.com/awtterpip/bevy_openxr"
license = "MIT/Apache-2.0" license = "MIT/Apache-2.0"
[features] [features]
default = ["openxr/mint", "linked"] default = ["linked"]
linked = ["openxr/linked"] linked = ["openxr/linked"]
[workspace] [workspace]
@@ -22,24 +24,19 @@ wgpu-core = { version = "0.17.1", features = ["vulkan"] }
wgpu-hal = "0.17.1" wgpu-hal = "0.17.1"
[target.'cfg( target_family = "unix" )'.dependencies] [target.'cfg( target_family = "unix" )'.dependencies]
openxr = "0.17.1" openxr = { version = "0.17.1", features = ["mint"] }
[target.'cfg(not(target_family = "unix"))'.dependencies] [target.'cfg(not(target_family = "unix"))'.dependencies]
openxr = { version = "0.17.1", features = ["static"] } openxr = { version = "0.17.1", features = ["mint", "static"] }
[dev-dependencies] [dev-dependencies]
bevy = "0.12" bevy = "0.12"
color-eyre = "0.6.2" color-eyre = "0.6.2"
# bevy_rapier3d = { git = "https://github.com/Schmarni-Dev/bevy_rapier" } bevy_rapier3d = { git = "https://github.com/devil-ira/bevy_rapier", branch = "bevy-0.12" }
bevy_rapier3d = { git = "https://github.com/devil-ira/bevy_rapier", version = "0.22.0", branch = "bevy-0.12" }
[[example]] [[example]]
name = "xr" name = "xr"
path = "examples/xr.rs" path = "examples/xr.rs"
[[example]]
name = "demo"
path = "examples/demo/src/main.rs"
[profile.release] [profile.release]
debug = true debug = true

View File

@@ -24,6 +24,11 @@ strip = "strip"
[package.metadata.android.sdk] [package.metadata.android.sdk]
target_sdk_version = 32 target_sdk_version = 32
[target.'cfg(not(target_os="android"))'.dependencies.bevy_oxr]
path = "../../"
default-features = true
# [package.metadata.android.application] # [package.metadata.android.application]
# icon = "@mipmap/ic_launcher" # icon = "@mipmap/ic_launcher"
# label = "Bevy Example" # label = "Bevy Example"

View File

@@ -3,13 +3,18 @@ name = "demo"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib] [lib]
crate-type = ["cdylib", "lib"] crate-type = ["rlib", "cdylib"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
bevy = "0.12" bevy = "0.12"
bevy_oxr = { path = "../../", default-features = false } bevy_oxr = { path = "../../", default-features = false }
bevy_rapier3d = { git = "https://github.com/devil-ira/bevy_rapier", branch = "bevy-0.12" } bevy_rapier3d = { git = "https://github.com/devil-ira/bevy_rapier", branch = "bevy-0.12" }
color-eyre = "0.6.2" color-eyre = "0.6.2"
[target.'cfg(not(target_os="android"))'.dependencies.bevy_oxr]
path = "../../"
default-features = true

View File

@@ -0,0 +1,24 @@
[package]
name = "demo"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = ["cdylib", "lib"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bevy = { git = "https://github.com/bevyengine/bevy.git" }
# bevy = "0.11.3"
# default-features is false because it for some reason complains when trying to statically link openxr
bevy_oxr = { path = "../../" }
# bevy_openxr = { git = "https://github.com/Schmarni-Dev/bevy_openxr", default-features = false, branch = "demo"}
bevy_rapier3d = { git = "https://github.com/devil-ira/bevy_rapier", version = "0.22.0", branch = "bevy-0.12" }
# bevy_rapier3d = { git = "https://github.com/Schmarni-Dev/bevy_rapier" }
color-eyre = "0.6.2"
[profile.release]
lto = "fat"
codegen-units = 1
panic = "abort"

View File

@@ -0,0 +1,739 @@
[1/3] Fetch precompiled artifacts
[1/3] Fetch precompiled artifacts [107ms]
[2/3] Build rust `demo`
[2/3] Build rust `demo` [442ms]
[3/3] Create apk
[3/3] Create apk [2761ms]
/home/schmarni/Code/adeptus_bevy_oxr/examples/demo/target/x/release/android/demo.apk: 1 file pushed, 0 skipped. 206.4 MB/s (17960272 bytes in 0.083s)
Success
Starting: Intent { act=android.intent.action.MAIN cmp=org.bevyengine.demo_openxr_android/android.app.NativeActivity }
--------- beginning of main
8986 8986 E _openxr_androi: Not starting debugger since process cannot load the jdwp agent.
8986 8986 D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10060; state: ENABLED
8986 8986 W System : ClassLoader referenced unknown path:
8986 8986 V GraphicsEnvironment: Lazy GPU memory allocation for 'org.bevyengine.demo_openxr_android': false
8986 8986 V GraphicsEnvironment: ANGLE Developer option for 'org.bevyengine.demo_openxr_android' set to: 'default'
8986 8986 V GraphicsEnvironment: ANGLE GameManagerService for org.bevyengine.demo_openxr_android: false
8986 8986 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
8986 8986 D CompatibilityChangeReporter: Compat change id reported: 175409949; UID 10060; state: DISABLED
8986 8986 D CompatibilityChangeReporter: Compat change id reported: 175409951; UID 10060; state: ENABLED
8986 8986 D CompatibilityChangeReporter: Compat change id reported: 175409950; UID 10060; state: DISABLED
8986 8986 D NetworkSecurityConfig: No Network Security Config specified, using platform default
8986 8986 D CompatibilityChangeReporter: Compat change id reported: 175409952; UID 10060; state: DISABLED
8986 8986 D NetworkSecurityConfig: No Network Security Config specified, using platform default
8986 8986 W Thread-2: type=1400 audit(0.0:253): avc: denied { read } for name="cpu.cfs_quota_us" dev="cgroup" ino=9 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
8986 8986 W Thread-2: type=1400 audit(0.0:254): avc: denied { read } for name="cpu.cfs_period_us" dev="cgroup" ino=10 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrInitializeLoaderKHR | OpenXR-Loader] : Entering loader trampoline
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Entering loader trampoline
8986 9016 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
8986 9016 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.hidl.manager-V1.0-java.jar
8986 9016 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.hidl.base-V1.0-java.jar
8986 9016 D vulkan : searching for layers in '/data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64'
8986 9016 D vulkan : searching for layers in '/data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/base.apk!/lib/arm64-v8a'
8986 9016 I DriverLoader: Calling into SetLegacyVrApiEntryPointOverride
8986 9016 I VrApi_DriverLoader: SetLegacyVrApiEntryPointOverride: calling sprintf
8986 9016 I VrApi_DriverLoader: SetLegacyVrApiEntryPointOverride: env buffer is '0x781d09ee60'
8986 9016 I VrApi_DriverLoader: SetLegacyVrApiEntryPointOverride: calling setenv
8986 9016 I DriverLoader: Creating Temp JNIEnv
8986 9016 I DriverLoader: Calling FindClass
8986 9016 I DriverLoader: Calling RegisterNativeVrApiLoaderMethods
8986 9016 I VrApi_DriverLoader: RegisterNativeVrApiLoaderMethods: calling RegisterNatives
8986 9016 I DriverLoader: Calling RegisterNativeXrLoaderMethods
8986 9016 I OpenXR_DriverLoader: RegisterNativeVrApiLoaderMethods: calling RegisterNatives
8986 9016 I DriverLoader: Exiting JNI_OnLoad
8986 9016 I OpenXR_ClientState: OpenXRClientState::create - from xrInitializeLoaderKHR
8986 9016 I XrRuntimeSharedClientState: SharedClientState::create called from 'OpenXRClientState::init'
8986 9016 I ipcLoader [RUNTIMEIPC]: RuntimeIPC: Loader: IPC Service API Loader Version: 52 Oct 7 2023 12:26:40
8986 9016 I ipcLoader [RUNTIMEIPC]: RuntimeIPC: Using android_get_exported_namespace: libripcclient.oculus.so
8986 9016 I ipcLoader [RUNTIMEIPC]: RuntimeIPC: android_get_exported_namespace SUCCESS: libripcclient.oculus.so
8986 9016 I DeadlockObserver [RUNTIMEIPC]: Init SUCCESS
8986 9025 I DeadlockObserver [RUNTIMEIPC]: MainLoop starting
8986 9026 D IPCDataChannelServer [RUNTIMEIPC]: Connected: 1, broker_package:broker_process:0
8986 9016 I BrokerRPC [RUNTIMEIPC]: InitRPCToServiceInternal: Success
8986 9016 I RuntimeIPCSystem [RUNTIMEIPC]: RuntimeIPCSystem: Init SUCCESS
8986 9016 I ClientProcessConnector [RUNTIMEIPC]: GetProcessConnection: com.oculus.systemdriver:com.oculus.vrruntimeservice
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: InitServerStateBuffer: SUCCESS. 0, Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
8986 9016 I OpenXR_ClientState: Client state creation succeeded.
8986 9016 I OpenXR-Loader: Info [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntime succeeded loading runtime using interface version 1 and OpenXR API version 1.0
8986 9016 I OpenXR : IsFirstParty 0
8986 9016 W _openxr_androi: Accessing hidden method Landroid/content/pm/ApplicationInfo;->isPrivilegedApp()Z (blocked,test-api, reflection, denied)
8986 9016 W _openxr_androi: If this is a platform test consider enabling VMRuntime.ALLOW_TEST_API_ACCESS change id for this package.
8986 9016 I OpenXR : IsPrivileged 0
8986 9016 I OpenXR : Is_X_PartnerGateKeeper
8986 9016 I OpenXR : PGK Status: exp = 0, hor = false, dc = false
8986 9016 I OpenXR : Extension status: P
8986 9016 I OpenXR : IsFirstParty 0
8986 9016 I DeviceProperties: ovrDeviceProperties::Initialize
8986 9016 I DeviceProperties: Device Region: 'US'
8986 9016 I DeviceProperties: GPU Type: 'ADRENO_650'
8986 9016 I DeviceProperties: Num Refresh Rates Supported 61
8986 9016 I DeviceProperties: Refresh Rate (0): 120.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (1): 119.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (2): 118.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (3): 117.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (4): 116.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (5): 115.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (6): 114.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (7): 113.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (8): 112.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (9): 111.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (10): 110.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (11): 109.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (12): 108.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (13): 107.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (14): 106.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (15): 105.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (16): 104.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (17): 103.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (18): 102.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (19): 101.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (20): 100.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (21): 99.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (22): 98.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (23): 97.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (24): 96.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (25): 95.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (26): 94.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (27): 93.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (28): 92.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (29): 91.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (30): 90.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (31): 89.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (32): 88.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (33): 87.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (34): 86.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (35): 85.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (36): 84.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (37): 83.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (38): 82.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (39): 81.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (40): 80.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (41): 79.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (42): 78.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (43): 77.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (44): 76.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (45): 75.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (46): 74.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (47): 73.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (48): 72.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (49): 71.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (50): 70.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (51): 69.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (52): 68.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (53): 67.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (54): 66.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (55): 65.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (56): 64.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (57): 63.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (58): 62.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (59): 61.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (60): 60.000000Hz
8986 9016 I DeviceProperties: DisplayParms.ScanoutDirection = 1
8986 9016 I DeviceProperties: DisplayParms.ShutterType = 1
8986 8986 W Thread-2: type=1400 audit(0.0:255): avc: denied { read } for name="u:object_r:vendor_board_init_prop:s0" dev="tmpfs" ino=12449 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:vendor_board_init_prop:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
8986 9016 W libc : Access denied finding property "ro.vendor.product.model_extended"
8986 9016 I DeviceProperties: getDisplayDimensions returned: 3664, 1920
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_POSITIONAL_TRACKING_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_PASSTHROUGH_CAMERA_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_DYNAMIC_DISPLAY_REFRESH_RATE_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_MEMORY_EXPORT_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_FIXED_FOVEATED_RENDERING_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_SUBSAMPLED_LAYOUT_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_KEYBOARD_TRACKING_BIT
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_body_tracking` due to: missing uses-feature string `com.oculus.software.body_tracking` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_keyboard_tracking` due to: missing uses-feature string `oculus.software.trackedkeyboard` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_spatial_entity` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX2_spatial_entity` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_triangle_mesh` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_passthrough` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_passthrough_color_lut` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_META_passthrough_color_lut` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
8986 9016 I OpenXR : PassesGKKillswitch 1
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_render_model` due to: missing uses-feature string `com.oculus.feature.RENDER_MODEL` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_spatial_entity_query` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX2_spatial_entity_query` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_query` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_touch_controller_extras` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_spatial_entity_storage` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX2_spatial_entity_storage` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_storage` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_storage_batch` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_sharing` due to: missing uses-permission string `com.oculus.permission.IMPORT_EXPORT_IOT_MAP_DATA` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_container` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_scene` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_scene_capture` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_META_spatial_entity_mesh` due to: missing uses-permission string `com.oculus.permission.USE_SCENE` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_face_tracking` due to: missing uses-feature string `oculus.software.face_tracking` from AndroidManifest
8986 9016 I OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension 'XR_META_local_dimming' as device requirements requirements (16) are not met.
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_META_foveation_eye_tracked` due to: missing uses-feature string `oculus.software.eye_tracking` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_eye_tracking_social` due to: missing uses-feature string `oculus.software.eye_tracking` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_passthrough_keyboard_hands` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_composition_layer_settings` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_composition_layer_depth_test` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_eye_gaze_interaction` due to: missing uses-permission string `com.oculus.permission.EYE_TRACKING` from AndroidManifest
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_hand_joints_motion_range` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXTX1_hand_tracking_data_source` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_performance_metrics` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_virtual_keyboard` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX2_virtual_keyboard` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX2_detached_controllers` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXTX1_event_channel` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_environment_depth` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_active_action_set_priority` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_palm_pose` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_simultaneous_hands_controllers_management` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Completed loader trampoline
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Entering loader trampoline
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Completed loader trampoline
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu available xr exts: ExtensionSet {
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu almalence_digital_lens_control: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu epic_view_configuration_fov: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_performance_settings: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_thermal_query: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_debug_utils: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_eye_gaze_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_view_configuration_depth_range: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_conformance_automation: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_hand_tracking: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_dpad_binding: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_hand_joints_motion_range: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_samsung_odyssey_controller: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_hp_mixed_reality_controller: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_palm_pose: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_uuid: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu extx_overlay: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_image_layout: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_alpha_blend: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_android_surface_swapchain_create: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_secure_content: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_display_refresh_rate: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_color_space: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_hand_tracking_mesh: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_hand_tracking_aim: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_hand_tracking_capsules: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_foveation: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_foveation_configuration: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_keyboard_tracking: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_triangle_mesh: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_passthrough: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_render_model: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity_query: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity_storage: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_foveation_vulkan: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state_android_surface: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state_opengl_es: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state_vulkan: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_space_warp: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_scene: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity_container: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_passthrough_keyboard_hands: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_settings: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_vive_cosmos_controller_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_facial_tracking: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_vive_focus3_controller_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_hand_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_vive_wrist_tracker_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htcx_vive_tracker_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu huawei_controller_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_android_thread_settings: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_android_surface_swapchain: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_cube: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_android_create_instance: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_depth: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_vulkan_swapchain_format_list: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_cylinder: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_equirect: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_opengl_enable: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_opengl_es_enable: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_vulkan_enable: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_visibility_mask: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_color_scale_bias: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_convert_timespec_time: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_loader_init: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_loader_init_android: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_vulkan_enable2: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_equirect2: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_binding_modification: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_swapchain_usage_input_attachment_bit: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu meta_vulkan_swapchain_create_info: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu meta_performance_metrics: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ml_ml2_controller_interaction: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu mnd_headless: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu mnd_swapchain_usage_input_attachment_bit: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu mndx_egl_enable: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_unbounded_reference_space: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_spatial_anchor: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_spatial_graph_bridge: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_hand_interaction: true,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_hand_tracking_mesh: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_secondary_view_configuration: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_first_person_observer: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_controller_model: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_composition_layer_reprojection: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_spatial_anchor_persistence: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu oculus_android_session_state_enable: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu oculus_audio_device_guid: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ultraleap_hand_tracking_forearm: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu valve_analog_threshold: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_quad_views: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_foveated_rendering: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_composition_layer_depth_test: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_environment_depth_estimation: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_marker_tracking: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_view_offset: false,
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu other: [
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_OCULUS_common_reference_spaces\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_common_events\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_passthrough_preferences\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_touch_controller_proximity\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_touch_controller_pro\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_touch_controller_plus\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_haptic_amplitude_envelope\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_haptic_pcm\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_spatial_entity_user\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_feature_fidelity\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_composition_layer_depth_test\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_virtual_keyboard\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_headset_id\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_recommended_layer_resolution\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_automatic_layer_filter\0",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ],
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu}
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateApiLayerProperties | OpenXR-Loader] : Entering loader trampoline
8986 9016 V OpenXR-Loader: Verbose [GENERAL | FindLayerLibraries | OpenXR-Loader] : searching for layers in /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateApiLayerProperties | OpenXR-Loader] : Entering loader trampoline
8986 9016 V OpenXR-Loader: Verbose [GENERAL | FindLayerLibraries | OpenXR-Loader] : searching for layers in /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu available xr layers: []
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Entering loader trampoline
8986 9016 V OpenXR-Loader: Verbose [GENERAL | FindLayerLibraries | OpenXR-Loader] : searching for layers in /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Entering LoaderInstance::CreateInstance
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Entering loader terminator
8986 9016 I OpenXR : ----------- xrCreateInstance [start] ----------
8986 9016 I OpenXR : xrCreateInstance: Extension XR_KHR_android_create_instance enabled.
8986 9016 I OpenXR : xrCreateInstance: Extension XR_KHR_vulkan_enable2 enabled.
8986 9016 I VersionGater: App OpenXR version is 1.0.25
8986 9016 I VersionGater: Version gate state: 1111 1000 0
8986 9016 W VrRuntimeClient: InitDeviceConfig called before service connection! GKs checked before service connection will return defaults!
8986 9016 I TREX : Initializing TREX for client c56f4dcb3ab1079f...
8986 9016 I TREX : Initializing system...
8986 9016 I XrRuntimeSystem_Client: BodyPoweredHands checkSysPropForBodyAPIOverride 0
8986 9016 I TREX : Created plugin package context for com.oculus.systemdriver
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (HapticsServer)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (HapticsServer)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (HapticsServer)
8986 9016 I TREX : Loading plugin com.oculus.wearableinputservice:libtrex_wristband_client_plugin.so
8986 9016 I TREX : package 'com.oculus.wearableinputservice' not found, skipping
8986 9016 I TREX : Plugin 'com.oculus.wearableinputservice:libtrex_wristband_client_plugin.so' not loaded.
8986 9016 I PerformanceManagerInterface_Impl: perfmgr: Skipping initial server state initialization, will initialize next time around
8986 9016 E TREX : Interface version 3 was not found. Check debug build for more information.
8986 9016 I DeviceProperties: ovrDeviceProperties::Initialize
8986 9016 I DeviceProperties: Device Region: 'US'
8986 9016 I DeviceProperties: GPU Type: 'ADRENO_650'
8986 9016 I DeviceProperties: Num Refresh Rates Supported 61
8986 9016 I DeviceProperties: Refresh Rate (0): 120.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (1): 119.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (2): 118.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (3): 117.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (4): 116.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (5): 115.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (6): 114.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (7): 113.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (8): 112.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (9): 111.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (10): 110.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (11): 109.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (12): 108.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (13): 107.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (14): 106.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (15): 105.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (16): 104.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (17): 103.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (18): 102.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (19): 101.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (20): 100.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (21): 99.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (22): 98.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (23): 97.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (24): 96.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (25): 95.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (26): 94.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (27): 93.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (28): 92.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (29): 91.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (30): 90.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (31): 89.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (32): 88.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (33): 87.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (34): 86.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (35): 85.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (36): 84.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (37): 83.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (38): 82.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (39): 81.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (40): 80.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (41): 79.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (42): 78.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (43): 77.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (44): 76.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (45): 75.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (46): 74.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (47): 73.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (48): 72.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (49): 71.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (50): 70.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (51): 69.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (52): 68.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (53): 67.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (54): 66.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (55): 65.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (56): 64.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (57): 63.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (58): 62.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (59): 61.000000Hz
8986 9016 I DeviceProperties: Refresh Rate (60): 60.000000Hz
8986 9016 I DeviceProperties: DisplayParms.ScanoutDirection = 1
8986 9016 I DeviceProperties: DisplayParms.ShutterType = 1
8986 8986 W Thread-2: type=1400 audit(0.0:256): avc: denied { read } for name="u:object_r:vendor_board_init_prop:s0" dev="tmpfs" ino=12449 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:vendor_board_init_prop:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
8986 9016 W libc : Access denied finding property "ro.vendor.product.model_extended"
8986 9016 I DeviceProperties: getDisplayDimensions returned: 3664, 1920
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_POSITIONAL_TRACKING_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_PASSTHROUGH_CAMERA_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_DYNAMIC_DISPLAY_REFRESH_RATE_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_MEMORY_EXPORT_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_FIXED_FOVEATED_RENDERING_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_SUBSAMPLED_LAYOUT_BIT
8986 9016 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_KEYBOARD_TRACKING_BIT
8986 9016 I VrRuntimeClient: DevicesSupported : 3 devices, quest|quest2|quest3
8986 9016 I Distortion: Initializing Mesh Decenter Correction
8986 9016 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
8986 9016 I Distortion: Initializing Mesh Decenter Correction
8986 9016 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
8986 9016 I OpenXR : ----------- xrCreateInstance [end] ----------
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Completed loader terminator
8986 9016 I OpenXR-Loader: Info [GENERAL | xrCreateInstance | OpenXR-Loader] : LoaderInstance::CreateInstance succeeded with 0 layers enabled and runtime interface - created instance = 0x0100000000000001
8986 9016 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Completed loader trampoline
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu created instance
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu created system
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu loaded OpenXR runtime: Oculus 57.295.0 Oculus Quest2
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu creating vulkan instance with these extensions: [
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_KHR_surface",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_KHR_android_surface",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_EXT_swapchain_colorspace",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_KHR_get_physical_device_properties2",
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu]
8986 9016 I AdrenoVK-0: ===== BEGIN DUMP OF OVERRIDDEN SETTINGS =====
8986 9016 I AdrenoVK-0: ===== END DUMP OF OVERRIDDEN SETTINGS =====
8986 9016 I AdrenoVK-0: QUALCOMM build : fa5d856e9e, I160a5475da
8986 9016 I AdrenoVK-0: Build Date : 07/24/23
8986 9016 I AdrenoVK-0: Shader Compiler Version : E031.42.07.00
8986 9016 I AdrenoVK-0: Local Branch :
8986 9016 I AdrenoVK-0: Remote Branch :
8986 9016 I AdrenoVK-0: Remote Branch :
8986 9016 I AdrenoVK-0: Reconstruct Branch :
8986 9016 I AdrenoVK-0: Build Config : S P 10.0.7 AArch64
8986 9016 I AdrenoVK-0: Driver Path : /vendor/lib64/hw/vulkan.adreno.so
8986 9016 I AdrenoVK-0: Driver Version : 0728.0
8986 9016 I AdrenoVK-0: PFP : 0x016dd112
8986 9016 I AdrenoVK-0: ME : 0x00000000
8986 9016 I AdrenoVK-0: Application Name : Ambient
8986 9016 I AdrenoVK-0: Application Version : 0x00000001
8986 9016 I AdrenoVK-0: Engine Name : Ambient
8986 9016 I AdrenoVK-0: Engine Version : 0x00000001
8986 9016 I AdrenoVK-0: Api Version : 0x00401000
8986 9016 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu created vulkan instance
8986 9016 I VulkanLoader: ovrVulkanLoader::Load
8986 9016 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkCreateDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
8986 9016 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkDestroyDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
8986 9016 W VulkanLoader: ovrVulkanLoader::LoadDeviceFunctions: device invalid
8986 9016 W VulkanLoader: ovrVulkanLoader::LoadExtensionList: physicalDevice invalid
8986 9016 I Vulkan_Utils: --------------------------------
8986 9016 I Vulkan_Utils: Device Name : Adreno (TM) 650
8986 9016 I Vulkan_Utils: Device Type : integrated GPU
8986 9016 I Vulkan_Utils: Vendor ID : 0x5143
8986 9016 I Vulkan_Utils: Device ID : 0x6050002
8986 9016 I Vulkan_Utils: Driver Version : 512.728.0
8986 9016 I Vulkan_Utils: API Version : 1.1.128
8986 9016 I Vulkan_Utils: Queue Families : 0 = graphics compute (3 queues, 3 priorities)
8986 9016 I Vulkan_Utils: Work Queue Family : 0
8986 9016 I Vulkan_Utils: Device Extensions : VK_KHR_swapchain (required, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_external_memory (required, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_get_memory_requirements2 (required, enabled)
8986 9016 I Vulkan_Utils: Device Extensions VK_EXT_fragment_density_map (optional, enabled)
8986 9016 I Vulkan_Utils: VK_EXT_fragment_density_map2 (optional, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_maintenance1 (optional, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_bind_memory2 (optional, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_sampler_ycbcr_conversion (optional, enabled)
8986 9016 I Vulkan_Utils: VK_EXT_queue_family_foreign (optional, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_dedicated_allocation (optional, enabled)
8986 9016 I Vulkan_Utils: VK_KHR_external_memory_fd (optional, enabled)
8986 9016 I Vulkan_Utils: VK_ANDROID_external_memory_android_hardware_buffer (optional, enabled)
8986 9016 I OpenXR : ------------ xrCreateSession [start] -----------
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
8986 9016 I VrRuntimeClient: g_RuntimeServiceSDKClient.Connected: com.oculus.systemdriver:com.oculus.vrruntimeservice
8986 9016 I VrRuntimeClient: RuntimeIPC: ServiceConnected: SharedMemoryDebug: publicReadOnly SharedMemorySize=8744 () sizeof(sharedMemoryPublicReadOnly)=8768
8986 9016 I VrRuntimeClient: RuntimeIPC: ServiceConnected: SharedMemoryDebug: privateReadWrite SharedMemorySize=40352 () sizeof(privateSharedMemorySize)=8
8986 9016 I VrRuntimeClient: nativeRuntimeServiceConnected: SharedMemoryDebug: publicReadOnlyFd=95, privateReadWriteFd=96 ()
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
8986 9016 I VrRuntimeClient: g_RuntimeServiceSDKClient.InitClient SUCCESS. Version: 5.0, Custom: 1.0
8986 9016 I RuntimeIPCClientMgr [RUNTIMEIPC]: GetClientOptions
8986 9016 I OpenXR : xrCreateSession: Connected to VrRuntimeService after 0.125536s
8986 9016 I AdrenoGLES-0: QUALCOMM build : fa5d856e9e, I160a5475da
8986 9016 I AdrenoGLES-0: Build Date : 07/24/23
8986 9016 I AdrenoGLES-0: OpenGL ES Shader Compiler Version: E031.42.07.00
8986 9016 I AdrenoGLES-0: Local Branch :
8986 9016 I AdrenoGLES-0: Remote Branch :
8986 9016 I AdrenoGLES-0: Remote Branch :
8986 9016 I AdrenoGLES-0: Reconstruct Branch :
8986 9016 I AdrenoGLES-0: Build Config : S P 10.0.7 AArch64
8986 9016 I AdrenoGLES-0: Driver Path : /vendor/lib64/egl/libGLESv2_adreno.so
8986 9016 I AdrenoGLES-0: Driver Version : 0728.0
8986 9016 I AdrenoGLES-0: Process Name : org.bevyengine.demo_openxr_android
8986 9016 I AdrenoGLES-0: PFP: 0x016dd112, ME: 0x00000000
8986 9016 I VrRuntimeClient: SetPhaseSyncMode 1
8986 9016 I VrRuntimeClient: SetPhaseSyncMode 1
8986 9016 I OpenXR : PhaseSync Mode: 1
8986 9016 I VrRuntimeClient: VrRuntimeClient: Init
8986 9016 I PTKService: PTKServiceClient Init
8986 9016 I ClientProcessConnector [RUNTIMEIPC]: GetProcessConnection: com.oculus.vrshell:com.oculus.vrshell:Overlay
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: InitServerStateBuffer: SUCCESS. 0, Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
8986 9016 V OVR::Capture: Failed to open trace_marker ATrace file!
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: InitServerStateBuffer: SUCCESS. 0, Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
8986 9016 I VrRuntimeClient: OSSDKTRACKING calculating secure tracking
8986 9016 I VrRuntimeClient: OSSDKTRACKING secure tracking is 0
8986 9016 I AudioCapture: AudioCapture::Init
8986 9016 I AudioCapture: AudioCapture::Init -> Initializing audio capture using direct OS Callbacks
8986 9016 I AudioCapture: AudioCapture::Init COMPLETE
8986 9016 I Foveation: Vulkan foveation tile offset enabled: 0
8986 9016 I Foveation: Vulkan foveation tile turn off enabled: 1
8986 9016 I ClientProcessConnector [RUNTIMEIPC]: GetProcessConnection: com.oculus.guardian:com.oculus.vrguardianservice
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.guardian:com.oculus.vrguardianservice (guardianserver)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.guardian:com.oculus.vrguardianservice (guardianserver)
8986 9016 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:8986, Server: com.oculus.guardian:com.oculus.vrguardianservice (guardianserver)
8986 9016 I VrGuardianClient: g_GuardianSDKClient connected.
8986 9016 I VrRuntimeClient: Is120HzSupported: 1
8986 9016 I FaceEyeTrackingManagerHelpers: [FaceEyeTrackingManager] Audio FT GK: 0
8986 9016 I LogTimer: CPUTIME: VrRuntimeClient_Init took 156.5617 ms
8986 9016 I VulkanLoader: ovrVulkanLoader::Load
8986 9016 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkCreateDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
8986 9016 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkDestroyDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
8986 9016 W VulkanLoader: VulkanLoader::LoadDeviceFunctions: Failed to load vkCmdDebugMarkerInsertEXT, likely vkDevice created without xrGetVulkanDeviceExtensionsKHR/vrapi_GetDeviceExtensionsVulkan
8986 9016 W VulkanLoader: VulkanLoader::LoadDeviceFunctions: Failed to load vkDebugMarkerSetObjectTagEXT, likely vkDevice created without xrGetVulkanDeviceExtensionsKHR/vrapi_GetDeviceExtensionsVulkan
8986 9016 W VulkanLoader: VulkanLoader::LoadDeviceFunctions: Failed to load vkGetMemoryFdKHR, likely vkDevice created without xrGetVulkanDeviceExtensionsKHR/vrapi_GetDeviceExtensionsVulkan
8986 9016 I Foveation: Vulkan FFR is supported, with density map size 32x32
8986 9016 I Distortion: Initializing Mesh Decenter Correction
8986 9016 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
8986 9016 I Distortion: Initializing Mesh Decenter Correction
8986 9016 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
8986 9016 I GkHelper: Checking gk 'oculus_miramar_colorspace_p3', default = false
8986 9016 I Colorspace: Miramar default OpenXR colorspace via GK: <default>
8986 9016 I ClientInputSettings: SYSTEMBUTTONSPACE GKS freeze '1'
8986 9016 I ClientInputSettings: SYSTEMBUTTONSPACE 'org.bevyengine.demo_openxr_android' Freeze input '1' on home button down
8986 9016 I ClientInputSettings: HANDTRACKING: Hands V2.0 enforced.
8986 9016 I ClientInputSettings: HANDTRACKING: YES, in the GK oculus_mobile_enable_hand_tracking_frequency_inter
8986 9016 I ClientInputInterface: HANDTRACKING sethandtrackingfrequency 1
8986 9016 I ClientInputSettings: HANDTRACKING: YES, in the GK oculus_mobile_30hz_handtracking_downclocking
8986 9016 I ClientInputInterface: Set30HzHandtrackingDownclockingGKFlag 1
8986 9016 I ClientInputSettings: HANDTRACKING: NO, not in the GK oculus_mobile_enable_hand_emulation_of_controllers
8986 9016 I ClientInputInterface: HANDTRACKING SetHandTrackingControllerEmulationGkFlag 0
8986 9016 I InputHooks: InitializeInputHooks
8986 9016 I InputHooks: InitializeInputHooks create
8986 9016 I OpenXR : Disable output struct type validation on org.bevyengine.demo_openxr_android.
8986 9016 I OpenXR : Disable GetFaceExpressionWeights return code fix on org.bevyengine.demo_openxr_android.
8986 9016 I OpenXR : Disable HandJointPalmFix on org.bevyengine.demo_openxr_android.
8986 9016 I OpenXR : xrCreateSession: Activity is not yet in the ready state.
8986 9016 I XrRuntimeUtils: XrRuntimeUtils::CreateSession
8986 9016 I OpenXR : ------------ xrCreateSession [end] -----------
8986 9016 I SwapChain_Vulkan_Memory_Export: Imported texture has requirements 3, ends up index 0
8986 9016 I SwapChain_Vulkan_Memory_Export: Imported texture has requirements 3, ends up index 0
8986 9016 I SwapChain_Vulkan_Memory_Export: Imported texture has requirements 3, ends up index 0
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: Spaces info
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: Local version=45
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: RawFromLocal = (0.000, 0.073, 0.000, 0.997), (-0.16, 0.12, 0.06)
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: RawFromLocalTilted = (-0.010, 0.075, 0.117, 0.990), (-0.16, 0.12, 0.06)
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: Stage IsValid=true
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: Stage HasActiveGuardian=true
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: Stage Width=4.762032, Depth=4.001123
8986 9016 I OpenXR_Space: xrCreateReferenceSpace: RawFromStage = (0.000, 0.633, 0.000, 0.774), (0.09, -0.77, 1.26)
8986 9016 I OboeAudio: openStream() OUTPUT -------- OboeVersion1.7.0 --------
8986 9016 I AAudio : AAudioStreamBuilder_openStream() called ----------------------------------------
8986 9016 I AudioStreamBuilder: rate = 44100, channels = 2, channelMask = 0x80000003, format = 5, sharing = SH, dir = OUTPUT
8986 9016 I AudioStreamBuilder: device = 0, sessionId = -1, perfMode = 10, callback: ON with frames = 0
8986 9016 I AudioStreamBuilder: usage = 1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
8986 9016 I AudioStreamBuilder: privacy sensitive = false
8986 9016 I AudioStreamBuilder: opPackageName = (null)
8986 9016 I AudioStreamBuilder: attributionTag = (null)
8986 9016 D AudioStreamBuilder: build() [meta] disable aaudio mmap via gk
8986 9016 D AudioStreamBuilder: build() MMAP not used because AAUDIO_PERFORMANCE_MODE_LOW_LATENCY not requested.
8986 9016 D _openxr_androi: PlayerBase::PlayerBase()
8986 9016 D AudioStreamTrack: open(), request notificationFrames = 0, frameCount = 0
8986 9016 D AAudioStream: setState(s#1) from 0 to 2
8986 9016 I AAudio : AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#1 ----------------
8986 9016 D AAudio : AAudioStream_requestStart(s#1) called --------------
8986 9016 D AAudioStream: setState(s#1) from 2 to 3
8986 9016 D AAudio : AAudioStream_requestStart(s#1) returned 0 ---------
8986 9043 D AudioStreamLegacy: onAudioDeviceUpdate(deviceId = 2)
8986 9016 E event /home/schmarni/.cargo/git/checkouts/bevy-f7ffde730c324c74/d67fbd5/crates/bevy_gilrs/src/ Failed to start Gilrs. Gilrs does not support current platform.
8986 9044 D AAudioStream: setState(s#1) from 3 to 4
8986 9016 W event /home/schmarni/.cargo/git/checkouts/bevy-f7ffde730c324c74/d67fbd5/crates/bevy_pbr/src/ss ScreenSpaceAmbientOcclusionPlugin not loaded. GPU lacks support: Limits::max_storage_textures_per_shader_stage is less than 5.
8986 9020 I OpenXR_Actions: -- xrSuggestInteractionProfileBindings -
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy-f7ffde730c324c74/d67fbd5/crates/bevy_diagnostic SystemInfo { os: "Android 12 Quest 2", kernel: "4.19.157+", cpu: "", core_count: "8", memory: "5.7 GiB" }
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=19, action=hand_pose, subactionMask=1, pathActionType=4
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=35, action=hand_pose, subactionMask=2, pathActionType=4
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=18, action=pointer_pose, subactionMask=1, pathActionType=4
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=9, action=squeeze, subactionMask=1, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=25, action=squeeze, subactionMask=2, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=26, action=trigger, subactionMask=2, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=10, action=trigger, subactionMask=1, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=27, action=trigger_touched, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=11, action=trigger_touched, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=33, action=haptic_feedback, subactionMask=2, pathActionType=100
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=17, action=haptic_feedback, subactionMask=1, pathActionType=100
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=4, action=x_button, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=5, action=x_button_touch, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=6, action=y_button, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=7, action=y_button_touch, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=8, action=menu_button, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=20, action=a_button, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=21, action=a_button_touch, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=22, action=b_button, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=23, action=b_button_touch, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=12, action=thumbstick_x, subactionMask=1, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=28, action=thumbstick_x, subactionMask=2, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=13, action=thumbstick_y, subactionMask=1, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=29, action=thumbstick_y, subactionMask=2, pathActionType=2
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=14, action=thumbstick_click, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=30, action=thumbstick_click, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=15, action=thumbstick_touch, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=31, action=thumbstick_touch, subactionMask=2, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=16, action=thumbrest_touch, subactionMask=1, pathActionType=1
8986 9020 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=32, action=thumbrest_touch, subactionMask=2, pathActionType=1
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9020 I JniUtils-inl: Creating temporary JNIEnv. This is a heavy operation and should be infrequent. To optimize, use JNI AttachCurrentThread on calling thread
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9019 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
8986 9020 I OpenXR : PostSessionStateChange: XR_SESSION_STATE_UNKNOWN -> XR_SESSION_STATE_IDLE
8986 9020 I Deque : AddEventToQueue called. eventInfo.type: 18, eventInfo.next: 1
8986 9020 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/lib.rs:240: entered XR state IDLE
8986 9020 W OpenXR : xrWaitFrame: session is not running.
8986 9015 I RustStdoutStderr: The application panicked (crashed).
8986 9015 I RustStdoutStderr: Message: called `Result::unwrap()` on an `Err` value: ERROR_SESSION_NOT_RUNNING
8986 9015 I RustStdoutStderr: Location: /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/lib.rs:264
8986 9015 I RustStdoutStderr:
8986 9015 I RustStdoutStderr: Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
8986 9015 I RustStdoutStderr: Run with RUST_BACKTRACE=full to include source snippets.
8986 9015 I RustStdoutStderr: Warning: SpanTrace capture is Unsupported.
8986 9015 I RustStdoutStderr: Ensure that you've setup a tracing-error ErrorLayer and the semver versions are compatible
--------- beginning of crash
8986 9020 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 9020 (Compute Task Po), pid 8986 (_openxr_android)
9050 9050 I crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
9050 9050 I crash_dump64: performing dump of process 8986 (target tid = 9020)
9050 9050 I DEBUG : Current uptime at crash: 140835 seconds
9050 9050 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
9050 9050 F DEBUG : Build fingerprint: 'oculus/hollywood/hollywood:12/SQ3A.220605.009.A1/50623410078100150:user/release-keys'
9050 9050 F DEBUG : Revision: '0'
9050 9050 F DEBUG : ABI: 'arm64'
9050 9050 F DEBUG : Timestamp: 2023-10-31 17:16:29.311291746+0100
9050 9050 F DEBUG : Process uptime: 1s
9050 9050 F DEBUG : Cmdline: org.bevyengine.demo_openxr_android
9050 9050 F DEBUG : pid: 8986, tid: 9020, name: Compute Task Po >>> org.bevyengine.demo_openxr_android <<<
9050 9050 F DEBUG : uid: 10060
9050 9050 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
9050 9050 F DEBUG : Abort message: 'called `Result::unwrap()` on an `Err` value: ERROR_SESSION_NOT_RUNNING'
9050 9050 F DEBUG : x0 0000000000000000 x1 000000000000233c x2 0000000000000006 x3 000000782a278b40
9050 9050 F DEBUG : x4 0000000000008000 x5 0000000000008000 x6 0000000000008000 x7 0000000000000000
9050 9050 F DEBUG : x8 00000000000000f0 x9 00000079424da5d8 x10 0000000000000000 x11 ffffff80fffffbdf
9050 9050 F DEBUG : x12 0000000000000001 x13 525f544f4e5f4e4f x14 00000000000000c8 x15 0000000000000038
9050 9050 F DEBUG : x16 00000079425a1dc0 x17 000000794257fb60 x18 00000078267e6000 x19 000000000000231a
9050 9050 F DEBUG : x20 000000000000233c x21 00000000ffffffff x22 000000782e675ae0 x23 000000782a278e00
9050 9050 F DEBUG : x24 000000782d172948 x25 000000782e7c1198 x26 000000782e7c11b8 x27 000000782a27a060
9050 9050 F DEBUG : x28 000000782a27a060 x29 000000782a278bc0
9050 9050 F DEBUG : lr 000000794253bc5c sp 000000782a278b20 pc 000000794253bc8c pst 0000000000001000
9050 9050 F DEBUG : backtrace:
9050 9050 F DEBUG : #00 pc 0000000000089c8c /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) (BuildId: 9bab48b8427561f041dc114e49bfd38b)
9050 9050 F DEBUG : #01 pc 0000000001993834 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (panic_abort::__rust_start_panic::abort::hf9486a0d1cc2ac08+4) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #02 pc 0000000001993828 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (__rust_start_panic+8) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #03 pc 0000000001985d7c /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (rust_panic+8) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #04 pc 0000000001985be4 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (std::panicking::rust_panic_with_hook::h9c80bfe4d552cb32+660) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #05 pc 0000000001985930 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (std::panicking::begin_panic_handler::_$u7b$$u7b$closure$u7d$$u7d$::haece24ab2b06546c+196) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #06 pc 0000000001984310 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (std::sys_common::backtrace::__rust_end_short_backtrace::h5255d8dea90e7932+4) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #07 pc 0000000001985680 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (rust_begin_unwind+108) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #08 pc 00000000019a5a28 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (core::panicking::panic_fmt::h61a82d7f25335953+44) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #09 pc 00000000019a5d48 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (core::result::unwrap_failed::h0973c0cfe8c3b00d+88) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #10 pc 00000000009e8b80 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (bevy_openxr::xr_begin_frame::h9b87c0166e3ef0c3+3752) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #11 pc 000000000095c8b8 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (_$LT$bevy_ecs..system..function_system..FunctionSystem$LT$Marker$C$F$GT$$u20$as$u20$bevy_ecs..system..system..System$GT$::run_unsafe::h0bd8a8c7266ad61d+704) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #12 pc 00000000018b9120 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (async_executor::Executor::spawn::_$u7b$$u7b$closure$u7d$$u7d$::ha8e73461e94dfc87+116) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #13 pc 00000000018b3580 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (async_task::raw::RawTask$LT$F$C$T$C$S$C$M$GT$::run::h04fb1857844bc080+292) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #14 pc 00000000018e7b10 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (async_executor::Executor::run::_$u7b$$u7b$closure$u7d$$u7d$::h9aa771d4ba968762+4316) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #15 pc 00000000018e8344 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (std::sys_common::backtrace::__rust_begin_short_backtrace::hdd78ac8ab492c8b7+560) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #16 pc 00000000018e887c /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h2eff1674ecfe0bf8+128) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #17 pc 0000000001988260 /data/app/~~SIt7BvKZ9id9zPJkk8E79w==/org.bevyengine.demo_openxr_android-7MbCg-EKRIqT0VODkBZfLA==/lib/arm64/libdemo.so (std::sys::unix::thread::Thread::new::thread_start::hf5b87d2f06226386+24) (BuildId: 5c943a49e7770f56)
9050 9050 F DEBUG : #18 pc 00000000000df1d8 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+132) (BuildId: 9bab48b8427561f041dc114e49bfd38b)
9050 9050 F DEBUG : #19 pc 000000000008b2ec /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 9bab48b8427561f041dc114e49bfd38b)

View File

@@ -0,0 +1,738 @@
[1/3] Fetch precompiled artifacts
[1/3] Fetch precompiled artifacts [111ms]
[2/3] Build rust `demo`
[2/3] Build rust `demo` [1116ms]
[3/3] Create apk
[3/3] Create apk [3032ms]
/home/schmarni/Code/adeptus_bevy_oxr/examples/demo/target/x/release/android/demo.apk: 1 file pushed, 0 skipped. 136.7 MB/s (17960272 bytes in 0.125s)
Success
Starting: Intent { act=android.intent.action.MAIN cmp=org.bevyengine.demo_openxr_android/android.app.NativeActivity }
--------- beginning of main
25874 25874 E _openxr_androi: Not starting debugger since process cannot load the jdwp agent.
25874 25874 D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10060; state: ENABLED
25874 25874 W System : ClassLoader referenced unknown path:
25874 25874 V GraphicsEnvironment: Lazy GPU memory allocation for 'org.bevyengine.demo_openxr_android': false
25874 25874 V GraphicsEnvironment: ANGLE Developer option for 'org.bevyengine.demo_openxr_android' set to: 'default'
25874 25874 V GraphicsEnvironment: ANGLE GameManagerService for org.bevyengine.demo_openxr_android: false
25874 25874 V GraphicsEnvironment: Neither updatable production driver nor prerelease driver is supported.
25874 25874 D CompatibilityChangeReporter: Compat change id reported: 175409949; UID 10060; state: DISABLED
25874 25874 D CompatibilityChangeReporter: Compat change id reported: 175409951; UID 10060; state: ENABLED
25874 25874 D CompatibilityChangeReporter: Compat change id reported: 175409950; UID 10060; state: DISABLED
25874 25874 D NetworkSecurityConfig: No Network Security Config specified, using platform default
25874 25874 D CompatibilityChangeReporter: Compat change id reported: 175409952; UID 10060; state: DISABLED
25874 25874 D NetworkSecurityConfig: No Network Security Config specified, using platform default
25874 25874 W Thread-2: type=1400 audit(0.0:284): avc: denied { read } for name="cpu.cfs_quota_us" dev="cgroup" ino=9 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
25874 25874 W Thread-2: type=1400 audit(0.0:285): avc: denied { read } for name="cpu.cfs_period_us" dev="cgroup" ino=10 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:cgroup:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrInitializeLoaderKHR | OpenXR-Loader] : Entering loader trampoline
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Entering loader trampoline
25874 25910 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.test.base.jar
25874 25910 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.hidl.manager-V1.0-java.jar
25874 25910 D ApplicationLoaders: Returning zygote-cached class loader: /system/framework/android.hidl.base-V1.0-java.jar
25874 25910 D vulkan : searching for layers in '/data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64'
25874 25910 D vulkan : searching for layers in '/data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/base.apk!/lib/arm64-v8a'
25874 25910 I DriverLoader: Calling into SetLegacyVrApiEntryPointOverride
25874 25910 I VrApi_DriverLoader: SetLegacyVrApiEntryPointOverride: calling sprintf
25874 25910 I VrApi_DriverLoader: SetLegacyVrApiEntryPointOverride: env buffer is '0x78242bae60'
25874 25910 I VrApi_DriverLoader: SetLegacyVrApiEntryPointOverride: calling setenv
25874 25910 I DriverLoader: Creating Temp JNIEnv
25874 25910 I DriverLoader: Calling FindClass
25874 25910 I DriverLoader: Calling RegisterNativeVrApiLoaderMethods
25874 25910 I VrApi_DriverLoader: RegisterNativeVrApiLoaderMethods: calling RegisterNatives
25874 25910 I DriverLoader: Calling RegisterNativeXrLoaderMethods
25874 25910 I OpenXR_DriverLoader: RegisterNativeVrApiLoaderMethods: calling RegisterNatives
25874 25910 I DriverLoader: Exiting JNI_OnLoad
25874 25910 I OpenXR_ClientState: OpenXRClientState::create - from xrInitializeLoaderKHR
25874 25910 I XrRuntimeSharedClientState: SharedClientState::create called from 'OpenXRClientState::init'
25874 25910 I ipcLoader [RUNTIMEIPC]: RuntimeIPC: Loader: IPC Service API Loader Version: 52 Oct 7 2023 12:26:40
25874 25910 I ipcLoader [RUNTIMEIPC]: RuntimeIPC: Using android_get_exported_namespace: libripcclient.oculus.so
25874 25910 I ipcLoader [RUNTIMEIPC]: RuntimeIPC: android_get_exported_namespace SUCCESS: libripcclient.oculus.so
25874 25910 I DeadlockObserver [RUNTIMEIPC]: Init SUCCESS
25874 25919 I DeadlockObserver [RUNTIMEIPC]: MainLoop starting
25874 25920 D IPCDataChannelServer [RUNTIMEIPC]: Connected: 1, broker_package:broker_process:0
25874 25910 I BrokerRPC [RUNTIMEIPC]: InitRPCToServiceInternal: Success
25874 25910 I RuntimeIPCSystem [RUNTIMEIPC]: RuntimeIPCSystem: Init SUCCESS
25874 25910 I ClientProcessConnector [RUNTIMEIPC]: GetProcessConnection: com.oculus.systemdriver:com.oculus.vrruntimeservice
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: InitServerStateBuffer: SUCCESS. 0, Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (gkcache)
25874 25910 I OpenXR_ClientState: Client state creation succeeded.
25874 25910 I OpenXR-Loader: Info [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : RuntimeInterface::LoadRuntime succeeded loading runtime using interface version 1 and OpenXR API version 1.0
25874 25910 I OpenXR : IsFirstParty 0
25874 25910 W _openxr_androi: Accessing hidden method Landroid/content/pm/ApplicationInfo;->isPrivilegedApp()Z (blocked,test-api, reflection, denied)
25874 25910 W _openxr_androi: If this is a platform test consider enabling VMRuntime.ALLOW_TEST_API_ACCESS change id for this package.
25874 25910 I OpenXR : IsPrivileged 0
25874 25910 I OpenXR : Is_X_PartnerGateKeeper
25874 25910 I OpenXR : PGK Status: exp = 0, hor = false, dc = false
25874 25910 I OpenXR : Extension status: P
25874 25910 I OpenXR : IsFirstParty 0
25874 25910 I DeviceProperties: ovrDeviceProperties::Initialize
25874 25910 I DeviceProperties: Device Region: 'US'
25874 25910 I DeviceProperties: GPU Type: 'ADRENO_650'
25874 25910 I DeviceProperties: Num Refresh Rates Supported 61
25874 25910 I DeviceProperties: Refresh Rate (0): 120.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (1): 119.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (2): 118.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (3): 117.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (4): 116.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (5): 115.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (6): 114.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (7): 113.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (8): 112.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (9): 111.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (10): 110.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (11): 109.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (12): 108.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (13): 107.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (14): 106.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (15): 105.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (16): 104.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (17): 103.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (18): 102.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (19): 101.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (20): 100.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (21): 99.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (22): 98.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (23): 97.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (24): 96.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (25): 95.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (26): 94.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (27): 93.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (28): 92.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (29): 91.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (30): 90.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (31): 89.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (32): 88.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (33): 87.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (34): 86.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (35): 85.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (36): 84.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (37): 83.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (38): 82.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (39): 81.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (40): 80.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (41): 79.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (42): 78.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (43): 77.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (44): 76.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (45): 75.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (46): 74.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (47): 73.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (48): 72.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (49): 71.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (50): 70.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (51): 69.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (52): 68.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (53): 67.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (54): 66.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (55): 65.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (56): 64.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (57): 63.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (58): 62.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (59): 61.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (60): 60.000000Hz
25874 25910 I DeviceProperties: DisplayParms.ScanoutDirection = 1
25874 25910 I DeviceProperties: DisplayParms.ShutterType = 1
25874 25874 W Thread-2: type=1400 audit(0.0:286): avc: denied { read } for name="u:object_r:vendor_board_init_prop:s0" dev="tmpfs" ino=12449 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:vendor_board_init_prop:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
25874 25910 I DeviceProperties: getDisplayDimensions returned: 3664, 1920
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_POSITIONAL_TRACKING_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_PASSTHROUGH_CAMERA_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_DYNAMIC_DISPLAY_REFRESH_RATE_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_MEMORY_EXPORT_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_FIXED_FOVEATED_RENDERING_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_SUBSAMPLED_LAYOUT_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_KEYBOARD_TRACKING_BIT
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_body_tracking` due to: missing uses-feature string `com.oculus.software.body_tracking` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_keyboard_tracking` due to: missing uses-feature string `oculus.software.trackedkeyboard` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_spatial_entity` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX2_spatial_entity` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_triangle_mesh` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_passthrough` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_passthrough_color_lut` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_META_passthrough_color_lut` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
25874 25910 I OpenXR : PassesGKKillswitch 1
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_render_model` due to: missing uses-feature string `com.oculus.feature.RENDER_MODEL` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_spatial_entity_query` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX2_spatial_entity_query` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_query` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_touch_controller_extras` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_spatial_entity_storage` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX2_spatial_entity_storage` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_storage` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_storage_batch` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_sharing` due to: missing uses-permission string `com.oculus.permission.IMPORT_EXPORT_IOT_MAP_DATA` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_spatial_entity_container` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_scene` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_scene_capture` due to: missing uses-permission string `com.oculus.permission.USE_ANCHOR_API` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_META_spatial_entity_mesh` due to: missing uses-permission string `com.oculus.permission.USE_SCENE` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_face_tracking` due to: missing uses-feature string `oculus.software.face_tracking` from AndroidManifest
25874 25910 I OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension 'XR_META_local_dimming' as device requirements requirements (16) are not met.
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_META_foveation_eye_tracked` due to: missing uses-feature string `oculus.software.eye_tracking` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_eye_tracking_social` due to: missing uses-feature string `oculus.software.eye_tracking` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FB_passthrough_keyboard_hands` due to: missing uses-feature string `com.oculus.feature.PASSTHROUGH` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_composition_layer_settings` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_FBX1_composition_layer_depth_test` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_eye_gaze_interaction` due to: missing uses-permission string `com.oculus.permission.EYE_TRACKING` from AndroidManifest
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_hand_joints_motion_range` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXTX1_hand_tracking_data_source` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_performance_metrics` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_virtual_keyboard` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX2_virtual_keyboard` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX2_detached_controllers` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXTX1_event_channel` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_environment_depth` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_active_action_set_priority` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_EXT_palm_pose` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 W OpenXR : xrEnumerateInstanceExtensionProperties: skipping extension=`XR_METAX1_simultaneous_hands_controllers_management` due to: Tier=40 extState=P deviceIsExpEnabled=false expManifestSet=false isFirstPartyApp=false isSystemApp=false
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Completed loader trampoline
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Entering loader trampoline
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateInstanceExtensionProperties | OpenXR-Loader] : Completed loader trampoline
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu available xr exts: ExtensionSet {
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu almalence_digital_lens_control: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu epic_view_configuration_fov: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_performance_settings: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_thermal_query: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_debug_utils: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_eye_gaze_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_view_configuration_depth_range: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_conformance_automation: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_hand_tracking: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_dpad_binding: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_hand_joints_motion_range: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_samsung_odyssey_controller: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_hp_mixed_reality_controller: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_palm_pose: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ext_uuid: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu extx_overlay: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_image_layout: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_alpha_blend: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_android_surface_swapchain_create: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_secure_content: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_display_refresh_rate: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_color_space: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_hand_tracking_mesh: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_hand_tracking_aim: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_hand_tracking_capsules: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_foveation: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_foveation_configuration: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_keyboard_tracking: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_triangle_mesh: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_passthrough: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_render_model: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity_query: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity_storage: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_foveation_vulkan: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state_android_surface: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state_opengl_es: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_swapchain_update_state_vulkan: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_space_warp: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_scene: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_spatial_entity_container: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_passthrough_keyboard_hands: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu fb_composition_layer_settings: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_vive_cosmos_controller_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_facial_tracking: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_vive_focus3_controller_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_hand_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htc_vive_wrist_tracker_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu htcx_vive_tracker_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu huawei_controller_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_android_thread_settings: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_android_surface_swapchain: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_cube: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_android_create_instance: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_depth: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_vulkan_swapchain_format_list: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_cylinder: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_equirect: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_opengl_enable: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_opengl_es_enable: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_vulkan_enable: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_visibility_mask: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_color_scale_bias: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_convert_timespec_time: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_loader_init: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_loader_init_android: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_vulkan_enable2: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_composition_layer_equirect2: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_binding_modification: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu khr_swapchain_usage_input_attachment_bit: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu meta_vulkan_swapchain_create_info: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu meta_performance_metrics: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ml_ml2_controller_interaction: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu mnd_headless: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu mnd_swapchain_usage_input_attachment_bit: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu mndx_egl_enable: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_unbounded_reference_space: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_spatial_anchor: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_spatial_graph_bridge: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_hand_interaction: true,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_hand_tracking_mesh: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_secondary_view_configuration: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_first_person_observer: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_controller_model: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_composition_layer_reprojection: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu msft_spatial_anchor_persistence: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu oculus_android_session_state_enable: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu oculus_audio_device_guid: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ultraleap_hand_tracking_forearm: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu valve_analog_threshold: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_quad_views: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_foveated_rendering: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_composition_layer_depth_test: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_environment_depth_estimation: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_marker_tracking: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu varjo_view_offset: false,
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu other: [
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_OCULUS_common_reference_spaces\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_common_events\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_passthrough_preferences\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_touch_controller_proximity\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_touch_controller_pro\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_touch_controller_plus\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_haptic_amplitude_envelope\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_haptic_pcm\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_spatial_entity_user\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_feature_fidelity\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_FB_composition_layer_depth_test\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_virtual_keyboard\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_headset_id\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_recommended_layer_resolution\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "XR_META_automatic_layer_filter\0",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu ],
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu}
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateApiLayerProperties | OpenXR-Loader] : Entering loader trampoline
25874 25910 V OpenXR-Loader: Verbose [GENERAL | FindLayerLibraries | OpenXR-Loader] : searching for layers in /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrEnumerateApiLayerProperties | OpenXR-Loader] : Entering loader trampoline
25874 25910 V OpenXR-Loader: Verbose [GENERAL | FindLayerLibraries | OpenXR-Loader] : searching for layers in /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu available xr layers: []
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Entering loader trampoline
25874 25910 V OpenXR-Loader: Verbose [GENERAL | FindLayerLibraries | OpenXR-Loader] : searching for layers in /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Entering LoaderInstance::CreateInstance
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Entering loader terminator
25874 25910 I OpenXR : ----------- xrCreateInstance [start] ----------
25874 25910 I OpenXR : xrCreateInstance: Extension XR_KHR_android_create_instance enabled.
25874 25910 I OpenXR : xrCreateInstance: Extension XR_KHR_vulkan_enable2 enabled.
25874 25910 I VersionGater: App OpenXR version is 1.0.25
25874 25910 I VersionGater: Version gate state: 1111 1000 0
25874 25910 W VrRuntimeClient: InitDeviceConfig called before service connection! GKs checked before service connection will return defaults!
25874 25910 I TREX : Initializing TREX for client c56f4dcb3ab1079f...
25874 25910 I TREX : Initializing system...
25874 25910 I XrRuntimeSystem_Client: BodyPoweredHands checkSysPropForBodyAPIOverride 0
25874 25910 I TREX : Created plugin package context for com.oculus.systemdriver
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (HapticsServer)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (HapticsServer)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (HapticsServer)
25874 25910 I TREX : Loading plugin com.oculus.wearableinputservice:libtrex_wristband_client_plugin.so
25874 25910 I TREX : package 'com.oculus.wearableinputservice' not found, skipping
25874 25910 I TREX : Plugin 'com.oculus.wearableinputservice:libtrex_wristband_client_plugin.so' not loaded.
25874 25910 I PerformanceManagerInterface_Impl: perfmgr: Skipping initial server state initialization, will initialize next time around
25874 25910 E TREX : Interface version 3 was not found. Check debug build for more information.
25874 25910 I DeviceProperties: ovrDeviceProperties::Initialize
25874 25910 I DeviceProperties: Device Region: 'US'
25874 25910 I DeviceProperties: GPU Type: 'ADRENO_650'
25874 25910 I DeviceProperties: Num Refresh Rates Supported 61
25874 25910 I DeviceProperties: Refresh Rate (0): 120.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (1): 119.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (2): 118.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (3): 117.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (4): 116.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (5): 115.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (6): 114.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (7): 113.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (8): 112.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (9): 111.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (10): 110.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (11): 109.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (12): 108.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (13): 107.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (14): 106.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (15): 105.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (16): 104.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (17): 103.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (18): 102.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (19): 101.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (20): 100.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (21): 99.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (22): 98.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (23): 97.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (24): 96.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (25): 95.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (26): 94.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (27): 93.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (28): 92.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (29): 91.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (30): 90.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (31): 89.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (32): 88.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (33): 87.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (34): 86.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (35): 85.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (36): 84.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (37): 83.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (38): 82.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (39): 81.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (40): 80.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (41): 79.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (42): 78.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (43): 77.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (44): 76.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (45): 75.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (46): 74.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (47): 73.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (48): 72.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (49): 71.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (50): 70.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (51): 69.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (52): 68.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (53): 67.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (54): 66.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (55): 65.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (56): 64.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (57): 63.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (58): 62.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (59): 61.000000Hz
25874 25910 I DeviceProperties: Refresh Rate (60): 60.000000Hz
25874 25910 I DeviceProperties: DisplayParms.ScanoutDirection = 1
25874 25910 I DeviceProperties: DisplayParms.ShutterType = 1
25874 25874 W Thread-2: type=1400 audit(0.0:287): avc: denied { read } for name="u:object_r:vendor_board_init_prop:s0" dev="tmpfs" ino=12449 scontext=u:r:untrusted_app:s0:c60,c256,c512,c768 tcontext=u:object_r:vendor_board_init_prop:s0 tclass=file permissive=0 app=org.bevyengine.demo_openxr_android
25874 25910 W libc : Access denied finding property "ro.vendor.product.model_extended"
25874 25910 I DeviceProperties: getDisplayDimensions returned: 3664, 1920
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_POSITIONAL_TRACKING_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_PASSTHROUGH_CAMERA_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_DYNAMIC_DISPLAY_REFRESH_RATE_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_MEMORY_EXPORT_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_FIXED_FOVEATED_RENDERING_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_SUBSAMPLED_LAYOUT_BIT
25874 25910 I DeviceProperties: ovrDeviceProperties: OVR_DEVICE_CAPABILITY_KEYBOARD_TRACKING_BIT
25874 25910 I VrRuntimeClient: DevicesSupported : 3 devices, quest|quest2|quest3
25874 25910 I Distortion: Initializing Mesh Decenter Correction
25874 25910 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
25874 25910 I Distortion: Initializing Mesh Decenter Correction
25874 25910 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
25874 25910 I OpenXR : ----------- xrCreateInstance [end] ----------
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Completed loader terminator
25874 25910 I OpenXR-Loader: Info [GENERAL | xrCreateInstance | OpenXR-Loader] : LoaderInstance::CreateInstance succeeded with 0 layers enabled and runtime interface - created instance = 0x0100000000000001
25874 25910 V OpenXR-Loader: Verbose [GENERAL | xrCreateInstance | OpenXR-Loader] : Completed loader trampoline
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu created instance
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu created system
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu loaded OpenXR runtime: Oculus 57.295.0 Oculus Quest2
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu creating vulkan instance with these extensions: [
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_KHR_surface",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_KHR_android_surface",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_EXT_swapchain_colorspace",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu "VK_KHR_get_physical_device_properties2",
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu]
25874 25910 I AdrenoVK-0: ===== BEGIN DUMP OF OVERRIDDEN SETTINGS =====
25874 25910 I AdrenoVK-0: ===== END DUMP OF OVERRIDDEN SETTINGS =====
25874 25910 I AdrenoVK-0: QUALCOMM build : fa5d856e9e, I160a5475da
25874 25910 I AdrenoVK-0: Build Date : 07/24/23
25874 25910 I AdrenoVK-0: Shader Compiler Version : E031.42.07.00
25874 25910 I AdrenoVK-0: Local Branch :
25874 25910 I AdrenoVK-0: Remote Branch :
25874 25910 I AdrenoVK-0: Remote Branch :
25874 25910 I AdrenoVK-0: Reconstruct Branch :
25874 25910 I AdrenoVK-0: Build Config : S P 10.0.7 AArch64
25874 25910 I AdrenoVK-0: Driver Path : /vendor/lib64/hw/vulkan.adreno.so
25874 25910 I AdrenoVK-0: Driver Version : 0728.0
25874 25910 I AdrenoVK-0: PFP : 0x016dd112
25874 25910 I AdrenoVK-0: ME : 0x00000000
25874 25910 I AdrenoVK-0: Application Name : Ambient
25874 25910 I AdrenoVK-0: Application Version : 0x00000001
25874 25910 I AdrenoVK-0: Engine Name : Ambient
25874 25910 I AdrenoVK-0: Engine Version : 0x00000001
25874 25910 I AdrenoVK-0: Api Version : 0x00401000
25874 25910 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/graphics/vu created vulkan instance
25874 25910 I VulkanLoader: ovrVulkanLoader::Load
25874 25910 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkCreateDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
25874 25910 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkDestroyDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
25874 25910 W VulkanLoader: ovrVulkanLoader::LoadDeviceFunctions: device invalid
25874 25910 W VulkanLoader: ovrVulkanLoader::LoadExtensionList: physicalDevice invalid
25874 25910 I Vulkan_Utils: --------------------------------
25874 25910 I Vulkan_Utils: Device Name : Adreno (TM) 650
25874 25910 I Vulkan_Utils: Device Type : integrated GPU
25874 25910 I Vulkan_Utils: Vendor ID : 0x5143
25874 25910 I Vulkan_Utils: Device ID : 0x6050002
25874 25910 I Vulkan_Utils: Driver Version : 512.728.0
25874 25910 I Vulkan_Utils: API Version : 1.1.128
25874 25910 I Vulkan_Utils: Queue Families : 0 = graphics compute (3 queues, 3 priorities)
25874 25910 I Vulkan_Utils: Work Queue Family : 0
25874 25910 I Vulkan_Utils: Device Extensions : VK_KHR_swapchain (required, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_external_memory (required, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_get_memory_requirements2 (required, enabled)
25874 25910 I Vulkan_Utils: Device Extensions VK_EXT_fragment_density_map (optional, enabled)
25874 25910 I Vulkan_Utils: VK_EXT_fragment_density_map2 (optional, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_maintenance1 (optional, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_bind_memory2 (optional, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_sampler_ycbcr_conversion (optional, enabled)
25874 25910 I Vulkan_Utils: VK_EXT_queue_family_foreign (optional, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_dedicated_allocation (optional, enabled)
25874 25910 I Vulkan_Utils: VK_KHR_external_memory_fd (optional, enabled)
25874 25910 I Vulkan_Utils: VK_ANDROID_external_memory_android_hardware_buffer (optional, enabled)
25874 25910 I OpenXR : ------------ xrCreateSession [start] -----------
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
25874 25910 I VrRuntimeClient: g_RuntimeServiceSDKClient.Connected: com.oculus.systemdriver:com.oculus.vrruntimeservice
25874 25910 I VrRuntimeClient: RuntimeIPC: ServiceConnected: SharedMemoryDebug: publicReadOnly SharedMemorySize=8744 () sizeof(sharedMemoryPublicReadOnly)=8768
25874 25910 I VrRuntimeClient: RuntimeIPC: ServiceConnected: SharedMemoryDebug: privateReadWrite SharedMemorySize=40352 () sizeof(privateSharedMemorySize)=8
25874 25910 I VrRuntimeClient: nativeRuntimeServiceConnected: SharedMemoryDebug: publicReadOnlyFd=95, privateReadWriteFd=96 ()
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
25874 25910 I VrRuntimeClient: g_RuntimeServiceSDKClient.InitClient SUCCESS. Version: 5.0, Custom: 1.0
25874 25910 I RuntimeIPCClientMgr [RUNTIMEIPC]: GetClientOptions
25874 25910 I OpenXR : xrCreateSession: Connected to VrRuntimeService after 0.038652s
25874 25910 I AdrenoGLES-0: QUALCOMM build : fa5d856e9e, I160a5475da
25874 25910 I AdrenoGLES-0: Build Date : 07/24/23
25874 25910 I AdrenoGLES-0: OpenGL ES Shader Compiler Version: E031.42.07.00
25874 25910 I AdrenoGLES-0: Local Branch :
25874 25910 I AdrenoGLES-0: Remote Branch :
25874 25910 I AdrenoGLES-0: Remote Branch :
25874 25910 I AdrenoGLES-0: Reconstruct Branch :
25874 25910 I AdrenoGLES-0: Build Config : S P 10.0.7 AArch64
25874 25910 I AdrenoGLES-0: Driver Path : /vendor/lib64/egl/libGLESv2_adreno.so
25874 25910 I AdrenoGLES-0: Driver Version : 0728.0
25874 25910 I AdrenoGLES-0: Process Name : org.bevyengine.demo_openxr_android
25874 25910 I AdrenoGLES-0: PFP: 0x016dd112, ME: 0x00000000
25874 25910 I VrRuntimeClient: SetPhaseSyncMode 1
25874 25910 I VrRuntimeClient: SetPhaseSyncMode 1
25874 25910 I OpenXR : PhaseSync Mode: 1
25874 25910 I VrRuntimeClient: VrRuntimeClient: Init
25874 25910 I PTKService: PTKServiceClient Init
25874 25910 I ClientProcessConnector [RUNTIMEIPC]: GetProcessConnection: com.oculus.vrshell:com.oculus.vrshell:Overlay
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: InitServerStateBuffer: SUCCESS. 0, Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.vrshell:com.oculus.vrshell:Overlay (ptkserviceserver)
25874 25910 V OVR::Capture: Failed to open trace_marker ATrace file!
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: InitServerStateBuffer: SUCCESS. 0, Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.systemdriver:com.oculus.vrruntimeservice (RuntimeServiceServer)
25874 25910 I VrRuntimeClient: OSSDKTRACKING calculating secure tracking
25874 25910 I VrRuntimeClient: OSSDKTRACKING secure tracking is 0
25874 25910 I AudioCapture: AudioCapture::Init
25874 25910 I AudioCapture: AudioCapture::Init -> Initializing audio capture using direct OS Callbacks
25874 25910 I AudioCapture: AudioCapture::Init COMPLETE
25874 25910 I Foveation: Vulkan foveation tile offset enabled: 0
25874 25910 I Foveation: Vulkan foveation tile turn off enabled: 1
25874 25910 I ClientProcessConnector [RUNTIMEIPC]: GetProcessConnection: com.oculus.guardian:com.oculus.vrguardianservice
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: Event buffer size (client): 8192
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: TryToGetIPCResourcesFromServer: RPC_CONNECTOR_CONNECT_TO_SERVER SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.guardian:com.oculus.vrguardianservice (guardianserver)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: EnsureServerConnection: SUCCESS. Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.guardian:com.oculus.vrguardianservice (guardianserver)
25874 25910 I RuntimeIPCClient [RUNTIMEIPC]: ConnectToServer: SUCCESS: Client: org.bevyengine.demo_openxr_android:org.bevyengine.demo_openxr_android:25874, Server: com.oculus.guardian:com.oculus.vrguardianservice (guardianserver)
25874 25910 I VrGuardianClient: g_GuardianSDKClient connected.
25874 25910 I VrRuntimeClient: Is120HzSupported: 1
25874 25910 I FaceEyeTrackingManagerHelpers: [FaceEyeTrackingManager] Audio FT GK: 0
25874 25910 I LogTimer: CPUTIME: VrRuntimeClient_Init took 170.6461 ms
25874 25910 I VulkanLoader: ovrVulkanLoader::Load
25874 25910 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkCreateDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
25874 25910 W VulkanLoader: VulkanLoader::LoadInstanceFunctions: Failed to load vkDestroyDebugReportCallbackEXT, likely vkInstance created without xrGetVulkanInstanceExtensionsKHR/vrapi_GetInstanceExtensionsVulkan
25874 25910 W VulkanLoader: VulkanLoader::LoadDeviceFunctions: Failed to load vkCmdDebugMarkerInsertEXT, likely vkDevice created without xrGetVulkanDeviceExtensionsKHR/vrapi_GetDeviceExtensionsVulkan
25874 25910 W VulkanLoader: VulkanLoader::LoadDeviceFunctions: Failed to load vkDebugMarkerSetObjectTagEXT, likely vkDevice created without xrGetVulkanDeviceExtensionsKHR/vrapi_GetDeviceExtensionsVulkan
25874 25910 W VulkanLoader: VulkanLoader::LoadDeviceFunctions: Failed to load vkGetMemoryFdKHR, likely vkDevice created without xrGetVulkanDeviceExtensionsKHR/vrapi_GetDeviceExtensionsVulkan
25874 25910 I Foveation: Vulkan FFR is supported, with density map size 32x32
25874 25910 I Distortion: Initializing Mesh Decenter Correction
25874 25910 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
25874 25910 I Distortion: Initializing Mesh Decenter Correction
25874 25910 I Distortion: SetLensPositions - iad=0.06485, left offset=0.000465658,-0.00151258, right offset=-0.000983495,-0.00165948
25874 25910 I GkHelper: Checking gk 'oculus_miramar_colorspace_p3', default = false
25874 25910 I Colorspace: Miramar default OpenXR colorspace via GK: <default>
25874 25910 I ClientInputSettings: SYSTEMBUTTONSPACE GKS freeze '1'
25874 25910 I ClientInputSettings: SYSTEMBUTTONSPACE 'org.bevyengine.demo_openxr_android' Freeze input '1' on home button down
25874 25910 I ClientInputSettings: HANDTRACKING: Hands V2.0 enforced.
25874 25910 I ClientInputSettings: HANDTRACKING: YES, in the GK oculus_mobile_enable_hand_tracking_frequency_inter
25874 25910 I ClientInputInterface: HANDTRACKING sethandtrackingfrequency 1
25874 25910 I ClientInputSettings: HANDTRACKING: YES, in the GK oculus_mobile_30hz_handtracking_downclocking
25874 25910 I ClientInputInterface: Set30HzHandtrackingDownclockingGKFlag 1
25874 25910 I ClientInputSettings: HANDTRACKING: NO, not in the GK oculus_mobile_enable_hand_emulation_of_controllers
25874 25910 I ClientInputInterface: HANDTRACKING SetHandTrackingControllerEmulationGkFlag 0
25874 25910 I InputHooks: InitializeInputHooks
25874 25910 I InputHooks: InitializeInputHooks create
25874 25910 I OpenXR : Disable output struct type validation on org.bevyengine.demo_openxr_android.
25874 25910 I OpenXR : Disable GetFaceExpressionWeights return code fix on org.bevyengine.demo_openxr_android.
25874 25910 I OpenXR : Disable HandJointPalmFix on org.bevyengine.demo_openxr_android.
25874 25910 I OpenXR : xrCreateSession: Activity is not yet in the ready state.
25874 25910 I XrRuntimeUtils: XrRuntimeUtils::CreateSession
25874 25910 I OpenXR : ------------ xrCreateSession [end] -----------
25874 25910 I SwapChain_Vulkan_Memory_Export: Imported texture has requirements 3, ends up index 0
25874 25910 I SwapChain_Vulkan_Memory_Export: Imported texture has requirements 3, ends up index 0
25874 25910 I SwapChain_Vulkan_Memory_Export: Imported texture has requirements 3, ends up index 0
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: Spaces info
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: Local version=50
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: RawFromLocal = (0.000, 0.471, 0.000, 0.882), (0.05, -0.10, -0.17)
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: RawFromLocalTilted = (-0.051, 0.473, 0.089, 0.875), (0.05, -0.10, -0.17)
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: Stage IsValid=true
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: Stage HasActiveGuardian=true
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: Stage Width=4.762031, Depth=4.001124
25874 25910 I OpenXR_Space: xrCreateReferenceSpace: RawFromStage = (0.000, 0.665, 0.000, 0.747), (0.12, -0.77, 1.23)
25874 25910 I OboeAudio: openStream() OUTPUT -------- OboeVersion1.7.0 --------
25874 25910 I AAudio : AAudioStreamBuilder_openStream() called ----------------------------------------
25874 25910 I AudioStreamBuilder: rate = 44100, channels = 2, channelMask = 0x80000003, format = 5, sharing = SH, dir = OUTPUT
25874 25910 I AudioStreamBuilder: device = 0, sessionId = -1, perfMode = 10, callback: ON with frames = 0
25874 25910 I AudioStreamBuilder: usage = 1, contentType = 2, inputPreset = 6, allowedCapturePolicy = 0
25874 25910 I AudioStreamBuilder: privacy sensitive = false
25874 25910 I AudioStreamBuilder: opPackageName = (null)
25874 25910 I AudioStreamBuilder: attributionTag = (null)
25874 25910 D AudioStreamBuilder: build() [meta] disable aaudio mmap via gk
25874 25910 D AudioStreamBuilder: build() MMAP not used because AAUDIO_PERFORMANCE_MODE_LOW_LATENCY not requested.
25874 25910 D _openxr_androi: PlayerBase::PlayerBase()
25874 25910 D AudioStreamTrack: open(), request notificationFrames = 0, frameCount = 0
25874 25910 D AAudioStream: setState(s#1) from 0 to 2
25874 25910 I AAudio : AAudioStreamBuilder_openStream() returns 0 = AAUDIO_OK for s#1 ----------------
25874 25910 D AAudio : AAudioStream_requestStart(s#1) called --------------
25874 25910 D AAudioStream: setState(s#1) from 2 to 3
25874 25891 D AudioStreamLegacy: onAudioDeviceUpdate(deviceId = 2)
25874 25910 D AAudio : AAudioStream_requestStart(s#1) returned 0 ---------
25874 25910 E event /home/schmarni/.cargo/git/checkouts/bevy-f7ffde730c324c74/d67fbd5/crates/bevy_gilrs/src/ Failed to start Gilrs. Gilrs does not support current platform.
25874 25937 D AAudioStream: setState(s#1) from 3 to 4
25874 25910 W event /home/schmarni/.cargo/git/checkouts/bevy-f7ffde730c324c74/d67fbd5/crates/bevy_pbr/src/ss ScreenSpaceAmbientOcclusionPlugin not loaded. GPU lacks support: Limits::max_storage_textures_per_shader_stage is less than 5.
25874 25913 I OpenXR_Actions: -- xrSuggestInteractionProfileBindings -
25874 25914 I event /home/schmarni/.cargo/git/checkouts/bevy-f7ffde730c324c74/d67fbd5/crates/bevy_diagnostic SystemInfo { os: "Android 12 Quest 2", kernel: "4.19.157+", cpu: "", core_count: "8", memory: "5.7 GiB" }
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=19, action=hand_pose, subactionMask=1, pathActionType=4
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=35, action=hand_pose, subactionMask=2, pathActionType=4
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=18, action=pointer_pose, subactionMask=1, pathActionType=4
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=9, action=squeeze, subactionMask=1, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=25, action=squeeze, subactionMask=2, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=26, action=trigger, subactionMask=2, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=10, action=trigger, subactionMask=1, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=27, action=trigger_touched, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=11, action=trigger_touched, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=33, action=haptic_feedback, subactionMask=2, pathActionType=100
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=17, action=haptic_feedback, subactionMask=1, pathActionType=100
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=4, action=x_button, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=5, action=x_button_touch, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=6, action=y_button, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=7, action=y_button_touch, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=8, action=menu_button, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=20, action=a_button, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=21, action=a_button_touch, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=22, action=b_button, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=23, action=b_button_touch, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=12, action=thumbstick_x, subactionMask=1, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=28, action=thumbstick_x, subactionMask=2, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=13, action=thumbstick_y, subactionMask=1, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=29, action=thumbstick_y, subactionMask=2, pathActionType=2
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=14, action=thumbstick_click, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=30, action=thumbstick_click, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=15, action=thumbstick_touch, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=31, action=thumbstick_touch, subactionMask=2, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=16, action=thumbrest_touch, subactionMask=1, pathActionType=1
25874 25913 I OpenXR_Actions: xrSuggestInteractionProfileBindings: adding binding actionPathBinding=32, action=thumbrest_touch, subactionMask=2, pathActionType=1
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25914 I JniUtils-inl: Creating temporary JNIEnv. This is a heavy operation and should be infrequent. To optimize, use JNI AttachCurrentThread on calling thread
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25913 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/xr_input/tr we got a new tracker
25874 25914 I OpenXR : PostSessionStateChange: XR_SESSION_STATE_UNKNOWN -> XR_SESSION_STATE_IDLE
25874 25914 I Deque : AddEventToQueue called. eventInfo.type: 18, eventInfo.next: 1
25874 25914 I event /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/lib.rs:240: entered XR state IDLE
25874 25914 W OpenXR : xrWaitFrame: session is not running.
25874 25909 I RustStdoutStderr: The application panicked (crashed).
25874 25909 I RustStdoutStderr: Message: called `Result::unwrap()` on an `Err` value: ERROR_SESSION_NOT_RUNNING
25874 25909 I RustStdoutStderr: Location: /home/schmarni/.cargo/git/checkouts/bevy_openxr-f302a4e0d5df4607/08d5708/src/lib.rs:264
25874 25909 I RustStdoutStderr:
25874 25909 I RustStdoutStderr: Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
25874 25909 I RustStdoutStderr: Run with RUST_BACKTRACE=full to include source snippets.
25874 25909 I RustStdoutStderr: Warning: SpanTrace capture is Unsupported.
25874 25909 I RustStdoutStderr: Ensure that you've setup a tracing-error ErrorLayer and the semver versions are compatible
--------- beginning of crash
25874 25914 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 25914 (Compute Task Po), pid 25874 (_openxr_android)
25943 25943 I crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
25943 25943 I crash_dump64: performing dump of process 25874 (target tid = 25914)
25943 25943 I DEBUG : Current uptime at crash: 158996 seconds
25943 25943 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
25943 25943 F DEBUG : Build fingerprint: 'oculus/hollywood/hollywood:12/SQ3A.220605.009.A1/50623410078100150:user/release-keys'
25943 25943 F DEBUG : Revision: '0'
25943 25943 F DEBUG : ABI: 'arm64'
25943 25943 F DEBUG : Timestamp: 2023-10-31 22:19:08.803705529+0100
25943 25943 F DEBUG : Process uptime: 1s
25943 25943 F DEBUG : Cmdline: org.bevyengine.demo_openxr_android
25943 25943 F DEBUG : pid: 25874, tid: 25914, name: Compute Task Po >>> org.bevyengine.demo_openxr_android <<<
25943 25943 F DEBUG : uid: 10060
25943 25943 F DEBUG : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
25943 25943 F DEBUG : Abort message: 'called `Result::unwrap()` on an `Err` value: ERROR_SESSION_NOT_RUNNING'
25943 25943 F DEBUG : x0 0000000000000000 x1 000000000000653a x2 0000000000000006 x3 0000007827629b40
25943 25943 F DEBUG : x4 0000000000008000 x5 0000000000008000 x6 0000000000008000 x7 0000000000000000
25943 25943 F DEBUG : x8 00000000000000f0 x9 00000079424da5d8 x10 0000000000000000 x11 ffffff80fffffbdf
25943 25943 F DEBUG : x12 0000000000000001 x13 525f544f4e5f4e4f x14 00000000000000c8 x15 0000000000000038
25943 25943 F DEBUG : x16 00000079425a1dc0 x17 000000794257fb60 x18 0000007826e0a000 x19 0000000000006512
25943 25943 F DEBUG : x20 000000000000653a x21 00000000ffffffff x22 000000782f82fae0 x23 0000007827629e00
25943 25943 F DEBUG : x24 000000782e32c948 x25 000000782f97b198 x26 000000782f97b1b8 x27 000000782762b060
25943 25943 F DEBUG : x28 000000782762b060 x29 0000007827629bc0
25943 25943 F DEBUG : lr 000000794253bc5c sp 0000007827629b20 pc 000000794253bc8c pst 0000000000001000
25943 25943 F DEBUG : backtrace:
25943 25943 F DEBUG : #00 pc 0000000000089c8c /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) (BuildId: 9bab48b8427561f041dc114e49bfd38b)
25943 25943 F DEBUG : #01 pc 0000000001993834 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (panic_abort::__rust_start_panic::abort::hf9486a0d1cc2ac08+4) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #02 pc 0000000001993828 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (__rust_start_panic+8) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #03 pc 0000000001985d7c /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (rust_panic+8) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #04 pc 0000000001985be4 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (std::panicking::rust_panic_with_hook::h9c80bfe4d552cb32+660) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #05 pc 0000000001985930 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (std::panicking::begin_panic_handler::_$u7b$$u7b$closure$u7d$$u7d$::haece24ab2b06546c+196) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #06 pc 0000000001984310 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (std::sys_common::backtrace::__rust_end_short_backtrace::h5255d8dea90e7932+4) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #07 pc 0000000001985680 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (rust_begin_unwind+108) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #08 pc 00000000019a5a28 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (core::panicking::panic_fmt::h61a82d7f25335953+44) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #09 pc 00000000019a5d48 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (core::result::unwrap_failed::h0973c0cfe8c3b00d+88) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #10 pc 00000000009e8b80 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (bevy_openxr::xr_begin_frame::h9b87c0166e3ef0c3+3752) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #11 pc 000000000095c8b8 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (_$LT$bevy_ecs..system..function_system..FunctionSystem$LT$Marker$C$F$GT$$u20$as$u20$bevy_ecs..system..system..System$GT$::run_unsafe::h0bd8a8c7266ad61d+704) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #12 pc 00000000018b9120 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (async_executor::Executor::spawn::_$u7b$$u7b$closure$u7d$$u7d$::ha8e73461e94dfc87+116) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #13 pc 00000000018b3580 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (async_task::raw::RawTask$LT$F$C$T$C$S$C$M$GT$::run::h04fb1857844bc080+292) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #14 pc 00000000018e7b10 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (async_executor::Executor::run::_$u7b$$u7b$closure$u7d$$u7d$::h9aa771d4ba968762+4316) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #15 pc 00000000018e8344 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (std::sys_common::backtrace::__rust_begin_short_backtrace::hdd78ac8ab492c8b7+560) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #16 pc 00000000018e887c /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h2eff1674ecfe0bf8+128) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #17 pc 0000000001988260 /data/app/~~HX0xG_Hcezzhp_rQ8DLibQ==/org.bevyengine.demo_openxr_android-9DYAk0Wd15ZqQ9imRrrOHA==/lib/arm64/libdemo.so (std::sys::unix::thread::Thread::new::thread_start::hf5b87d2f06226386+24) (BuildId: 5c943a49e7770f56)
25943 25943 F DEBUG : #18 pc 00000000000df1d8 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+132) (BuildId: 9bab48b8427561f041dc114e49bfd38b)
25943 25943 F DEBUG : #19 pc 000000000008b2ec /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 9bab48b8427561f041dc114e49bfd38b)

View File

@@ -5,10 +5,11 @@ use bevy::{
ecs::schedule::ScheduleLabel, ecs::schedule::ScheduleLabel,
log::info, log::info,
prelude::{ prelude::{
default, shape, App, Assets, Color, Commands, Component, Entity, Event, EventReader, bevy_main, default, shape, App, Assets, Color, Commands, Component, Entity, Event,
EventWriter, FixedUpdate, Gizmos, GlobalTransform, IntoSystemConfigs, IntoSystemSetConfigs, EventReader, EventWriter, FixedUpdate, Gizmos, GlobalTransform, IntoSystemConfigs,
Mesh, PbrBundle, PostUpdate, Quat, Query, Res, ResMut, Resource, Schedule, SpatialBundle, IntoSystemSetConfigs, Mesh, PbrBundle, PostUpdate, Quat, Query, Res, ResMut, Resource,
StandardMaterial, Startup, Transform, Update, Vec3, Vec3Swizzles, With, Without, World, bevy_main, Schedule, SpatialBundle, StandardMaterial, Startup, Transform, Update, Vec3, Vec3Swizzles,
With, Without, World,
}, },
time::{Fixed, Time, Timer}, time::{Fixed, Time, Timer},
transform::TransformSystem, transform::TransformSystem,
@@ -284,10 +285,8 @@ fn spawn_physics_hands(mut commands: Commands) {
let right_hand_membership_group = Group::GROUP_2; let right_hand_membership_group = Group::GROUP_2;
let floor_membership = Group::GROUP_3; let floor_membership = Group::GROUP_3;
for hand in hands.iter() { for hand in hands.iter() {
let hand_membership = match hand let hand_membership = match hand {
{
Hand::Left => left_hand_membership_group, Hand::Left => left_hand_membership_group,
Hand::Right => right_hand_membership_group, Hand::Right => right_hand_membership_group,
}; };
@@ -518,13 +517,14 @@ fn request_cube_spawn(
mut writer: EventWriter<SpawnCubeRequest>, mut writer: EventWriter<SpawnCubeRequest>,
time: Res<Time>, time: Res<Time>,
mut timer: ResMut<SpawnCubeTimer>, mut timer: ResMut<SpawnCubeTimer>,
action_sets: Res<XrActionSets>,
) { ) {
timer.0.tick(time.delta()); timer.0.tick(time.delta());
if timer.0.finished() { if timer.0.finished() {
//lock frame //lock frame
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); let controller = oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
//get controller triggers //get controller triggers
let left_main_button = controller.a_button(); let left_main_button = controller.a_button();
if left_main_button { if left_main_button {
@@ -570,7 +570,6 @@ fn prototype_interaction_input(
oculus_controller: Res<OculusController>, oculus_controller: Res<OculusController>,
frame_state: Res<XrFrameState>, frame_state: Res<XrFrameState>,
xr_input: Res<XrInput>, xr_input: Res<XrInput>,
instance: Res<XrInstance>,
session: Res<XrSession>, session: Res<XrSession>,
mut right_interactor_query: Query< mut right_interactor_query: Query<
(&mut XRInteractorState), (&mut XRInteractorState),
@@ -588,11 +587,12 @@ fn prototype_interaction_input(
Without<OpenXRRightController>, Without<OpenXRRightController>,
), ),
>, >,
action_sets: Res<XrActionSets>,
) { ) {
//lock frame //lock frame
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); let controller = oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
//get controller triggers //get controller triggers
let left_trigger = controller.trigger(Hand::Left); let left_trigger = controller.trigger(Hand::Left);
let right_trigger = controller.trigger(Hand::Right); let right_trigger = controller.trigger(Hand::Right);

View File

@@ -0,0 +1,609 @@
use bevy::{
diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin},
log::info,
prelude::{
*,
bevy_main, default, shape, App, Assets, Color, Commands, Component, Event, EventReader,
EventWriter, GlobalTransform, IntoSystemConfigs, IntoSystemSetConfigs, Mesh, PbrBundle,
PostUpdate, Query, Res, ResMut, Resource, SpatialBundle, StandardMaterial, Startup,
Transform, Update, With, Without,
},
time::{Time, Timer},
transform::TransformSystem,
};
use bevy_openxr::{
input::XrInput,
resources::{XrFrameState, XrInstance, XrSession},
xr_input::{
debug_gizmos::OpenXrDebugRenderer,
hand::{HandBone, HandInputDebugRenderer, HandResource, HandsResource, OpenXrHandInput},
interactions::{
draw_interaction_gizmos, draw_socket_gizmos, interactions, socket_interactions,
update_interactable_states, InteractionEvent, Touched, XRDirectInteractor,
XRInteractable, XRInteractableState, XRInteractorState, XRSelection,
},
oculus_touch::OculusController,
prototype_locomotion::{proto_locomotion, PrototypeLocomotionConfig},
trackers::{OpenXRController, OpenXRLeftController, OpenXRRightController, OpenXRTracker},
Hand,
},
DefaultXrPlugins,
};
mod setup;
use crate::setup::setup_scene;
use bevy_rapier3d::prelude::*;
#[bevy_main]
pub fn main() {
color_eyre::install().unwrap();
info!("Running bevy_openxr demo");
let mut app = App::new();
app
//lets get the usual diagnostic stuff added
.add_plugins(LogDiagnosticsPlugin::default())
.add_plugins(FrameTimeDiagnosticsPlugin)
//lets get the xr defaults added
.add_plugins(DefaultXrPlugins)
//lets add the debug renderer for the controllers
.add_plugins(OpenXrDebugRenderer)
//rapier goes here
.add_plugins(RapierPhysicsPlugin::<NoUserData>::default().with_default_system_setup(false))
.add_plugins(RapierDebugRenderPlugin::default())
//lets setup the starting scene
.add_systems(Startup, setup_scene)
.add_systems(Startup, spawn_controllers_example) //you need to spawn controllers or it crashes TODO:: Fix this
//add locomotion
.add_systems(Update, proto_locomotion)
.insert_resource(PrototypeLocomotionConfig::default())
//lets add the interaction systems
.add_event::<InteractionEvent>()
.add_systems(Update, prototype_interaction_input)
.add_systems(Update, interactions.before(update_interactable_states))
.add_systems(Update, update_interactable_states)
.add_systems(
Update,
socket_interactions.before(update_interactable_states),
)
//add the grabbable system
.add_systems(Update, update_grabbables.after(update_interactable_states))
//draw the interaction gizmos
.add_systems(
Update,
draw_interaction_gizmos.after(update_interactable_states),
)
.add_systems(Update, draw_socket_gizmos.after(update_interactable_states))
//add our cube spawning system
.add_event::<SpawnCubeRequest>()
.insert_resource(SpawnCubeTimer(Timer::from_seconds(
0.25,
bevy::time::TimerMode::Once,
)))
.add_systems(Update, request_cube_spawn)
.add_systems(Update, cube_spawner.after(request_cube_spawn))
//test capsule
.add_systems(Startup, spawn_capsule)
//physics hands
.add_plugins(OpenXrHandInput)
.add_plugins(HandInputDebugRenderer)
.add_systems(Startup, spawn_physics_hands)
.add_systems(Update, update_physics_hands);
//configure rapier sets
app.configure_sets(
PostUpdate,
(
PhysicsSet::SyncBackend,
PhysicsSet::StepSimulation,
PhysicsSet::Writeback,
)
.chain()
.before(TransformSystem::TransformPropagate),
);
//add rapier systems
app.add_systems(
PostUpdate,
(
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::SyncBackend)
.in_set(PhysicsSet::SyncBackend),
(
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::StepSimulation),
// despawn_one_box,
)
.in_set(PhysicsSet::StepSimulation),
RapierPhysicsPlugin::<NoUserData>::get_systems(PhysicsSet::Writeback)
.in_set(PhysicsSet::Writeback),
),
);
app.run();
}
fn spawn_controllers_example(mut commands: Commands) {
//left hand
commands.spawn((
OpenXRLeftController,
OpenXRController,
OpenXRTracker,
SpatialBundle::default(),
XRDirectInteractor,
XRInteractorState::default(),
XRSelection::default(),
));
//right hand
commands.spawn((
OpenXRRightController,
OpenXRController,
OpenXRTracker,
SpatialBundle::default(),
XRDirectInteractor,
XRInteractorState::default(),
XRSelection::default(),
));
}
fn spawn_capsule(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands.spawn((
PbrBundle {
mesh: meshes.add(Mesh::from(shape::Capsule {
radius: 0.033,
depth: 0.115,
..default()
})),
material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
transform: Transform::from_xyz(0.0, 2.0, 0.0),
..default()
},
// Collider::capsule_y(0.0575, 0.034),
Collider::capsule(
Vec3 {
x: 0.0,
y: -0.0575,
z: 0.0,
},
Vec3 {
x: 0.0,
y: 0.0575,
z: 0.0,
},
0.034,
),
RigidBody::Dynamic,
));
}
#[derive(Component, PartialEq, Debug, Clone, Copy)]
pub enum PhysicsHandBone {
Palm,
Wrist,
ThumbMetacarpal,
ThumbProximal,
ThumbDistal,
ThumbTip,
IndexMetacarpal,
IndexProximal,
IndexIntermediate,
IndexDistal,
IndexTip,
MiddleMetacarpal,
MiddleProximal,
MiddleIntermediate,
MiddleDistal,
MiddleTip,
RingMetacarpal,
RingProximal,
RingIntermediate,
RingDistal,
RingTip,
LittleMetacarpal,
LittleProximal,
LittleIntermediate,
LittleDistal,
LittleTip,
}
#[derive(Component, PartialEq)]
pub enum BoneInitState {
True,
False,
}
fn spawn_physics_hands(mut commands: Commands) {
//here we go
let hands = [Hand::Left, Hand::Right];
let bones = [
PhysicsHandBone::Palm,
PhysicsHandBone::Wrist,
PhysicsHandBone::ThumbMetacarpal,
PhysicsHandBone::ThumbProximal,
PhysicsHandBone::ThumbDistal,
PhysicsHandBone::ThumbTip,
PhysicsHandBone::IndexMetacarpal,
PhysicsHandBone::IndexProximal,
PhysicsHandBone::IndexIntermediate,
PhysicsHandBone::IndexDistal,
PhysicsHandBone::IndexTip,
PhysicsHandBone::MiddleMetacarpal,
PhysicsHandBone::MiddleProximal,
PhysicsHandBone::MiddleIntermediate,
PhysicsHandBone::MiddleDistal,
PhysicsHandBone::MiddleTip,
PhysicsHandBone::RingMetacarpal,
PhysicsHandBone::RingProximal,
PhysicsHandBone::RingIntermediate,
PhysicsHandBone::RingDistal,
PhysicsHandBone::RingTip,
PhysicsHandBone::LittleMetacarpal,
PhysicsHandBone::LittleProximal,
PhysicsHandBone::LittleIntermediate,
PhysicsHandBone::LittleDistal,
PhysicsHandBone::LittleTip,
];
//lets just do the Right ThumbMetacarpal for now
//i dont understand the groups yet
let self_group = Group::GROUP_1;
let interaction_group = Group::ALL;
let radius = 0.010;
for hand in hands.iter() {
for bone in bones.iter() {
//spawn the thing
commands.spawn((
SpatialBundle::default(),
Collider::capsule(
Vec3 {
x: 0.0,
y: -0.0575,
z: 0.0,
},
Vec3 {
x: 0.0,
y: 0.0575,
z: 0.0,
},
radius,
),
RigidBody::KinematicPositionBased,
// CollisionGroups::new(self_group, interaction_group),
// SolverGroups::new(self_group, interaction_group),
bone.clone(),
BoneInitState::False,
hand.clone(),
));
}
}
}
fn update_physics_hands(
hands_res: Option<Res<HandsResource>>,
mut bone_query: Query<(
&mut Transform,
&mut Collider,
&PhysicsHandBone,
&mut BoneInitState,
&Hand,
)>,
hand_query: Query<(&Transform, &HandBone, &Hand, Without<PhysicsHandBone>)>,
) {
//sanity check do we even have hands?
match hands_res {
Some(res) => {
//config stuff
let radius = 0.010;
for mut bone in bone_query.iter_mut() {
let hand_res = match bone.4 {
Hand::Left => res.left,
Hand::Right => res.right,
};
//lets just do the Right ThumbMetacarpal for now
let result = get_start_and_end_entities(hand_res, bone.2);
if let Some((start_entity, end_entity)) = result {
//now we need their transforms
let start_components = hand_query.get(start_entity);
let end_components = hand_query.get(end_entity);
let direction = end_components.unwrap().0.translation
- start_components.unwrap().0.translation;
if direction.length() < 0.001 {
//i hate this but we need to skip init if the length is zero
return;
}
match *bone.3 {
BoneInitState::True => {
//if we are init then we just move em?
*bone.0 = start_components
.unwrap()
.0
.clone()
.looking_at(end_components.unwrap().0.translation, Vec3::Y);
}
BoneInitState::False => {
//build a new collider?
*bone.1 = Collider::capsule(
Vec3::splat(0.0),
Vec3 {
x: 0.0,
y: 0.0,
z: -direction.length(),
},
radius,
);
*bone.3 = BoneInitState::True;
}
}
}
}
}
None => info!("hand states resource not initialized yet"),
}
}
fn get_start_and_end_entities(
hand_res: HandResource,
bone: &PhysicsHandBone,
) -> Option<(Entity, Entity)> {
match bone {
PhysicsHandBone::Palm => return None,
PhysicsHandBone::Wrist => return None,
PhysicsHandBone::ThumbMetacarpal => {
return Some((hand_res.thumb.metacarpal, hand_res.thumb.proximal))
}
PhysicsHandBone::ThumbProximal => {
return Some((hand_res.thumb.proximal, hand_res.thumb.distal))
}
PhysicsHandBone::ThumbDistal => return Some((hand_res.thumb.distal, hand_res.thumb.tip)),
PhysicsHandBone::ThumbTip => return None,
PhysicsHandBone::IndexMetacarpal => {
return Some((hand_res.index.metacarpal, hand_res.index.proximal))
}
PhysicsHandBone::IndexProximal => {
return Some((hand_res.index.proximal, hand_res.index.intermediate))
}
PhysicsHandBone::IndexIntermediate => {
return Some((hand_res.index.intermediate, hand_res.index.distal))
}
PhysicsHandBone::IndexDistal => return Some((hand_res.index.distal, hand_res.index.tip)),
PhysicsHandBone::IndexTip => return None,
PhysicsHandBone::MiddleMetacarpal => {
return Some((hand_res.middle.metacarpal, hand_res.middle.proximal))
}
PhysicsHandBone::MiddleProximal => {
return Some((hand_res.middle.proximal, hand_res.middle.intermediate))
}
PhysicsHandBone::MiddleIntermediate => {
return Some((hand_res.middle.intermediate, hand_res.middle.distal))
}
PhysicsHandBone::MiddleDistal => {
return Some((hand_res.middle.distal, hand_res.middle.tip))
}
PhysicsHandBone::MiddleTip => return None,
PhysicsHandBone::RingMetacarpal => {
return Some((hand_res.ring.metacarpal, hand_res.ring.proximal))
}
PhysicsHandBone::RingProximal => {
return Some((hand_res.ring.proximal, hand_res.ring.intermediate))
}
PhysicsHandBone::RingIntermediate => {
return Some((hand_res.ring.intermediate, hand_res.ring.distal))
}
PhysicsHandBone::RingDistal => return Some((hand_res.ring.distal, hand_res.ring.tip)),
PhysicsHandBone::RingTip => return None,
PhysicsHandBone::LittleMetacarpal => {
return Some((hand_res.little.metacarpal, hand_res.little.proximal))
}
PhysicsHandBone::LittleProximal => {
return Some((hand_res.little.proximal, hand_res.little.intermediate))
}
PhysicsHandBone::LittleIntermediate => {
return Some((hand_res.little.intermediate, hand_res.little.distal))
}
PhysicsHandBone::LittleDistal => {
return Some((hand_res.little.distal, hand_res.little.tip))
}
PhysicsHandBone::LittleTip => return None,
};
}
fn get_hand_res(res: &Res<'_, HandsResource>, hand: Hand) -> HandResource {
match hand {
Hand::Left => res.left.clone(),
Hand::Right => res.right.clone(),
}
}
#[derive(Event, Default)]
pub struct SpawnCubeRequest;
#[derive(Resource)]
pub struct SpawnCubeTimer(Timer);
fn request_cube_spawn(
oculus_controller: Res<OculusController>,
frame_state: Res<XrFrameState>,
xr_input: Res<XrInput>,
instance: Res<XrInstance>,
session: Res<XrSession>,
mut writer: EventWriter<SpawnCubeRequest>,
time: Res<Time>,
mut timer: ResMut<SpawnCubeTimer>,
) {
timer.0.tick(time.delta());
if timer.0.finished() {
//lock frame
let frame_state = *frame_state.lock().unwrap();
//get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input);
//get controller triggers
let left_main_button = controller.a_button();
if left_main_button {
writer.send(SpawnCubeRequest::default());
timer.0.reset();
}
let right_main_button = controller.x_button();
if right_main_button {
writer.send(SpawnCubeRequest::default());
timer.0.reset();
}
}
}
fn cube_spawner(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
mut events: EventReader<SpawnCubeRequest>,
) {
for request in events.iter() {
// cube
commands.spawn((
PbrBundle {
mesh: meshes.add(Mesh::from(shape::Cube { size: 0.1 })),
material: materials.add(Color::rgb(0.8, 0.7, 0.6).into()),
transform: Transform::from_xyz(0.0, 1.0, 0.0),
..default()
},
RigidBody::Dynamic,
Collider::cuboid(0.05, 0.05, 0.05),
ColliderDebugColor(Color::hsl(220.0, 1.0, 0.3)),
XRInteractable,
XRInteractableState::default(),
Grabbable,
Touched(false),
));
}
}
//TODO: find a real place for this
fn prototype_interaction_input(
oculus_controller: Res<OculusController>,
frame_state: Res<XrFrameState>,
xr_input: Res<XrInput>,
instance: Res<XrInstance>,
session: Res<XrSession>,
mut right_interactor_query: Query<
(&mut XRInteractorState),
(
With<XRDirectInteractor>,
With<OpenXRRightController>,
Without<OpenXRLeftController>,
),
>,
mut left_interactor_query: Query<
(&mut XRInteractorState),
(
With<XRDirectInteractor>,
With<OpenXRLeftController>,
Without<OpenXRRightController>,
),
>,
) {
//lock frame
let frame_state = *frame_state.lock().unwrap();
//get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input);
//get controller triggers
let left_trigger = controller.trigger(Hand::Left);
let right_trigger = controller.trigger(Hand::Right);
//get the interactors and do state stuff
let mut left_state = left_interactor_query.single_mut();
if left_trigger > 0.8 {
*left_state = XRInteractorState::Selecting;
} else {
*left_state = XRInteractorState::Idle;
}
let mut right_state = right_interactor_query.single_mut();
if right_trigger > 0.8 {
*right_state = XRInteractorState::Selecting;
} else {
*right_state = XRInteractorState::Idle;
}
}
#[derive(Component)]
pub struct Grabbable;
pub fn update_grabbables(
mut events: EventReader<InteractionEvent>,
mut grabbable_query: Query<(
Entity,
&mut Transform,
With<Grabbable>,
Without<XRDirectInteractor>,
Option<&mut RigidBody>,
)>,
mut interactor_query: Query<(
&GlobalTransform,
&XRInteractorState,
&mut XRSelection,
Without<Grabbable>,
)>,
) {
//so basically the idea is to try all the events?
for event in events.read() {
// info!("some event");
match grabbable_query.get_mut(event.interactable) {
Ok(mut grabbable_transform) => {
// info!("we got a grabbable");
//now we need the location of our interactor
match interactor_query.get_mut(event.interactor) {
Ok(mut interactor_transform) => {
match *interactor_transform.2 {
XRSelection::Empty => {
match interactor_transform.1 {
XRInteractorState::Idle => match grabbable_transform.4 {
Some(mut thing) => {
*thing = RigidBody::Dynamic;
*interactor_transform.2 = XRSelection::Empty;
}
None => (),
},
XRInteractorState::Selecting => {
// info!("its a direct interactor?");
match grabbable_transform.4 {
Some(mut thing) => {
*thing = RigidBody::KinematicPositionBased;
*interactor_transform.2 =
XRSelection::Full(grabbable_transform.0);
}
None => (),
}
*grabbable_transform.1 =
interactor_transform.0.compute_transform();
}
}
}
XRSelection::Full(ent) => {
info!("nah bro we holding something");
match grabbable_transform.0 == ent {
true => {
*grabbable_transform.1 =
interactor_transform.0.compute_transform();
}
false => {}
}
match interactor_transform.1 {
XRInteractorState::Idle => {
*interactor_transform.2 = XRSelection::Empty
}
XRInteractorState::Selecting => {}
}
}
}
}
Err(_) => {
// info!("not a direct interactor")
}
}
}
Err(_) => {
// info!("not a grabbable?")
}
}
}
}

View File

@@ -1,5 +1,3 @@
use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin};
use bevy::prelude::*; use bevy::prelude::*;
@@ -7,7 +5,8 @@ use bevy::transform::components::Transform;
use bevy_oxr::input::XrInput; use bevy_oxr::input::XrInput;
use bevy_oxr::resources::{XrFrameState, XrInstance, XrSession}; use bevy_oxr::resources::{XrFrameState, XrInstance, XrSession};
use bevy_oxr::xr_input::hand::{OpenXrHandInput, HandInputDebugRenderer}; use bevy_oxr::xr_input::actions::XrActionSets;
use bevy_oxr::xr_input::hand::{HandInputDebugRenderer, OpenXrHandInput};
use bevy_oxr::xr_input::interactions::{ use bevy_oxr::xr_input::interactions::{
draw_interaction_gizmos, draw_socket_gizmos, interactions, socket_interactions, draw_interaction_gizmos, draw_socket_gizmos, interactions, socket_interactions,
update_interactable_states, InteractionEvent, Touched, XRDirectInteractor, XRInteractable, update_interactable_states, InteractionEvent, Touched, XRDirectInteractor, XRInteractable,
@@ -143,7 +142,6 @@ fn prototype_interaction_input(
oculus_controller: Res<OculusController>, oculus_controller: Res<OculusController>,
frame_state: Res<XrFrameState>, frame_state: Res<XrFrameState>,
xr_input: Res<XrInput>, xr_input: Res<XrInput>,
instance: Res<XrInstance>,
session: Res<XrSession>, session: Res<XrSession>,
mut right_interactor_query: Query< mut right_interactor_query: Query<
(&mut XRInteractorState), (&mut XRInteractorState),
@@ -161,11 +159,12 @@ fn prototype_interaction_input(
Without<OpenXRRightController>, Without<OpenXRRightController>,
), ),
>, >,
action_sets: Res<XrActionSets>,
) { ) {
//lock frame //lock frame
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); let controller = oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
//get controller triggers //get controller triggers
let left_trigger = controller.trigger(Hand::Left); let left_trigger = controller.trigger(Hand::Left);
let right_trigger = controller.trigger(Hand::Right); let right_trigger = controller.trigger(Hand::Right);

View File

@@ -61,12 +61,10 @@ pub fn initialize_xr_graphics(
{ {
enabled_extensions.khr_android_create_instance = true; enabled_extensions.khr_android_create_instance = true;
} }
// Horrible hack to get the Handtacking extension Loaded, Replace with good system to load enabled_extensions.ext_hand_tracking = available_extensions.ext_hand_tracking;
// any extension at some point
enabled_extensions.ext_hand_tracking =
available_extensions.ext_hand_tracking && enable_hand_tracking;
// enabled_extensions.ext_hand_joints_motion_range = available_extensions.ext_hand_joints_motion_range; // enabled_extensions.ext_hand_joints_motion_range = available_extensions.ext_hand_joints_motion_range;
let available_layers = xr_entry.enumerate_layers()?; let available_layers = xr_entry.enumerate_layers()?;
info!("available xr layers: {:#?}", available_layers); info!("available xr layers: {:#?}", available_layers);

View File

@@ -27,6 +27,8 @@ use xr_input::hands::hand_tracking::HandTrackingPlugin;
use xr_input::handtracking::HandTrackingTracker; use xr_input::handtracking::HandTrackingTracker;
use xr_input::OpenXrInput; use xr_input::OpenXrInput;
use crate::xr_input::oculus_touch::ActionSets;
const VIEW_TYPE: xr::ViewConfigurationType = xr::ViewConfigurationType::PRIMARY_STEREO; const VIEW_TYPE: xr::ViewConfigurationType = xr::ViewConfigurationType::PRIMARY_STEREO;
pub const LEFT_XR_TEXTURE_HANDLE: ManualTextureViewHandle = ManualTextureViewHandle(1208214591); pub const LEFT_XR_TEXTURE_HANDLE: ManualTextureViewHandle = ManualTextureViewHandle(1208214591);
@@ -158,8 +160,14 @@ impl Plugin for OpenXrPlugin {
.insert_resource(input.clone()) .insert_resource(input.clone())
.insert_resource(views.clone()) .insert_resource(views.clone())
.insert_resource(frame_state.clone()) .insert_resource(frame_state.clone())
.insert_resource(action_sets.clone()) .insert_resource(action_sets.clone());
.insert_resource(HandTrackingTracker::new(&session).unwrap()); let hands = xr_instance.exts().ext_hand_tracking.is_some();
if hands {
app.insert_resource(HandTrackingTracker::new(&session).unwrap());
app.insert_resource(HandInputSource::OpenXr);
} else {
app.insert_resource(HandInputSource::Emulated);
}
let (left, right) = swapchain.get_render_views(); let (left, right) = swapchain.get_render_views();
let left = ManualTextureView { let left = ManualTextureView {
@@ -347,15 +355,17 @@ pub fn end_frame(
} }
{ {
let _span = info_span!("xr_end_frame").entered(); let _span = info_span!("xr_end_frame").entered();
swapchain let result = swapchain.end(
.end( xr_frame_state.lock().unwrap().predicted_display_time,
xr_frame_state.lock().unwrap().predicted_display_time, &*views.lock().unwrap(),
&*views.lock().unwrap(), &input.stage,
&input.stage, **resolution,
**resolution, **environment_blend_mode,
**environment_blend_mode, );
) match result {
.unwrap(); Ok(_) => {}
Err(e) => warn!("error: {}", e),
}
} }
} }

328
src/xr_input/actions.rs Normal file
View File

@@ -0,0 +1,328 @@
use bevy::{prelude::*, utils::HashMap};
use openxr as xr;
use xr::{Action, Binding, Haptic, Posef};
use crate::resources::{XrInstance, XrSession};
use super::oculus_touch::ActionSets;
pub struct OpenXrActionsPlugin;
impl Plugin for OpenXrActionsPlugin {
fn build(&self, app: &mut App) {
app.insert_resource(SetupActionSets {
sets: HashMap::new(),
});
app.add_systems(PostStartup, setup_oxr_actions);
}
}
pub fn setup_oxr_actions(world: &mut World) {
let actions = world.remove_resource::<SetupActionSets>().unwrap();
let instance = world.get_resource::<XrInstance>().unwrap();
let session = world.get_resource::<XrSession>().unwrap();
let left_path = instance.string_to_path("/user/hand/left").unwrap();
let right_path = instance.string_to_path("/user/hand/right").unwrap();
let hands = [left_path, right_path];
let mut oxr_action_sets = Vec::new();
let mut action_sets = XrActionSets { sets: default() };
// let mut action_bindings: HashMap<&'static str, Vec<xr::Path>> = HashMap::new();
let mut a_iter = actions.sets.into_iter();
let mut action_bindings: HashMap<
(&'static str, &'static str),
HashMap<&'static str, Vec<xr::Path>>,
> = HashMap::new();
while let Some((set_name, set)) = a_iter.next() {
let mut actions: HashMap<&'static str, TypedAction> = default();
let oxr_action_set = instance
.create_action_set(set_name, set.pretty_name, set.priority)
.expect("Unable to create action set");
for (action_name, action) in set.actions.into_iter() {
let typed_action = match action.action_type {
ActionType::F32 => TypedAction::F32(match action.handednes {
ActionHandednes::Single => oxr_action_set
.create_action(action_name, action.pretty_name, &[])
.expect(&format!("Unable to create action: {}", action_name)),
ActionHandednes::Double => oxr_action_set
.create_action(action_name, action.pretty_name, &hands)
.expect(&format!("Unable to create action: {}", action_name)),
}),
ActionType::Bool => TypedAction::Bool(match action.handednes {
ActionHandednes::Single => oxr_action_set
.create_action(action_name, action.pretty_name, &[])
.expect(&format!("Unable to create action: {}", action_name)),
ActionHandednes::Double => oxr_action_set
.create_action(action_name, action.pretty_name, &hands)
.expect(&format!("Unable to create action: {}", action_name)),
}),
ActionType::PoseF => TypedAction::PoseF(match action.handednes {
ActionHandednes::Single => oxr_action_set
.create_action(action_name, action.pretty_name, &[])
.expect(&format!("Unable to create action: {}", action_name)),
ActionHandednes::Double => oxr_action_set
.create_action(action_name, action.pretty_name, &hands)
.expect(&format!("Unable to create action: {}", action_name)),
}),
ActionType::Haptic => TypedAction::Haptic(match action.handednes {
ActionHandednes::Single => oxr_action_set
.create_action(action_name, action.pretty_name, &[])
.expect(&format!("Unable to create action: {}", action_name)),
ActionHandednes::Double => oxr_action_set
.create_action(action_name, action.pretty_name, &hands)
.expect(&format!("Unable to create action: {}", action_name)),
}),
};
actions.insert(action_name, typed_action);
for (device_path, bindings) in action.bindings.into_iter() {
for b in bindings {
info!("binding {} to {}", action_name, b);
action_bindings
.entry((set_name, action_name))
.or_default()
.entry(device_path)
.or_default()
.push(instance.string_to_path(b).unwrap());
}
}
}
oxr_action_sets.push(oxr_action_set);
action_sets.sets.insert(
set_name,
ActionSet {
// oxr_action_set,
actions,
enabled: true,
},
);
}
let mut b_indings: HashMap<&'static str, Vec<Binding>> = HashMap::new();
for (dev, mut bindings) in action_sets
.sets
.iter()
.flat_map(|(set_name, set)| {
set.actions
.iter()
.map(move |(action_name, a)| (set_name, action_name, a))
})
.zip([&action_bindings].into_iter().cycle())
.flat_map(move |((set_name, action_name, action), bindings)| {
bindings
.get(&(set_name.clone(), action_name.clone()))
.unwrap()
.iter()
.map(move |(dev, bindings)| (action.clone(), dev.clone(), bindings))
})
.map(|(action, dev, bindings)| {
info!("Hi");
(
dev,
bindings
.into_iter()
.map(move |binding| match &action {
TypedAction::F32(a) => Binding::new(a, *binding),
TypedAction::Bool(a) => Binding::new(a, *binding),
TypedAction::PoseF(a) => Binding::new(a, *binding),
TypedAction::Haptic(a) => Binding::new(a, *binding),
})
.collect::<Vec<_>>(),
)
})
{
b_indings.entry(dev).or_default().append(&mut bindings);
}
for (dev, bindings) in b_indings.into_iter() {
info!(dev);
instance
.suggest_interaction_profile_bindings(instance.string_to_path(dev).unwrap(), &bindings)
.expect("Unable to suggest interaction bindings!");
}
session
.attach_action_sets(&oxr_action_sets.iter().collect::<Vec<_>>())
.expect("Unable to attach action sets!");
world.insert_resource(ActionSets(oxr_action_sets));
world.insert_resource(action_sets);
}
pub enum ActionHandednes {
Single,
Double,
}
pub enum ActionType {
F32,
Bool,
PoseF,
Haptic,
}
pub enum TypedAction {
F32(Action<f32>),
Bool(Action<bool>),
PoseF(Action<Posef>),
Haptic(Action<Haptic>),
}
pub struct SetupAction {
pretty_name: &'static str,
action_type: ActionType,
handednes: ActionHandednes,
bindings: HashMap<&'static str, Vec<&'static str>>,
}
pub struct SetupActionSet {
pretty_name: &'static str,
priority: u32,
actions: HashMap<&'static str, SetupAction>,
}
impl SetupActionSet {
pub fn new_action(
&mut self,
name: &'static str,
pretty_name: &'static str,
action_type: ActionType,
handednes: ActionHandednes,
) {
self.actions.insert(
name,
SetupAction {
pretty_name,
action_type,
handednes,
bindings: default(),
},
);
}
pub fn suggest_binding(&mut self, device_path: &'static str, bindings: &[XrBinding]) {
for binding in bindings {
self.actions
.get_mut(binding.action)
.ok_or(anyhow::anyhow!("Missing Action: {}", binding.action))
.unwrap()
.bindings
.entry(device_path)
.or_default()
.push(binding.path);
}
}
}
pub struct XrBinding {
action: &'static str,
path: &'static str,
}
impl XrBinding {
pub fn new(action_name: &'static str, binding_path: &'static str) -> XrBinding {
XrBinding {
action: action_name,
path: binding_path,
}
}
}
#[derive(Resource)]
pub struct SetupActionSets {
sets: HashMap<&'static str, SetupActionSet>,
}
impl SetupActionSets {
pub fn add_action_set(
&mut self,
name: &'static str,
pretty_name: &'static str,
priority: u32,
) -> &mut SetupActionSet {
self.sets.insert(
name,
SetupActionSet {
pretty_name,
priority,
actions: HashMap::new(),
},
);
self.sets.get_mut(name).unwrap()
}
}
pub struct ActionSet {
// oxr_action_set: xr::ActionSet,
enabled: bool,
actions: HashMap<&'static str, TypedAction>,
}
#[derive(Resource)]
pub struct XrActionSets {
sets: HashMap<&'static str, ActionSet>,
}
impl XrActionSets {
pub fn get_action_f32(
&self,
action_set: &'static str,
action_name: &'static str,
) -> anyhow::Result<&Action<f32>> {
let action = self
.sets
.get(action_set)
.ok_or(anyhow::anyhow!("Action Set Not Found!"))?
.actions
.get(action_name)
.ok_or(anyhow::anyhow!("Action Not Found!"))?;
match action {
TypedAction::F32(a) => Ok(a),
_ => anyhow::bail!("wrong action type"),
}
}
pub fn get_action_bool(
&self,
action_set: &'static str,
action_name: &'static str,
) -> anyhow::Result<&Action<bool>> {
let action = self
.sets
.get(action_set)
.ok_or(anyhow::anyhow!("Action Set Not Found!"))?
.actions
.get(action_name)
.ok_or(anyhow::anyhow!("Action Not Found!"))?;
match action {
TypedAction::Bool(a) => Ok(a),
_ => anyhow::bail!("wrong action type"),
}
}
pub fn get_action_posef(
&self,
action_set: &'static str,
action_name: &'static str,
) -> anyhow::Result<&Action<Posef>> {
let action = self
.sets
.get(action_set)
.ok_or(anyhow::anyhow!("Action Set Not Found!"))?
.actions
.get(action_name)
.ok_or(anyhow::anyhow!("Action Not Found!"))?;
match action {
TypedAction::PoseF(a) => Ok(a),
_ => anyhow::bail!("wrong action type"),
}
}
pub fn get_action_haptic(
&self,
action_set: &'static str,
action_name: &'static str,
) -> anyhow::Result<&Action<Haptic>> {
let action = self
.sets
.get(action_set)
.ok_or(anyhow::anyhow!("Action Set Not Found!"))?
.actions
.get(action_name)
.ok_or(anyhow::anyhow!("Action Not Found!"))?;
match action {
TypedAction::Haptic(a) => Ok(a),
_ => anyhow::bail!("wrong action type"),
}
}
}

View File

@@ -14,6 +14,7 @@ use crate::xr_input::{
}; };
use super::{ use super::{
actions::XrActionSets,
handtracking::{HandTrackingRef, HandTrackingTracker}, handtracking::{HandTrackingRef, HandTrackingTracker},
trackers::{OpenXRLeftController, OpenXRRightController, OpenXRTrackingRoot}, trackers::{OpenXRLeftController, OpenXRRightController, OpenXRTrackingRoot},
QuatConv, QuatConv,
@@ -54,44 +55,47 @@ pub fn draw_gizmos(
Without<OpenXRLeftController>, Without<OpenXRLeftController>,
Without<OpenXRTrackingRoot>, Without<OpenXRTrackingRoot>,
)>, )>,
hand_tracking: Res<HandTrackingTracker>, hand_tracking: Option<Res<HandTrackingTracker>>,
action_sets: Res<XrActionSets>,
) { ) {
let handtracking_ref = hand_tracking.get_ref(&xr_input, &frame_state); if let Some(hand_tracking) = hand_tracking {
if let Some(joints) = handtracking_ref.get_left_poses() { let handtracking_ref = hand_tracking.get_ref(&xr_input, &frame_state);
for joint in joints { if let Some(joints) = handtracking_ref.get_left_poses() {
let p = joint.pose.position; for joint in joints {
let r = joint.pose.orientation; let p = joint.pose.position;
let quat = r.to_quat(); let r = joint.pose.orientation;
let trans = Transform::from_rotation(quat); let quat = r.to_quat();
gizmos.circle( let trans = Transform::from_rotation(quat);
(p.x, p.y, p.z).into(), gizmos.circle(
trans.forward(), (p.x, p.y, p.z).into(),
joint.radius, trans.forward(),
Color::ORANGE_RED, joint.radius,
); Color::ORANGE_RED,
);
}
} else {
info!("left_hand_poses returned None");
} }
} else { if let Some(joints) = handtracking_ref.get_right_poses() {
info!("left_hand_poses returned None"); for joint in joints {
} let p = joint.pose.position;
if let Some(joints) = handtracking_ref.get_right_poses() { let r = joint.pose.orientation;
for joint in joints { let quat = r.to_quat();
let p = joint.pose.position; let trans = Transform::from_rotation(quat);
let r = joint.pose.orientation; gizmos.circle(
let quat = r.to_quat(); (p.x, p.y, p.z).into(),
let trans = Transform::from_rotation(quat); trans.forward(),
gizmos.circle( joint.radius,
(p.x, p.y, p.z).into(), Color::LIME_GREEN,
trans.forward(), );
joint.radius, }
Color::LIME_GREEN, return;
);
} }
return;
} }
//lock frame //lock frame
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); let controller = oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
//tracking root? //tracking root?
let mut tracking_transform = &Transform::IDENTITY; let mut tracking_transform = &Transform::IDENTITY;
let root = tracking_root_query.get_single(); let root = tracking_root_query.get_single();

View File

@@ -14,6 +14,7 @@ use crate::{
}; };
use super::{ use super::{
actions::XrActionSets,
hand_poses::get_simulated_open_hand_transforms, hand_poses::get_simulated_open_hand_transforms,
handtracking::HandTrackingTracker, handtracking::HandTrackingTracker,
oculus_touch::OculusController, oculus_touch::OculusController,
@@ -274,6 +275,7 @@ pub fn update_hand_states(
xr_input: Res<XrInput>, xr_input: Res<XrInput>,
instance: Res<XrInstance>, instance: Res<XrInstance>,
session: Res<XrSession>, session: Res<XrSession>,
action_sets: Res<XrActionSets>,
) { ) {
match hand_states_option { match hand_states_option {
Some(mut hands) => { Some(mut hands) => {
@@ -281,7 +283,7 @@ pub fn update_hand_states(
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = let controller =
oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
//right hand //right hand
let squeeze = controller.squeeze(Hand::Right); let squeeze = controller.squeeze(Hand::Right);
@@ -979,7 +981,7 @@ pub fn update_hand_skeletons(
Without<OpenXRTrackingRoot>, Without<OpenXRTrackingRoot>,
)>, )>,
input_source: Option<Res<HandInputSource>>, input_source: Option<Res<HandInputSource>>,
hand_tracking: Res<HandTrackingTracker>, hand_tracking: Option<Res<HandTrackingTracker>>,
xr_input: Res<XrInput>, xr_input: Res<XrInput>,
xr_frame_state: Res<XrFrameState>, xr_frame_state: Res<XrFrameState>,
) { ) {
@@ -1015,35 +1017,39 @@ pub fn update_hand_skeletons(
None => info!("hand states resource not initialized yet"), None => info!("hand states resource not initialized yet"),
} }
} }
HandInputSource::OpenXr => { HandInputSource::OpenXr => match hand_tracking {
let hand_ref = hand_tracking.get_ref(&xr_input, &xr_frame_state); Some(tracking) => {
let (root_transform, _) = tracking_root_query.get_single().unwrap(); let hand_ref = tracking.get_ref(&xr_input, &xr_frame_state);
let left_data = hand_ref.get_left_poses(); let (root_transform, _) = tracking_root_query.get_single().unwrap();
let right_data = hand_ref.get_right_poses(); let left_data = hand_ref.get_left_poses();
let right_data = hand_ref.get_right_poses();
for (entity, mut transform, bone, hand, radius, _) in hand_bone_query.iter_mut() { for (entity, mut transform, bone, hand, radius, _) in hand_bone_query.iter_mut()
let bone_data = match (hand, left_data, right_data) { {
(Hand::Left, Some(data), _) => data[bone.get_index_from_bone()], let bone_data = match (hand, left_data, right_data) {
(Hand::Right, _, Some(data)) => data[bone.get_index_from_bone()], (Hand::Left, Some(data), _) => data[bone.get_index_from_bone()],
_ => continue, (Hand::Right, _, Some(data)) => data[bone.get_index_from_bone()],
}; _ => continue,
match radius { };
Some(mut r) => r.0 = bone_data.radius, match radius {
None => { Some(mut r) => r.0 = bone_data.radius,
commands None => {
.entity(entity) commands
.insert(HandBoneRadius(bone_data.radius)); .entity(entity)
.insert(HandBoneRadius(bone_data.radius));
}
} }
*transform = transform
.with_translation(
root_transform.transform_point(bone_data.pose.position.to_vec3()),
)
.with_rotation(
root_transform.rotation * bone_data.pose.orientation.to_quat(),
)
} }
*transform = transform
.with_translation(
root_transform.transform_point(bone_data.pose.position.to_vec3()),
)
.with_rotation(
root_transform.rotation * bone_data.pose.orientation.to_quat(),
)
} }
} None => {}
},
}, },
None => { None => {
info!("hand input source not initialized"); info!("hand input source not initialized");

View File

@@ -10,7 +10,7 @@ use crate::{
hand_poses::get_simulated_open_hand_transforms, hand_poses::get_simulated_open_hand_transforms,
oculus_touch::ActionSets, oculus_touch::ActionSets,
trackers::{OpenXRLeftController, OpenXRRightController}, trackers::{OpenXRLeftController, OpenXRRightController},
Hand, Hand, InteractionProfileBindings,
}, },
}; };
@@ -54,6 +54,7 @@ fn setup_hand_emulation_action_set(
session: Res<XrSession>, session: Res<XrSession>,
mut action_sets: ResMut<ActionSets>, mut action_sets: ResMut<ActionSets>,
mut commands: Commands, mut commands: Commands,
mut bindings: ResMut<InteractionProfileBindings>
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
let left_path = instance.string_to_path("/user/hand/left").unwrap(); let left_path = instance.string_to_path("/user/hand/left").unwrap();
let right_path = instance.string_to_path("/user/hand/right").unwrap(); let right_path = instance.string_to_path("/user/hand/right").unwrap();
@@ -85,7 +86,7 @@ fn setup_hand_emulation_action_set(
}, },
}; };
suggest_oculus_touch_profile(&instance, &hand_action_set)?; suggest_oculus_touch_profile(&instance, &hand_action_set,bindings)?;
session.attach_action_sets(&[&action_set])?; session.attach_action_sets(&[&action_set])?;
@@ -137,8 +138,9 @@ fn bind_single<'a, T: ActionTy>(
fn suggest_oculus_touch_profile( fn suggest_oculus_touch_profile(
i: &XrInstance, i: &XrInstance,
action_set: &HandEmulationActionSet, action_set: &HandEmulationActionSet,
mut bindings: ResMut<InteractionProfileBindings>
) -> anyhow::Result<()> { ) -> anyhow::Result<()> {
let mut b: Vec<Binding> = Vec::new(); let mut b = bindings.entry("/interaction_profiles/oculus/touch_controller").or_default();
bind(&action_set.thumb_x, "/thumbstick/x", i, &mut b)?; bind(&action_set.thumb_x, "/thumbstick/x", i, &mut b)?;
bind(&action_set.thumb_y, "/thumbstick/y", i, &mut b)?; bind(&action_set.thumb_y, "/thumbstick/y", i, &mut b)?;
bind(&action_set.thumb_touch, "/thumbstick/touch", i, &mut b)?; bind(&action_set.thumb_touch, "/thumbstick/touch", i, &mut b)?;

View File

@@ -1,11 +1,15 @@
use std::mem::MaybeUninit;
use bevy::prelude::*; use bevy::prelude::*;
use openxr::{HandJointLocationEXT, HandTracker, Result}; use openxr::{HandJointLocationEXT, HandTracker, Result};
use crate::{ use crate::{
input::XrInput, input::XrInput,
resources::{XrFrameState, XrSession}, resources::{XrFrameState, XrFrameWaiter, XrSession},
}; };
use super::hands::HandBone;
#[derive(Resource)] #[derive(Resource)]
pub struct HandTrackingTracker { pub struct HandTrackingTracker {
left_hand: HandTracker, left_hand: HandTracker,
@@ -40,8 +44,9 @@ pub struct HandTrackingRef<'a> {
frame_state: &'a XrFrameState, frame_state: &'a XrFrameState,
} }
impl<'a> HandTrackingRef<'a> { impl<'a> HandTrackingRef<'a> {
pub fn get_left_poses(&self) -> Option<[HandJointLocationEXT; 26]> { pub fn get_left_poses(&self) -> Option<[HandJointLocationEXT;26]> {
self.input self.input
.stage .stage
.locate_hand_joints( .locate_hand_joints(

View File

@@ -1,3 +1,4 @@
pub mod actions;
pub mod controllers; pub mod controllers;
pub mod debug_gizmos; pub mod debug_gizmos;
pub mod hand; pub mod hand;
@@ -9,12 +10,11 @@ pub mod oculus_touch;
pub mod prototype_locomotion; pub mod prototype_locomotion;
pub mod trackers; pub mod trackers;
pub mod xr_camera; pub mod xr_camera;
pub mod actions;
use crate::resources::{XrInstance, XrSession}; use crate::resources::{XrInstance, XrSession};
use crate::xr_begin_frame; use crate::xr_begin_frame;
use crate::xr_input::controllers::XrControllerType; use crate::xr_input::controllers::XrControllerType;
use crate::xr_input::oculus_touch::{setup_oculus_controller, ActionSets}; use crate::xr_input::oculus_touch::setup_oculus_controller;
use crate::xr_input::xr_camera::{xr_camera_head_sync, Eye, XRProjection, XrCameraBundle}; use crate::xr_input::xr_camera::{xr_camera_head_sync, Eye, XRProjection, XrCameraBundle};
use bevy::app::{App, PostUpdate, Startup}; use bevy::app::{App, PostUpdate, Startup};
use bevy::log::warn; use bevy::log::warn;
@@ -26,6 +26,8 @@ use bevy::transform::TransformSystem;
use bevy::utils::HashMap; use bevy::utils::HashMap;
use openxr::Binding; use openxr::Binding;
use self::actions::{setup_oxr_actions, OpenXrActionsPlugin};
use self::oculus_touch::{post_action_setup_oculus_controller, ActionSets};
use self::trackers::{ use self::trackers::{
adopt_open_xr_trackers, update_open_xr_controllers, OpenXRLeftEye, OpenXRRightEye, adopt_open_xr_trackers, update_open_xr_controllers, OpenXRLeftEye, OpenXRRightEye,
OpenXRTrackingRoot, OpenXRTrackingRoot,
@@ -50,6 +52,11 @@ impl OpenXrInput {
impl Plugin for OpenXrInput { impl Plugin for OpenXrInput {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.add_plugins(CameraProjectionPlugin::<XRProjection>::default()); app.add_plugins(CameraProjectionPlugin::<XRProjection>::default());
app.add_plugins(OpenXrActionsPlugin);
app.add_systems(
PreUpdate,
(post_action_setup_oculus_controller.after(setup_oxr_actions),),
);
match self.controller_type { match self.controller_type {
XrControllerType::OculusTouch => { XrControllerType::OculusTouch => {
app.add_systems(Startup, setup_oculus_controller); app.add_systems(Startup, setup_oculus_controller);

View File

@@ -2,31 +2,73 @@ use crate::input::XrInput;
use crate::resources::{XrInstance, XrSession}; use crate::resources::{XrInstance, XrSession};
use crate::xr_input::controllers::{Handed, Touchable}; use crate::xr_input::controllers::{Handed, Touchable};
use crate::xr_input::Hand; use crate::xr_input::Hand;
use bevy::prelude::{Commands, Res, Resource}; use bevy::prelude::{Commands, Res, ResMut, Resource};
use openxr::{ use openxr::{
Action, ActionSet, AnyGraphics, Binding, FrameState, Haptic, Instance, Path, Posef, Session, Action, ActionSet, AnyGraphics, Binding, FrameState, Haptic, Instance, Path, Posef, Session,
Space, SpaceLocation, SpaceVelocity, Space, SpaceLocation, SpaceVelocity,
}; };
use std::convert::identity;
use std::sync::OnceLock; use std::sync::OnceLock;
pub fn setup_oculus_controller( use super::actions::{ActionHandednes, XrActionSets, ActionType, SetupActionSets, XrBinding};
mut commands: Commands,
pub fn post_action_setup_oculus_controller(
action_sets: Res<XrActionSets>,
mut controller: ResMut<OculusController>,
instance: Res<XrInstance>, instance: Res<XrInstance>,
session: Res<XrSession>, session: Res<XrSession>,
) { ) {
let mut action_sets = vec![]; let s = Session::<AnyGraphics>::clone(&session);
let oculus_controller = OculusController::new( let left_path = instance.string_to_path("/user/hand/left").unwrap();
Instance::clone(&instance), let right_path = instance.string_to_path("/user/hand/right").unwrap();
Session::clone(&session), let grip_action = action_sets
&mut action_sets, .get_action_posef("oculus_input", "hand_pose")
)
.unwrap();
session
.attach_action_sets(&action_sets.iter().map(|a| a).collect::<Vec<_>>())
.unwrap(); .unwrap();
let aim_action = action_sets
.get_action_posef("oculus_input", "pointer_pose")
.unwrap();
controller.grip_space = Some(Handed {
left: grip_action
.create_space(
s.clone(),
left_path,
Posef::IDENTITY,
)
.unwrap(),
right: grip_action
.create_space(
s.clone(),
right_path,
Posef::IDENTITY,
)
.unwrap(),
});
controller.aim_space = Some(Handed {
left: aim_action
.create_space(
s.clone(),
left_path,
Posef::IDENTITY,
)
.unwrap(),
right: aim_action
.create_space(
s.clone(),
right_path,
Posef::IDENTITY,
)
.unwrap(),
})
}
pub fn setup_oculus_controller(
mut commands: Commands,
instance: Res<XrInstance>,
action_sets: ResMut<SetupActionSets>,
) {
let oculus_controller = OculusController::new(action_sets).unwrap();
init_subaction_path(&instance);
commands.insert_resource(oculus_controller); commands.insert_resource(oculus_controller);
commands.insert_resource(ActionSets(action_sets));
} }
#[derive(Resource, Clone)] #[derive(Resource, Clone)]
@@ -34,7 +76,7 @@ pub struct ActionSets(pub Vec<ActionSet>);
pub struct OculusControllerRef<'a> { pub struct OculusControllerRef<'a> {
oculus_controller: &'a OculusController, oculus_controller: &'a OculusController,
instance: &'a Instance, action_sets: &'a XrActionSets,
session: &'a Session<AnyGraphics>, session: &'a Session<AnyGraphics>,
frame_state: &'a FrameState, frame_state: &'a FrameState,
xr_input: &'a XrInput, xr_input: &'a XrInput,
@@ -58,11 +100,11 @@ pub fn subaction_path(hand: Hand) -> Path {
impl OculusControllerRef<'_> { impl OculusControllerRef<'_> {
pub fn grip_space(&self, hand: Hand) -> (SpaceLocation, SpaceVelocity) { pub fn grip_space(&self, hand: Hand) -> (SpaceLocation, SpaceVelocity) {
match hand { match hand {
Hand::Left => self.oculus_controller.grip_space.left.relate( Hand::Left => self.oculus_controller.grip_space.as_ref().unwrap().left.relate(
&self.xr_input.stage, &self.xr_input.stage,
self.frame_state.predicted_display_time, self.frame_state.predicted_display_time,
), ),
Hand::Right => self.oculus_controller.grip_space.right.relate( Hand::Right => self.oculus_controller.grip_space.as_ref().unwrap().right.relate(
&self.xr_input.stage, &self.xr_input.stage,
self.frame_state.predicted_display_time, self.frame_state.predicted_display_time,
), ),
@@ -71,11 +113,11 @@ impl OculusControllerRef<'_> {
} }
pub fn aim_space(&self, hand: Hand) -> (SpaceLocation, SpaceVelocity) { pub fn aim_space(&self, hand: Hand) -> (SpaceLocation, SpaceVelocity) {
match hand { match hand {
Hand::Left => self.oculus_controller.aim_space.left.relate( Hand::Left => self.oculus_controller.aim_space.as_ref().unwrap().left.relate(
&self.xr_input.stage, &self.xr_input.stage,
self.frame_state.predicted_display_time, self.frame_state.predicted_display_time,
), ),
Hand::Right => self.oculus_controller.aim_space.right.relate( Hand::Right => self.oculus_controller.aim_space.as_ref().unwrap().right.relate(
&self.xr_input.stage, &self.xr_input.stage,
self.frame_state.predicted_display_time, self.frame_state.predicted_display_time,
), ),
@@ -83,102 +125,107 @@ impl OculusControllerRef<'_> {
.unwrap() .unwrap()
} }
pub fn squeeze(&self, hand: Hand) -> f32 { pub fn squeeze(&self, hand: Hand) -> f32 {
let action = &self.oculus_controller.squeeze; let action = &self
.action_sets
.get_action_f32("oculus_input", "squeeze")
.unwrap();
action action
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn trigger(&self, hand: Hand) -> f32 { pub fn trigger(&self, hand: Hand) -> f32 {
self.oculus_controller self.action_sets
.trigger .get_action_f32("oculus_input", "trigger")
.inner .unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn trigger_touched(&self, hand: Hand) -> bool { pub fn trigger_touched(&self, hand: Hand) -> bool {
self.oculus_controller self.action_sets
.trigger .get_action_bool("oculus_input", "trigger_touched")
.touch .unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn x_button(&self) -> bool { pub fn x_button(&self) -> bool {
self.oculus_controller self.action_sets
.x_button .get_action_bool("oculus_input", "x_button")
.inner .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn x_button_touched(&self) -> bool { pub fn x_button_touched(&self) -> bool {
self.oculus_controller self.action_sets
.x_button .get_action_bool("oculus_input", "x_button_touch")
.touch .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn y_button(&self) -> bool { pub fn y_button(&self) -> bool {
self.oculus_controller self.action_sets
.y_button .get_action_bool("oculus_input", "y_button")
.inner .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn y_button_touched(&self) -> bool { pub fn y_button_touched(&self) -> bool {
self.oculus_controller self.action_sets
.y_button .get_action_bool("oculus_input", "y_button_touch")
.touch .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn menu_button(&self) -> bool { pub fn menu_button(&self) -> bool {
self.oculus_controller self.action_sets
.menu_button .get_action_bool("oculus_input", "menu_button")
.unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn a_button(&self) -> bool { pub fn a_button(&self) -> bool {
self.oculus_controller self.action_sets
.a_button .get_action_bool("oculus_input", "a_button")
.inner .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn a_button_touched(&self) -> bool { pub fn a_button_touched(&self) -> bool {
self.oculus_controller self.action_sets
.a_button .get_action_bool("oculus_input", "a_button_touch")
.touch .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn b_button(&self) -> bool { pub fn b_button(&self) -> bool {
self.oculus_controller self.action_sets
.b_button .get_action_bool("oculus_input", "b_button")
.inner .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn b_button_touched(&self) -> bool { pub fn b_button_touched(&self) -> bool {
self.oculus_controller self.action_sets
.b_button .get_action_bool("oculus_input", "b_button_touch")
.touch .unwrap()
.state(&self.session, Path::NULL) .state(&self.session, Path::NULL)
.unwrap() .unwrap()
.current_state .current_state
} }
pub fn thumbstick_touch(&self, hand: Hand) -> bool { pub fn thumbstick_touch(&self, hand: Hand) -> bool {
self.oculus_controller self.action_sets
.thumbstick_touch .get_action_bool("oculus_input", "thumbstick_touch")
.unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state .current_state
@@ -186,28 +233,32 @@ impl OculusControllerRef<'_> {
pub fn thumbstick(&self, hand: Hand) -> Thumbstick { pub fn thumbstick(&self, hand: Hand) -> Thumbstick {
Thumbstick { Thumbstick {
x: self x: self
.oculus_controller .action_sets
.thumbstick_x .get_action_f32("oculus_input", "thumbstick_x")
.unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state, .current_state,
y: self y: self
.oculus_controller .action_sets
.thumbstick_y .get_action_f32("oculus_input", "thumbstick_y")
.unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state, .current_state,
click: self click: self
.oculus_controller .action_sets
.thumbstick_click .get_action_bool("oculus_input", "thumbstick_click")
.unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state, .current_state,
} }
} }
pub fn thumbrest_touch(&self, hand: Hand) -> bool { pub fn thumbrest_touch(&self, hand: Hand) -> bool {
self.oculus_controller self.action_sets
.thumbrest_touch .get_action_bool("oculus_input", "thumbrest_touch")
.unwrap()
.state(&self.session, subaction_path(hand)) .state(&self.session, subaction_path(hand))
.unwrap() .unwrap()
.current_state .current_state
@@ -224,244 +275,197 @@ pub struct Thumbstick {
impl OculusController { impl OculusController {
pub fn get_ref<'a>( pub fn get_ref<'a>(
&'a self, &'a self,
instance: &'a Instance,
session: &'a Session<AnyGraphics>, session: &'a Session<AnyGraphics>,
frame_state: &'a FrameState, frame_state: &'a FrameState,
xr_input: &'a XrInput, xr_input: &'a XrInput,
action_sets: &'a XrActionSets,
) -> OculusControllerRef { ) -> OculusControllerRef {
OculusControllerRef { OculusControllerRef {
oculus_controller: self, oculus_controller: self,
instance,
session, session,
frame_state, frame_state,
xr_input, xr_input,
action_sets,
} }
} }
} }
#[derive(Resource)] #[derive(Resource)]
pub struct OculusController { pub struct OculusController {
pub grip_space: Handed<Space>, pub grip_space: Option<Handed<Space>>,
pub aim_space: Handed<Space>, pub aim_space: Option<Handed<Space>>,
pub grip_pose: Action<Posef>,
pub aim_pose: Action<Posef>,
pub squeeze: Action<f32>,
pub trigger: Touchable<f32>,
pub haptic_feedback: Action<Haptic>,
pub x_button: Touchable<bool>,
pub y_button: Touchable<bool>,
pub menu_button: Action<bool>,
pub a_button: Touchable<bool>,
pub b_button: Touchable<bool>,
pub thumbstick_x: Action<f32>,
pub thumbstick_y: Action<f32>,
pub thumbstick_touch: Action<bool>,
pub thumbstick_click: Action<bool>,
pub thumbrest_touch: Action<bool>,
} }
impl OculusController { impl OculusController {
pub fn new( pub fn new(mut action_sets: ResMut<SetupActionSets>) -> anyhow::Result<Self> {
instance: Instance,
session: Session<AnyGraphics>,
action_sets: &mut Vec<ActionSet>,
) -> anyhow::Result<Self> {
let action_set = let action_set =
instance.create_action_set("oculus_input", "Oculus Touch Controller Input", 0)?; action_sets.add_action_set("oculus_input", "Oculus Touch Controller Input", 0);
init_subaction_path(&instance); action_set.new_action(
let left_path = instance.string_to_path("/user/hand/left").unwrap(); "hand_pose",
let right_path = instance.string_to_path("/user/hand/right").unwrap(); "Hand Pose",
let hands = [left_path, right_path]; ActionType::PoseF,
let grip_pose = action_set.create_action::<Posef>("hand_pose", "Hand Pose", &hands)?; ActionHandednes::Double,
let aim_pose = action_set.create_action::<Posef>("pointer_pose", "Pointer Pose", &hands)?; );
action_set.new_action(
"pointer_pose",
"Pointer Pose",
ActionType::PoseF,
ActionHandednes::Double,
);
action_set.new_action(
"squeeze",
"Grip Pull",
ActionType::F32,
ActionHandednes::Double,
);
action_set.new_action(
"trigger",
"Trigger Pull",
ActionType::F32,
ActionHandednes::Double,
);
action_set.new_action(
"trigger_touched",
"Trigger Touch",
ActionType::Bool,
ActionHandednes::Double,
);
action_set.new_action(
"haptic_feedback",
"Haptic Feedback",
ActionType::Haptic,
ActionHandednes::Double,
);
action_set.new_action(
"x_button",
"X Button",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"x_button_touch",
"X Button Touch",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"y_button",
"Y Button",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"y_button_touch",
"Y Button Touch",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"a_button",
"A Button",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"a_button_touch",
"A Button Touch",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"b_button",
"B Button",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"b_button_touch",
"B Button Touch",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"menu_button",
"Menu Button",
ActionType::Bool,
ActionHandednes::Single,
);
action_set.new_action(
"thumbstick_x",
"Thumbstick X",
ActionType::F32,
ActionHandednes::Double,
);
action_set.new_action(
"thumbstick_y",
"Thumbstick y",
ActionType::F32,
ActionHandednes::Double,
);
action_set.new_action(
"thumbstick_touch",
"Thumbstick Touch",
ActionType::Bool,
ActionHandednes::Double,
);
action_set.new_action(
"thumbstick_click",
"Thumbstick Click",
ActionType::Bool,
ActionHandednes::Double,
);
action_set.new_action(
"thumbrest_touch",
"Thumbrest Touch",
ActionType::Bool,
ActionHandednes::Double,
);
let this = OculusController { let this = OculusController {
grip_space: Handed { grip_space: None,
left: grip_pose.create_space(session.clone(), left_path, Posef::IDENTITY)?, aim_space: None,
right: grip_pose.create_space(session.clone(), right_path, Posef::IDENTITY)?,
},
aim_space: Handed {
left: aim_pose.create_space(session.clone(), left_path, Posef::IDENTITY)?,
right: aim_pose.create_space(session.clone(), right_path, Posef::IDENTITY)?,
},
grip_pose,
aim_pose,
squeeze: action_set.create_action("squeeze", "Grip Pull", &hands)?,
trigger: Touchable {
inner: action_set.create_action("trigger", "Trigger Pull", &hands)?,
touch: action_set.create_action("trigger_touched", "Trigger Touch", &hands)?,
},
haptic_feedback: action_set.create_action(
"haptic_feedback",
"Haptic Feedback",
&hands,
)?,
x_button: Touchable {
inner: action_set.create_action("x_button", "X Button", &[])?,
touch: action_set.create_action("x_button_touch", "X Button Touch", &[])?,
},
y_button: Touchable {
inner: action_set.create_action("y_button", "Y Button", &[])?,
touch: action_set.create_action("y_button_touch", "Y Button Touch", &[])?,
},
menu_button: action_set.create_action("menu_button", "Menu Button", &[])?,
a_button: Touchable {
inner: action_set.create_action("a_button", "A Button", &[])?,
touch: action_set.create_action("a_button_touch", "A Button Touch", &[])?,
},
b_button: Touchable {
inner: action_set.create_action("b_button", "B Button", &[])?,
touch: action_set.create_action("b_button_touch", "B Button Touch", &[])?,
},
thumbstick_x: action_set.create_action("thumbstick_x", "Thumbstick X", &hands)?,
thumbstick_y: action_set.create_action("thumbstick_y", "Thumbstick Y", &hands)?,
thumbstick_touch: action_set.create_action(
"thumbstick_touch",
"Thumbstick Touch",
&hands,
)?,
thumbstick_click: action_set.create_action(
"thumbstick_click",
"Thumbstick Click",
&hands,
)?,
thumbrest_touch: action_set.create_action(
"thumbrest_touch",
"Thumbrest Touch",
&hands,
)?,
}; };
let i = instance; action_set.suggest_binding(
i.suggest_interaction_profile_bindings( "/interaction_profiles/oculus/touch_controller",
i.string_to_path("/interaction_profiles/oculus/touch_controller")?,
&[ &[
Binding::new( XrBinding::new("hand_pose", "/user/hand/left/input/grip/pose"),
&this.grip_pose, XrBinding::new("hand_pose", "/user/hand/right/input/grip/pose"),
i.string_to_path("/user/hand/left/input/grip/pose")?, XrBinding::new("pointer_pose", "/user/hand/left/input/aim/pose"),
XrBinding::new("pointer_pose", "/user/hand/right/input/aim/pose"),
XrBinding::new("squeeze", "/user/hand/left/input/squeeze/value"),
XrBinding::new("squeeze", "/user/hand/right/input/squeeze/value"),
XrBinding::new("trigger", "/user/hand/left/input/trigger/value"),
XrBinding::new("trigger", "/user/hand/right/input/trigger/value"),
XrBinding::new("trigger_touched", "/user/hand/left/input/trigger/touch"),
XrBinding::new("trigger_touched", "/user/hand/right/input/trigger/touch"),
XrBinding::new("haptic_feedback", "/user/hand/left/output/haptic"),
XrBinding::new("haptic_feedback", "/user/hand/right/output/haptic"),
XrBinding::new("x_button", "/user/hand/left/input/x/click"),
XrBinding::new("x_button_touch", "/user/hand/left/input/x/touch"),
XrBinding::new("y_button", "/user/hand/left/input/y/click"),
XrBinding::new("y_button_touch", "/user/hand/left/input/y/touch"),
XrBinding::new("a_button", "/user/hand/right/input/a/click"),
XrBinding::new("a_button_touch", "/user/hand/right/input/a/touch"),
XrBinding::new("b_button", "/user/hand/right/input/b/click"),
XrBinding::new("b_button_touch", "/user/hand/right/input/b/touch"),
XrBinding::new("menu_button", "/user/hand/left/input/menu/click"),
XrBinding::new("thumbstick_x", "/user/hand/left/input/thumbstick/x"),
XrBinding::new("thumbstick_y", "/user/hand/left/input/thumbstick/y"),
XrBinding::new("thumbstick_x", "/user/hand/right/input/thumbstick/x"),
XrBinding::new("thumbstick_y", "/user/hand/right/input/thumbstick/y"),
XrBinding::new("thumbstick_click", "/user/hand/left/input/thumbstick/click"),
XrBinding::new(
"thumbstick_click",
"/user/hand/right/input/thumbstick/click",
), ),
Binding::new( XrBinding::new("thumbstick_touch", "/user/hand/left/input/thumbstick/touch"),
&this.grip_pose, XrBinding::new(
i.string_to_path("/user/hand/right/input/grip/pose")?, "thumbstick_touch",
), "/user/hand/right/input/thumbstick/touch",
Binding::new(
&this.aim_pose,
i.string_to_path("/user/hand/left/input/aim/pose")?,
),
Binding::new(
&this.aim_pose,
i.string_to_path("/user/hand/left/input/aim/pose")?,
),
Binding::new(
&this.squeeze,
i.string_to_path("/user/hand/left/input/squeeze/value")?,
),
Binding::new(
&this.squeeze,
i.string_to_path("/user/hand/right/input/squeeze/value")?,
),
Binding::new(
&this.trigger.inner,
i.string_to_path("/user/hand/right/input/trigger/value")?,
),
Binding::new(
&this.trigger.inner,
i.string_to_path("/user/hand/left/input/trigger/value")?,
),
Binding::new(
&this.trigger.touch,
i.string_to_path("/user/hand/right/input/trigger/touch")?,
),
Binding::new(
&this.trigger.touch,
i.string_to_path("/user/hand/left/input/trigger/touch")?,
),
Binding::new(
&this.haptic_feedback,
i.string_to_path("/user/hand/right/output/haptic")?,
),
Binding::new(
&this.haptic_feedback,
i.string_to_path("/user/hand/left/output/haptic")?,
),
Binding::new(
&this.x_button.inner,
i.string_to_path("/user/hand/left/input/x/click")?,
),
Binding::new(
&this.x_button.touch,
i.string_to_path("/user/hand/left/input/x/touch")?,
),
Binding::new(
&this.y_button.inner,
i.string_to_path("/user/hand/left/input/y/click")?,
),
Binding::new(
&this.y_button.touch,
i.string_to_path("/user/hand/left/input/y/touch")?,
),
Binding::new(
&this.menu_button,
i.string_to_path("/user/hand/left/input/menu/click")?,
),
Binding::new(
&this.a_button.inner,
i.string_to_path("/user/hand/right/input/a/click")?,
),
Binding::new(
&this.a_button.touch,
i.string_to_path("/user/hand/right/input/a/touch")?,
),
Binding::new(
&this.b_button.inner,
i.string_to_path("/user/hand/right/input/b/click")?,
),
Binding::new(
&this.b_button.touch,
i.string_to_path("/user/hand/right/input/b/touch")?,
),
Binding::new(
&this.thumbstick_x,
i.string_to_path("/user/hand/left/input/thumbstick/x")?,
),
Binding::new(
&this.thumbstick_x,
i.string_to_path("/user/hand/right/input/thumbstick/x")?,
),
Binding::new(
&this.thumbstick_y,
i.string_to_path("/user/hand/left/input/thumbstick/y")?,
),
Binding::new(
&this.thumbstick_y,
i.string_to_path("/user/hand/right/input/thumbstick/y")?,
),
Binding::new(
&this.thumbstick_click,
i.string_to_path("/user/hand/left/input/thumbstick/click")?,
),
Binding::new(
&this.thumbstick_click,
i.string_to_path("/user/hand/right/input/thumbstick/click")?,
),
Binding::new(
&this.thumbstick_touch,
i.string_to_path("/user/hand/left/input/thumbstick/touch")?,
),
Binding::new(
&this.thumbstick_touch,
i.string_to_path("/user/hand/right/input/thumbstick/touch")?,
),
Binding::new(
&this.thumbrest_touch,
i.string_to_path("/user/hand/left/input/thumbrest/touch")?,
),
Binding::new(
&this.thumbrest_touch,
i.string_to_path("/user/hand/right/input/thumbrest/touch")?,
), ),
XrBinding::new("thumbrest_touch", "/user/hand/left/input/thumbrest/touch"),
XrBinding::new("thumbrest_touch", "/user/hand/right/input/thumbrest/touch"),
], ],
)?; );
action_sets.push(action_set);
Ok(this) Ok(this)
} }
} }

View File

@@ -11,7 +11,8 @@ use crate::{
}; };
use super::{ use super::{
oculus_touch::OculusController, trackers::OpenXRTrackingRoot, Hand, QuatConv, Vec3Conv, actions::XrActionSets, oculus_touch::OculusController, trackers::OpenXRTrackingRoot, Hand,
QuatConv, Vec3Conv,
}; };
pub enum LocomotionType { pub enum LocomotionType {
@@ -67,6 +68,7 @@ pub fn proto_locomotion(
views: ResMut<XrViews>, views: ResMut<XrViews>,
mut gizmos: Gizmos, mut gizmos: Gizmos,
config_option: Option<ResMut<PrototypeLocomotionConfig>>, config_option: Option<ResMut<PrototypeLocomotionConfig>>,
action_sets: Res<XrActionSets>,
) { ) {
match config_option { match config_option {
Some(_) => (), Some(_) => (),
@@ -80,7 +82,7 @@ pub fn proto_locomotion(
//lock frame //lock frame
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); let controller = oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
let root = tracking_root_query.get_single_mut(); let root = tracking_root_query.get_single_mut();
match root { match root {
Ok(mut position) => { Ok(mut position) => {

View File

@@ -8,7 +8,7 @@ use crate::{
resources::{XrFrameState, XrInstance, XrSession}, resources::{XrFrameState, XrInstance, XrSession},
}; };
use super::{oculus_touch::OculusController, Hand, QuatConv, Vec3Conv}; use super::{actions::XrActionSets, oculus_touch::OculusController, Hand, QuatConv, Vec3Conv};
#[derive(Component)] #[derive(Component)]
pub struct OpenXRTrackingRoot; pub struct OpenXRTrackingRoot;
@@ -62,14 +62,14 @@ pub fn update_open_xr_controllers(
Without<OpenXRLeftController>, Without<OpenXRLeftController>,
)>, )>,
frame_state: Res<XrFrameState>, frame_state: Res<XrFrameState>,
instance: Res<XrInstance>,
xr_input: Res<XrInput>, xr_input: Res<XrInput>,
session: Res<XrSession>, session: Res<XrSession>,
action_sets: Res<XrActionSets>,
) { ) {
//lock dat frame? //lock dat frame?
let frame_state = *frame_state.lock().unwrap(); let frame_state = *frame_state.lock().unwrap();
//get controller //get controller
let controller = oculus_controller.get_ref(&instance, &session, &frame_state, &xr_input); let controller = oculus_controller.get_ref(&session, &frame_state, &xr_input, &action_sets);
//get left controller //get left controller
let left_grip_space = controller.grip_space(Hand::Left); let left_grip_space = controller.grip_space(Hand::Left);
let left_aim_space = controller.aim_space(Hand::Left); let left_aim_space = controller.aim_space(Hand::Left);