Skip to content

Commit

Permalink
OpenXR SDK 1.0.32 (2023-11-29)
Browse files Browse the repository at this point in the history
This release contains a number of vendor extensions, plus a new ratified
revision to the XR_KHR_loader_init extension that specifies forwarding
the init calls to API layers. Vendors of API layers, primarily on
Android, must verify they can handle being passed XR_NULL_HANDLE for the
instance parameter of xrGetInstanceProcAddr, to avoid bugs when using
the updated loader. This release also contains a number of build system
cleanups and fixes. Users of the Android Gradle Plugin and our official
loader AAR file can now use the OpenXR::headers target just like on
desktop: there is now metadata for the “prefab” tool to generate for
CMake both this header/include-only target and the normal
OpenXR::openxr_loader imported library target. The shipped AAR is much
smaller due to stripping debug data from the binaries, which helps in
case application build systems do not automatically strip native
binaries. A bug in the loader Android manifest as shipped in 1.0.31 has
also been fixed.

-   Registry
    -   Extension reservation: Reserve extension id for
        XR_KHR_maintenance1 (internal MR 3010)
    -   Extension reservation: Reserve extension id for
        XR_KHR_game_controller (internal MR 3019)
    -   New vendor extension: XR_HTC_anchor (internal MR 2667)
    -   New vendor extension: XR_META_touch_controller_plus (internal MR
        2702)
    -   New vendor extension: XR_ML_marker_understanding (internal MR
        2750)
    -   New vendor extension: XR_ML_localization_map (internal MR 2802,
        internal MR 3045, internal MR 3047)
    -   XR_KHR_loader_init: New Khronos ratified revision, adds support
        for forwarding loader init calls to API layers (internal MR
        2703)
-   SDK
    -   Loader: Pass xrInitializeLoaderKHR calls to enabled API layers
        if XR_KHR_loader_init is enabled, per ratified update to that
        extension. (internal MR 2703)
    -   Loader: Partial fix for the loader not honoring
        BUILD_LOADER_WITH_EXCEPTION_HANDLING on Android. (internal MR
        2870, OpenXR-SDK-Source PR 405, internal issue 1999)
    -   Loader Android AAR: Strip binaries before inclusion in AAR, as
        loader is stable (and mostly shared with all platforms) and size
        difference is substantial.
    -   Loader Android AAR: Expose OpenXR::headers prefab imported
        target just as on desktop builds (internal MR 2886)
    -   Loader Android AAR: Generate a source jar file for completeness.
        (internal MR 2886)
    -   Loader Android AAR: Add <uses-sdk> elements to Android loader
        AAR manifest, to prevent the manifest merger from assuming a
        version < 4 and adding unneeded permissions accordingly.
        (internal MR 3029) (internal MR 3032)
    -   Clean up our CMake build substantially, correcting dependencies
        and narrowing the scope of includes. (internal MR 2886,
        OpenXR-SDK-Source issue 344, internal issue 1872,
        OpenXR-SDK-Source issue 419, internal issue 2071, internal MR
        2987)
    -   Fix build in directories containing spaces. (internal MR 2886,
        OpenXR-SDK-Source issue 344, internal issue 1872,
        OpenXR-SDK-Source issue 419, internal issue 2071, internal MR
        2987)
    -   Fix linking to GLX when glvnd is not found on the system
        (internal MR 3000)
    -   Fix use of OpenXR::headers target when not building the loader.
        (internal MR 2886, OpenXR-SDK-Source issue 344, internal issue
        1872, OpenXR-SDK-Source issue 419, internal issue 2071, internal
        MR 2987)
    -   scripts: Migrate namedtuple usage to dataclass, and expose the
        definitions for reuse. (internal MR 2183)
    -   scripts: Clean up formatting, clean up some issues found by
        type-aware Python editors, and improve the experience of editing
        Python scripts in some editors by adding a .env file. (internal
        MR 2183)
    -   scripts: Support base header types with no derived types defined
        yet. (internal MR 2802)

