From 981ed25daca997251855f8f84e6523c25fc7eecd Mon Sep 17 00:00:00 2001 From: Christoph Haag Date: Wed, 13 Jan 2021 13:32:34 +0100 Subject: [PATCH] call xrGetOpenGLGraphicsRequirementsKHR on linux too This call is required per the spec. --- apps/openmw/mwvr/openxrplatform.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwvr/openxrplatform.cpp b/apps/openmw/mwvr/openxrplatform.cpp index 97b66db03..1caec08b5 100644 --- a/apps/openmw/mwvr/openxrplatform.cpp +++ b/apps/openmw/mwvr/openxrplatform.cpp @@ -470,7 +470,20 @@ namespace MWVR throw std::logic_error("Enum value not implemented"); } #elif __linux__ - { // Create Session + { + // Get system requirements + PFN_xrGetOpenGLGraphicsRequirementsKHR p_getRequirements = nullptr; + xrGetInstanceProcAddr(instance, "xrGetOpenGLGraphicsRequirementsKHR", reinterpret_cast(&p_getRequirements)); + XrGraphicsRequirementsOpenGLKHR requirements{ XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR }; + CHECK_XRCMD(p_getRequirements(instance, systemId, &requirements)); + + // TODO: Actually get system version + const XrVersion systemApiVersion = XR_MAKE_VERSION(4, 6, 0); + if (requirements.minApiVersionSupported > systemApiVersion) { + std::cout << "Runtime does not support desired Graphics API and/or version" << std::endl; + } + + // Create Session Display* xDisplay = XOpenDisplay(NULL); GLXContext glxContext = glXGetCurrentContext(); GLXDrawable glxDrawable = glXGetCurrentDrawable();