OpenXR SDK 1.0.21 (2022-01-10)

This release features a number of new extensions, as well as some
software updates and fixes, especially for Android. If you are using the
bundled jsoncpp, this is also a security release as the bundled jsoncpp
was upgraded to incorporate security improvements from upstream.

-   Registry
    -   Add new XR_FB_render_model vendor extension. (internal MR 2117,
        internal MR 2169)
    -   Add new XR_HTC_facial_expression vendor extension. (internal MR
        2120)
    -   Add new XR_FB_keyboard_tracking vendor extension. (internal MR
        2128)
    -   Add new XR_EXT_uuid multi-vendor extension. (internal MR 2152)
    -   Add new XR_FB_passthrough_keyboard_hands vendor extension.
        (internal MR 2162)
    -   Add new XR_HTC_vive_focus3_controller_interaction vendor
        extension. (internal MR 2178)
    -   Add new XR_ALMALENCE_digital_lens_control vendor extension.
        (OpenXR-Docs PR 104, internal issue 1615)
    -   Correct winding order for XR_MSFT_hand_tracking_mesh extension
        to clockwise to match runtime behavior. (internal MR 2151)
    -   Fix typos/naming convention errors in
        XR_FB_hand_tracking_capsules: rename
        XR_FB_HAND_TRACKING_CAPSULE_POINT_COUNT to
        XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB and
        XR_FB_HAND_TRACKING_CAPSULE_COUNT to
        XR_HAND_TRACKING_CAPSULE_COUNT_FB, providing the old names as
        compatibility aliases. (internal MR 1547, internal issue 1519)
    -   Reserve vendor extensions 208 - 299 for Facebook. (internal MR
        2158)
    -   Reserve extension numbers for anticipated multi-vendor
        extensions. (internal MR 2173)
-   SDK
    -   Android loader: Update vendored jnipp project, including
        crash/exception fixes if an application manually attached or
        detached a thread. (OpenXR-SDK-Source PR 286, OpenXR-SDK-Source
        PR 285)
    -   Docs: Fixed typo in docs. (OpenXR-SDK-Source PR 284)
    -   Fix detection of std::filesystem options on GCC 11 and newer.
        (OpenXR-SDK-Source PR 276, OpenXR-SDK-Source issue 260, internal
        issue 1571)
    -   Loader: Add ifdef guards around contents of Android-specific
        files so all platforms may still glob all source files in
        OpenXR-SDK to build the loader with a custom build system.
        (OpenXR-SDK-Source PR 274)
    -   Loader: Fixed incorrect return value when no broker is present
        on Android but runtime defined via active_runtime.json.
        (OpenXR-SDK-Source PR 284)
    -   Loader: Added /system to the search path on Android as per
        documentation. (OpenXR-SDK-Source PR 284)
    -   Loader doc: Use nativeLibraryDir (property, part of API) instead
        of getNativeLibraryDir() (function generated by wrapping
        library) (OpenXR-SDK-Source PR 278)
    -   Update vendored copy of jsoncpp from 1.8.4 to 1.9.5 for security
        and other fixes. (internal MR 2168, OpenXR-SDK-Source issue 265,
        internal issue 1582)
    -   Update android-jni-wrappers to fix missing include.
        (OpenXR-SDK-Source PR 280, OpenXR-SDK-Source issue 275, internal
        issue 1616)
    -   Update jnipp to fix crash on Android if app detaches thread from
        JVM (e.g. on shutdown). (OpenXR-SDK-Source PR 280)
    -   scripts: Populate ext_name in HandleData too, for use by
        language wrapper generation scripts. (internal MR 2184)
261 files changed
tree: de73ff96f84972a50c640ac46c14a7f30a371c41
  1. .azure-pipelines/
  2. .github/
  3. .reuse/
  4. include/
  5. LICENSES/
  6. specification/
  7. src/
  8. .appveyor.yml
  9. .editorconfig
  10. .git-blame-ignore-revs
  11. .gitattributes
  12. .gitignore
  13. CHANGELOG.SDK.md
  14. CMakeLists.txt
  15. CODE_OF_CONDUCT.md
  16. COPYING.adoc
  17. LICENSE
  18. README.md
README.md

OpenXR™ Software Development Kit (SDK) Project

This repository contains OpenXR headers, as well as source code and build scripts for the OpenXR loader. It contains all generated source files and headers pre-generated for minimum dependencies.

The authoritative public repository for this project is located at https://github.com/KhronosGroup/OpenXR-SDK.

The public repository containing the scripts that generate the files in this repository is located at https://github.com/KhronosGroup/OpenXR-SDK-Source. It hosts the public Issue tracker, and accepts patches (Pull Requests) from the general public. That repository is also where sample code (hello_xr) and API layer source can be found.

Note that this repo is effectively read-only: changes to this repo should be made in the OpenXR-SDK-Source repo instead

Directory Structure

  • BUILDING.md - Instructions for building the projects
  • README.md - This file
  • COPYING.md - Copyright and licensing information
  • CODE_OF_CONDUCT.md - Code of Conduct
  • external/ - External code for projects in the repo
  • include/ - OpenXR header files
  • src/external/jsoncpp - The jsoncpp project source code, an included dependency of the loader.
  • src/loader - OpenXR loader code, including generated code

Building

The project is set up to build using CMake.

(Optional) Building the OpenXR Loader as a DLL

By default, the OpenXR loader is built as a static library on Windows and a dynamic library on other platforms. To specify alternate behavior, define the CMake option DYNAMIC_LOADER, e.g. by adding -DDYNAMIC_LOADER=ON or -DDYNAMIC_LOADER=OFF to your CMake command line.

Windows

Building the OpenXR components in this tree on Windows is supported using Visual Studio 2013 and newer. Before beginning, make sure the appropriate “msbuild.exe” is in your PATH. Also, when generating the solutions/projects using CMake, be sure to use the correct compiler version number. The following table is provided to help you:

Visual StudioVersion Number
Visual Studio 201312
Visual Studio 201514
Visual Studio 201715

Specific sample command lines for building follow. If you're already familiar with the process of building a project with CMake, you may skim or skip these instructions.

Windows 64-bit

First, generate the 64-bit solution and project files using CMake:

mkdir build\win64
cd build\win64
cmake -G "Visual Studio [Version Number] Win64" ..\..

Finally, open the build\win64\OPENXR.sln in the Visual Studio to build the loader.

Windows 32-bit

First, generate the 32-bit solution and project files using CMake:

mkdir build\win32
cd build\win32
cmake -G "Visual Studio [Version Number]" ..\..

Open the build\win32\OPENXR.sln in the Visual Studio to build the loader.

Linux

The following set of Debian/Ubuntu packages provides all required libs for building for xlib or xcb with OpenGL and Vulkan support.

  • build-essential
  • cmake (of somewhat recent vintage, 3.10+ known working)
  • libgl1-mesa-dev
  • libvulkan-dev
  • libx11-xcb-dev
  • libxcb-dri2-0-dev
  • libxcb-glx0-dev
  • libxcb-icccm4-dev
  • libxcb-keysyms1-dev
  • libxcb-randr0-dev
  • libxrandr-dev
  • libxxf86vm-dev
  • mesa-common-dev

Specific sample command lines for building follow. If you're already familiar with the process of building a project with CMake, you may skim or skip these instructions.

Linux Debug

mkdir -p build/linux_debug
cd build/linux_debug
cmake -DCMAKE_BUILD_TYPE=Debug ../..
make

Linux Release

mkdir -p build/linux_release
cd build/linux_release
cmake -DCMAKE_BUILD_TYPE=Release ../..
make