GitOrigin-RevId: 0a6bbc30cf10fdec436dfa81abf27747251a0821
  • Loading branch information
rpavlik committed Nov 29, 2023
1 parent 5e9bc99 commit 33c4600
Show file tree
Hide file tree
Showing 62 changed files with 2,968 additions and 1,651 deletions.
2 changes: 1 addition & 1 deletion .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: Apache-2.0

version: 1.0.31.{build}
version: 1.0.32.{build}
image: Visual Studio 2017


Expand Down
5 changes: 3 additions & 2 deletions .azure-pipelines/shared/build_jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ jobs:
presentationBackend: wayland
pool:
vmImage: "ubuntu-latest"
container: khronosgroup/docker-images:openxr-sdk.20230323
# container: khronosgroup/docker-images@sha256:20edadbaa6cdec4fed7417c24b18dfb4b93eec940fdf1a27b5f97272dec47032
# 20230614
container: khronosgroup/docker-images:openxr-sdk@sha256:fbc5fe29a0787cccc8f66bd9bd03c9dbddf591c7d1aea673108c38c908b280f5

steps:
# First build as debug
- template: build_linux.yml
Expand Down
16 changes: 8 additions & 8 deletions .azure-pipelines/shared/build_linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ parameters:
default: build

steps:
- script: |
rm -rf ${{ parameters.sourceDir }}/${{ parameters.buildDir }}
mkdir -p ${{ parameters.sourceDir }}/${{ parameters.buildDir }}
displayName: "Clean up and create new build directory"
- checkout: self
lfs: true
- script: "rm -rf ${{ parameters.sourceDir }}/${{ parameters.buildDir }}"
displayName: "Clean up build directory"

- script: cmake -G Ninja .. -DCMAKE_BUILD_TYPE=${{ parameters.buildType }} ${{ parameters.cmakeArgs }}
workingDirectory: ${{ parameters.sourceDir }}/${{ parameters.buildDir }}
- script: "cmake -G Ninja -S . -B ${{ parameters.buildDir }} -DCMAKE_BUILD_TYPE=${{ parameters.buildType }} ${{ parameters.cmakeArgs }}"
workingDirectory: "${{ parameters.sourceDir }}"
displayName: "Generate build system"

- script: ninja
workingDirectory: ${{ parameters.sourceDir }}/${{ parameters.buildDir }}
- script: "ninja -C ${{ parameters.buildDir }}"
workingDirectory: "${{ parameters.sourceDir }}"
displayName: "Compile"
3 changes: 3 additions & 0 deletions .azure-pipelines/shared/build_mingw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ parameters:
default: "true"

steps:
- checkout: self
lfs: true

# - script: choco install -y ninja
# displayName: 'Install Ninja'

Expand Down
3 changes: 3 additions & 0 deletions .azure-pipelines/shared/build_msvc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ parameters:
default: "true"

steps:
- checkout: self
lfs: true

- powershell: ./.azure-pipelines/shared/install_vulkan.ps1
displayName: Install Vulkan SDK
workingDirectory: "${{ parameters.sourceDir }}"
Expand Down
8 changes: 6 additions & 2 deletions .azure-pipelines/shared/check_clang_format.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,13 @@ jobs:
displayName: "clang-format"
pool:
vmImage: "ubuntu-latest"
container: khronosgroup/docker-images:openxr-sdk.20230323
# container: khronosgroup/docker-images@sha256:20edadbaa6cdec4fed7417c24b18dfb4b93eec940fdf1a27b5f97272dec47032
# 20230614
container: khronosgroup/docker-images:openxr-sdk@sha256:fbc5fe29a0787cccc8f66bd9bd03c9dbddf591c7d1aea673108c38c908b280f5

steps:
- checkout: self
lfs: true

- script: ./runClangFormat.sh
displayName: Run clang-format

