OpenXR: Fix initialization warning on Android

This commit adds proper checking for XR_KHR_loader_init support and
fixes the warning regarding missing extensions on Android to only appear
if neither XR_KHR_loader_init nor XR_KHR_loader_init_android are
supported by the runtime.
This commit is contained in:
rsjtdrjgfuzkfg 2023-01-07 18:41:58 +01:00
parent 9c02bf1b11
commit b51acac638
4 changed files with 19 additions and 6 deletions

View file

@ -51,18 +51,17 @@ OpenXRAndroidExtension::OpenXRAndroidExtension() {
HashMap<String, bool *> OpenXRAndroidExtension::get_requested_extensions() {
HashMap<String, bool *> request_extensions;
request_extensions[XR_KHR_LOADER_INIT_ANDROID_EXTENSION_NAME] = &loader_init_extension_available;
request_extensions[XR_KHR_ANDROID_CREATE_INSTANCE_EXTENSION_NAME] = &create_instance_extension_available;
return request_extensions;
}
void OpenXRAndroidExtension::on_before_instance_created() {
if (!loader_init_extension_available) {
print_line("OpenXR: XR_KHR_loader_init_android is not reported as available - trying to initialize anyway...");
if (XR_FAILED(EXT_TRY_INIT_XR_FUNC(xrInitializeLoaderKHR))) {
// XR_KHR_loader_init not supported on this platform
return;
}
EXT_INIT_XR_FUNC(xrInitializeLoaderKHR);
loader_init_extension_available = true;
JNIEnv *env = get_jni_env();
JavaVM *vm;
@ -85,6 +84,9 @@ static XrInstanceCreateInfoAndroidKHR instance_create_info;
void *OpenXRAndroidExtension::set_instance_create_info_and_get_next_pointer(void *p_next_pointer) {
if (!create_instance_extension_available) {
if (!loader_init_extension_available) {
WARN_PRINT("No Android extensions available, couldn't pass JVM and Activity to OpenXR");
}
return nullptr;
}