USE_SYSTEM_OPENXR=ON proton fails with "Loader does not support simultaneous XrInstances"
Proton probes for OpenVR and OpenXR support at startup, as seen in Monado logs:
INFO [client_loop] Client 1 connected
INFO [ipc_handle_instance_describe_client] Client info:
id: 1
application_name: 'OpenComposite_wine64-preloader'
pid: 539772
extensions:
ext_hand_tracking_enabled: true
ext_eye_gaze_interaction_enabled: false
ext_hand_interaction_enabled: false
INFO [client_loop] Client 2 connected
INFO [ipc_handle_instance_describe_client] Client info:
id: 2
application_name: 'wineopenxr test instance'
pid: 539772
extensions:
ext_hand_tracking_enabled: false
ext_eye_gaze_interaction_enabled: false
ext_hand_interaction_enabled: false
INFO [client_loop] Client disconnected.
INFO [client_loop] Client disconnected.
Both wineopenxr and OpenComposite will attempt to create an OpenXR instance, and as seen in logs instances are alive concurrently.
OpenXR loader has a check for simultaneous instances in loader_core.cpp. The check is backed by a global variable in loader_instance.cpp.
When setting USE_SYSTEM_OPENXR=OFF, OpenComposite will have its private copy of the global variable, and check passes. When USE_SYSTEM_OPENXR=ON, both load the same shared library and fail.