Expand Down
39 changes: 20 additions & 19 deletions .azure-pipelines/shared/check_file_format.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
# Copyright (c) 2020-2023, The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
jobs:
- job: check_file_format
displayName: 'Check file formatting'
pool:
vmImage: 'ubuntu-latest'
container: khronosgroup/docker-images:openxr-sdk.20230323
# container: khronosgroup/docker-images@sha256:20edadbaa6cdec4fed7417c24b18dfb4b93eec940fdf1a27b5f97272dec47032
steps:
- script: ./file_format.sh
displayName: File formatting checks (file_format.sh)
- job: check_file_format
displayName: "Check file formatting"
pool:
vmImage: "ubuntu-latest"
# 20230614
container: khronosgroup/docker-images:openxr-sdk@sha256:fbc5fe29a0787cccc8f66bd9bd03c9dbddf591c7d1aea673108c38c908b280f5

- script: git diff --patch --exit-code > file_format.patch
displayName: Save changes as diff
- script: echo "The following files need file formatting:"; sed -n -e "s/^diff.* b\///p" file_format.patch
condition: failed()
- task: PublishPipelineArtifact@1
displayName: Publish diff
condition: failed()
inputs:
path: $(System.DefaultWorkingDirectory)/file_format.patch
artifact: file_format_changes
steps:
- script: ./file_format.sh
displayName: File formatting checks (file_format.sh)

- script: git diff --patch --exit-code > file_format.patch
displayName: Save changes as diff
- script: echo "The following files need file formatting:"; sed -n -e "s/^diff.* b\///p" file_format.patch
condition: failed()
- task: PublishPipelineArtifact@1
displayName: Publish diff
condition: failed()
inputs:
path: $(System.DefaultWorkingDirectory)/file_format.patch
artifact: file_format_changes
8 changes: 6 additions & 2 deletions .azure-pipelines/shared/codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ jobs:
displayName: "codespell"
pool:
vmImage: "ubuntu-latest"
container: khronosgroup/docker-images:openxr-sdk.20230323
# container: khronosgroup/docker-images@sha256:20edadbaa6cdec4fed7417c24b18dfb4b93eec940fdf1a27b5f97272dec47032
# 20230614
container: khronosgroup/docker-images:openxr-sdk@sha256:fbc5fe29a0787cccc8f66bd9bd03c9dbddf591c7d1aea673108c38c908b280f5

steps:
- checkout: self
lfs: true

- script: ./checkCodespell
displayName: Run Codespell script
6 changes: 6 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Copyright (c) 2022-2023, The Khronos Group Inc.
#
# SPDX-License-Identifier: Apache-2.0

# Improves the Python editing experience with vscode.
PYTHONPATH=specification/scripts:src/scripts:external/python
7 changes: 6 additions & 1 deletion .github/workflows/check_clang_format_and_codespell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,14 @@ jobs:
clang-format:
runs-on: ubuntu-latest
container:
image: khronosgroup/docker-images:openxr-sdk.20230209
# 20230614
image: khronosgroup/docker-images:openxr-sdk@sha256:fbc5fe29a0787cccc8f66bd9bd03c9dbddf591c7d1aea673108c38c908b280f5

steps:
- uses: actions/checkout@v4
with:
lfs: true

- run: ./runClangFormat.sh
name: Run clang-format

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/gradle-wrapper-validation.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2022, Collabora, Ltd.
# Copyright 2022-2023, Collabora, Ltd.
# SPDX-License-Identifier: CC0-1.0

name: Validate Gradle Wrapper
Expand All @@ -16,4 +16,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: gradle/wrapper-validation-action@v1
2 changes: 2 additions & 0 deletions .github/workflows/msvc-build-preset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ jobs:
INSTALL_DIR: "${{ github.workspace }}/install"
steps:
- uses: actions/checkout@v4
with:
lfs: true

- name: Get modern CMake and Ninja
uses: lukka/[email protected]
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ CMakeFiles
*.tar.gz
*.log
pregen/
sources-jar/
docs-jar/
generated-includes
cmake_install.cmake
cmake_uninstall.cmake
Expand Down Expand Up @@ -60,7 +62,7 @@ local.properties
!.azure-pipelines/nuget/NugetTemplate/build
!.clang-format
!.clang-tidy
!.cmake-format.json
!.cmake-format.py
!.editorconfig
!.git-blame-ignore-revs
!.git-keep
Expand All @@ -73,11 +75,13 @@ local.properties
!.markdownlint.yaml
!.proclamation.json
!.reuse
!/.env

# Output artifact
*.aar
*.pom
clang-format-patches/
/*.jar

# Key stores
*.jks
4 changes: 2 additions & 2 deletions .proclamation.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"#": "This is a config file for proclamation, the changelog combiner: https://gitlab.com/ryanpavlik/proclamation",
"$schema": "https://ryanpavlik.gitlab.io/proclamation/proclamation.schema.json",
"#": "This is a config file for proclamation, the changelog combiner: https://gitlab.com/proclamation/proclamation",
"$schema": "https://proclamation.gitlab.io/proclamation/proclamation.schema.json",
"projects": [
{
"project_name": "OpenXR SDK",
Expand Down
89 changes: 89 additions & 0 deletions CHANGELOG.SDK.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,95 @@ along with any public pull requests that have been accepted.
In this repository in particular, since it is primarily software,
pull requests may be integrated as they are accepted even between periodic updates.

## OpenXR SDK 1.0.32 (2023-11-29)

This release contains a number of vendor extensions, plus a new ratified
revision to the `XR_KHR_loader_init` extension that specifies forwarding the
init calls to API layers. **Vendors of API layers**, primarily on Android, must
verify they can handle being passed `XR_NULL_HANDLE` for the instance parameter
of `xrGetInstanceProcAddr`, to avoid bugs when using the updated loader. This
release also contains a number of build system cleanups and fixes. Users of the
Android Gradle Plugin and our official loader AAR file can now use the
`OpenXR::headers` target just like on desktop: there is now metadata for the
"prefab" tool to generate for CMake both this header/include-only target and the
normal `OpenXR::openxr_loader` imported library target. The shipped AAR is much
smaller due to stripping debug data from the binaries, which helps in case
application build systems do not automatically strip native binaries. A bug in
the loader Android manifest as shipped in 1.0.31 has also been fixed.

- Registry
- Extension reservation: Reserve extension id for `XR_KHR_maintenance1`
([internal MR 3010](https://gitlab.khronos.org/openxr/openxr/merge_requests/3010))
- Extension reservation: Reserve extension id for `XR_KHR_game_controller`
([internal MR 3019](https://gitlab.khronos.org/openxr/openxr/merge_requests/3019))
- New vendor extension: `XR_HTC_anchor`
([internal MR 2667](https://gitlab.khronos.org/openxr/openxr/merge_requests/2667))
- New vendor extension: `XR_META_touch_controller_plus`
([internal MR 2702](https://gitlab.khronos.org/openxr/openxr/merge_requests/2702))
- New vendor extension: `XR_ML_marker_understanding`
([internal MR 2750](https://gitlab.khronos.org/openxr/openxr/merge_requests/2750))
- New vendor extension: `XR_ML_localization_map`
([internal MR 2802](https://gitlab.khronos.org/openxr/openxr/merge_requests/2802),
[internal MR 3045](https://gitlab.khronos.org/openxr/openxr/merge_requests/3045),
[internal MR 3047](https://gitlab.khronos.org/openxr/openxr/merge_requests/3047))
- `XR_KHR_loader_init`: New Khronos ratified revision, adds support for
forwarding loader init calls to API layers
([internal MR 2703](https://gitlab.khronos.org/openxr/openxr/merge_requests/2703))
- SDK
- Loader: Pass `xrInitializeLoaderKHR` calls to enabled API layers if
`XR_KHR_loader_init` is enabled, per ratified update to that extension.
([internal MR 2703](https://gitlab.khronos.org/openxr/openxr/merge_requests/2703))
- Loader: Partial fix for the loader not honoring
`BUILD_LOADER_WITH_EXCEPTION_HANDLING` on Android.
([internal MR 2870](https://gitlab.khronos.org/openxr/openxr/merge_requests/2870),
[OpenXR-SDK-Source PR 405](https://github.com/KhronosGroup/OpenXR-SDK-Source/pull/405),
[internal issue 1999](https://gitlab.khronos.org/openxr/openxr/issues/1999))
- Loader Android AAR: Strip binaries before inclusion in AAR, as loader is stable
(and mostly shared with all platforms) and size difference is substantial.
- Loader Android AAR: Expose `OpenXR::headers` prefab imported target just as on
desktop builds
([internal MR 2886](https://gitlab.khronos.org/openxr/openxr/merge_requests/2886))
- Loader Android AAR: Generate a source jar file for completeness.
([internal MR 2886](https://gitlab.khronos.org/openxr/openxr/merge_requests/2886))
- Loader Android AAR: Add `<uses-sdk>` elements to Android loader AAR manifest,
to prevent the manifest merger from assuming a version < 4 and adding unneeded
permissions accordingly.
([internal MR 3029](https://gitlab.khronos.org/openxr/openxr/merge_requests/3029))
([internal MR 3032](https://gitlab.khronos.org/openxr/openxr/merge_requests/3032))
- Clean up our CMake build substantially, correcting dependencies and narrowing
the scope of includes.
([internal MR 2886](https://gitlab.khronos.org/openxr/openxr/merge_requests/2886),
[OpenXR-SDK-Source issue 344](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/344),
[internal issue 1872](https://gitlab.khronos.org/openxr/openxr/issues/1872),
[OpenXR-SDK-Source issue 419](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/419),
[internal issue 2071](https://gitlab.khronos.org/openxr/openxr/issues/2071),
[internal MR 2987](https://gitlab.khronos.org/openxr/openxr/merge_requests/2987))
- Fix build in directories containing spaces.
([internal MR 2886](https://gitlab.khronos.org/openxr/openxr/merge_requests/2886),
[OpenXR-SDK-Source issue 344](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/344),
[internal issue 1872](https://gitlab.khronos.org/openxr/openxr/issues/1872),
[OpenXR-SDK-Source issue 419](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/419),
[internal issue 2071](https://gitlab.khronos.org/openxr/openxr/issues/2071),
[internal MR 2987](https://gitlab.khronos.org/openxr/openxr/merge_requests/2987))
- Fix linking to GLX when glvnd is not found on the system
([internal MR 3000](https://gitlab.khronos.org/openxr/openxr/merge_requests/3000))
- Fix use of `OpenXR::headers` target when not building the loader.
([internal MR 2886](https://gitlab.khronos.org/openxr/openxr/merge_requests/2886),
[OpenXR-SDK-Source issue 344](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/344),
[internal issue 1872](https://gitlab.khronos.org/openxr/openxr/issues/1872),
[OpenXR-SDK-Source issue 419](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/419),
[internal issue 2071](https://gitlab.khronos.org/openxr/openxr/issues/2071),
[internal MR 2987](https://gitlab.khronos.org/openxr/openxr/merge_requests/2987))
- scripts: Migrate `namedtuple` usage to dataclass, and expose the definitions
for reuse.
([internal MR 2183](https://gitlab.khronos.org/openxr/openxr/merge_requests/2183))
- scripts: Clean up formatting, clean up some issues found by type-aware Python
editors, and improve the experience of editing Python scripts in some editors
by adding a `.env` file.
([internal MR 2183](https://gitlab.khronos.org/openxr/openxr/merge_requests/2183))
- scripts: Support base header types with no derived types defined yet.
([internal MR 2802](https://gitlab.khronos.org/openxr/openxr/merge_requests/2802))

## OpenXR SDK 1.0.31 (2023-10-18)

This release features two new vendor extensions and minor extension XML
Expand Down
Loading

0 comments on commit 33c4600

Please sign in to comment.