Skip to content

Commit

Permalink
OpenXR SDK 1.1.37 (2024-05-23)
Browse files Browse the repository at this point in the history
This release primarily adds new defines for easier use of both OpenXR
1.0 and 1.1 with up-to-date headers, some documentation improvements,
and improvements for Android, including support for using the “API Dump”
and “Validation” API layers in your own APK during the development
process.

-   Registry
    -   Addition: New XR_API_VERSION_1_0 and XR_API_VERSION_1_1 defines
        to allow applications to easily specify OpenXR “major” and
        “minor” version while passing through the “patch” version.
        (internal MR 3329, internal MR 3354, internal issue 2254)
    -   Addition: Register Razer vendor ID. (internal MR 3340)
    -   Fix: Add “palm_pose” to “touch_controller_pro” and
        “touch_controller_plus” in XML. (internal MR 3363)
    -   Improvement: Add Schematron rule to avoid triggering edge cases
        of vendor tags ending with X. (internal MR 3341)
    -   Reservation: Reserve extension numbers for a few new EXT
        extensions. (internal MR 3285, internal MR 3292)
    -   Update: Bump version of XR_FB_composition_layer_alpha_blend due
        to spec text clarification. (internal MR 3317)
-   SDK
    -   Addition: Ship open-in-docker.sh script for use building the
        loader design doc. (internal MR 3352, internal issue 2283,
        OpenXR-SDK-Source issue 476)
    -   Fix: Fix references to Docker container in spec build
        instructions and clarify that most parts do not apply to the
        SDK-Source repo. (internal MR 3352, internal issue 2283,
        OpenXR-SDK-Source issue 476)
    -   Fix: Do not load all Android app-supplied layers as explicit,
        but rather as their actual type. (OpenXR-SDK-Source PR 475,
        internal issue 2284)
    -   Improvement: Use new XR_API_VERSION_1_0 and XR_API_VERSION_1_1
        defines. (internal MR 3329, internal issue 2254)
    -   Improvement: Add Android support to “api_dump” and
        “core_validation” API layers. (internal MR 3330)

GitOrigin-RevId: b84815a669b7ab8721ff5117872d8af17b601754
  • Loading branch information
rpavlik committed May 25, 2024
1 parent 2e2c7d5 commit 10bdf86
Show file tree
Hide file tree
Showing 25 changed files with 339 additions and 65 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.1.36.{build}
version: 1.1.37.{build}
image: Visual Studio 2017


Expand Down
5 changes: 3 additions & 2 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,9 @@
*.png binary

# git-lfs big files
*.pdf filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
src/conformance/**/*.png filter=lfs diff=lfs merge=lfs -text

# Shell/python scripts that don't end in .sh
specification/makeAllExts eol=lf
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ generated-includes
cmake_install.cmake
cmake_uninstall.cmake
cmake-build-*
specification/vendor/bundle/

# Marker file for a snapshot build
SNAPSHOT
Expand Down
4 changes: 0 additions & 4 deletions .proclamation.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@
"news_filename": "CHANGELOG.Docs.md",
"template": "changes/template.md",
"sections": {
"Major Update": {
"directory": "changes/major",
"sort_by_prefix": true
},
"Registry": {
"directory": "changes/registry",
"sort_by_prefix": true
Expand Down
50 changes: 50 additions & 0 deletions CHANGELOG.SDK.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,56 @@ 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.1.37 (2024-05-23)

This release primarily adds new defines for easier use of both OpenXR 1.0 and
1.1 with up-to-date headers, some documentation improvements, and improvements
for Android, including support for using the "API Dump" and "Validation" API
layers in your own APK during the development process.

- Registry
- Addition: New `XR_API_VERSION_1_0` and `XR_API_VERSION_1_1` defines to allow
applications to easily specify OpenXR "major" and "minor" version while passing
through the "patch" version.
([internal MR 3329](https://gitlab.khronos.org/openxr/openxr/merge_requests/3329),
[internal MR 3354](https://gitlab.khronos.org/openxr/openxr/merge_requests/3354),
[internal issue 2254](https://gitlab.khronos.org/openxr/openxr/issues/2254))
- Addition: Register Razer vendor ID.
([internal MR 3340](https://gitlab.khronos.org/openxr/openxr/merge_requests/3340))
- Fix: Add "palm_pose" to "touch_controller_pro" and "touch_controller_plus" in
XML.
([internal MR 3363](https://gitlab.khronos.org/openxr/openxr/merge_requests/3363))
- Improvement: Add Schematron rule to avoid triggering edge cases of vendor tags
ending with X.
([internal MR 3341](https://gitlab.khronos.org/openxr/openxr/merge_requests/3341))
- Reservation: Reserve extension numbers for a few new EXT extensions.
([internal MR 3285](https://gitlab.khronos.org/openxr/openxr/merge_requests/3285),
[internal MR 3292](https://gitlab.khronos.org/openxr/openxr/merge_requests/3292))
- Update: Bump version of `XR_FB_composition_layer_alpha_blend` due to spec text
clarification.
([internal MR 3317](https://gitlab.khronos.org/openxr/openxr/merge_requests/3317))
- SDK
- Addition: Ship `open-in-docker.sh` script for use building the loader design
doc.
([internal MR 3352](https://gitlab.khronos.org/openxr/openxr/merge_requests/3352),
[internal issue 2283](https://gitlab.khronos.org/openxr/openxr/issues/2283),
[OpenXR-SDK-Source issue 476](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/476))
- Fix: Fix references to Docker container in spec build instructions and clarify
that most parts do not apply to the SDK-Source repo.
([internal MR 3352](https://gitlab.khronos.org/openxr/openxr/merge_requests/3352),
[internal issue 2283](https://gitlab.khronos.org/openxr/openxr/issues/2283),
[OpenXR-SDK-Source issue 476](https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/476))
- Fix: Do not load all Android app-supplied layers as explicit, but rather as
their actual type.
([OpenXR-SDK-Source PR 475](https://github.com/KhronosGroup/OpenXR-SDK-Source/pull/475),
[internal issue 2284](https://gitlab.khronos.org/openxr/openxr/issues/2284))
- Improvement: Use new `XR_API_VERSION_1_0` and `XR_API_VERSION_1_1` defines.
([internal MR 3329](https://gitlab.khronos.org/openxr/openxr/merge_requests/3329),
[internal issue 2254](https://gitlab.khronos.org/openxr/openxr/issues/2254))
- Improvement: Add Android support to "api_dump" and "core_validation" API
layers.
([internal MR 3330](https://gitlab.khronos.org/openxr/openxr/merge_requests/3330))

## OpenXR SDK 1.1.36 (2024-04-15)

This is a substantial update to the OpenXR specification. The OpenXR loader in
Expand Down
1 change: 0 additions & 1 deletion changes/sdk/pr.475.gh.OpenXR-SDK-Source.md

This file was deleted.

1 change: 1 addition & 0 deletions maintainer-scripts/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ getSDKSourceFilenames() {
checkCodespell \
CMakeLists.txt \
format_file.sh \
open-in-docker.sh \
LICENSE \
openxr-codespell.exclude \
runClangFormat.sh \
Expand Down
33 changes: 33 additions & 0 deletions open-in-docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
# Copyright (c) 2019-2024, The Khronos Group Inc.
# Copyright (c) 2019 Collabora, Ltd.
# SPDX-License-Identifier: Apache-2.0

# Start the docker image named below, for spec generation, etc.
# Mounts this directory as the mountpoint mentioned below,
# and logs you in as a normal user whose user ID and group ID match
# your outside-of-container user, thus avoiding mangling permissions.
# Container is automatically removed when you exit it.

# The docker images used are published here:
# https://hub.docker.com/r/khronosgroup/docker-images/tags
#
# with their dockerfile located at:
# https://github.com/KhronosGroup/DockerContainers

# This image/tag is generated from https://github.com/KhronosGroup/DockerContainers/blob/main/openxr.Dockerfile
# Purpose: Spec (pdf/html) generation
IMAGE_NAME=khronosgroup/docker-images:openxr.20240412
MOUNTPOINT=$(pwd)

set -e
# docker pull $IMAGE_NAME
uid=$(id -u)
gid=$(id -g)
docker run -it --rm \
--entrypoint /root/entrypoint.openxr.sh \
-e "USER_ID=$uid" \
-e "GROUP_ID=$gid" \
-e "CONTAINER_CWD=$MOUNTPOINT" \
-v "$MOUNTPOINT:$MOUNTPOINT" \
$IMAGE_NAME "$@"
17 changes: 13 additions & 4 deletions specification/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,13 @@ SHELL = /usr/bin/env bash
QUIET ?= @
VERYQUIET ?= @
PYTHON ?= python3
ifneq (,$(strip $(BUNDLER)))
ASCIIDOC ?= bundle exec asciidoctor --trace
HEXAPDF ?= bundle exec hexapdf
else
ASCIIDOC ?= asciidoctor
HEXAPDF ?= hexapdf
endif
RM = rm -f
RMRF = rm -rf
MKDIR = mkdir -p
Expand All @@ -33,7 +39,7 @@ endif
VERSIONS := XR_VERSION_1_0 XR_VERSION_1_1 XR_LOADER_VERSION_1_0
VERSIONOPTIONS := $(foreach version,$(VERSIONS),-feature $(version))

SPECREVISION = 1.1.36
SPECREVISION = 1.1.37
REVISION_COMPONENTS = $(subst ., ,$(SPECREVISION))
MAJORMINORVER = $(word 1,$(REVISION_COMPONENTS)).$(word 2,$(REVISION_COMPONENTS))

Expand Down Expand Up @@ -343,7 +349,7 @@ pdfA4: $(PDFA4SPEC)
ASCIIDOCTOR_TARGETS += $(PDFSPEC) $(PDFA4SPEC)

# Target-specific variables and deps customizing the AsciiDoctor rule
$(PDFSPEC) $(PDFA4SPEC): BACKEND_ARGS=--backend pdf --require asciidoctor-pdf -a compress -r ./scripts/pdf-index-customizer.rb
$(PDFSPEC) $(PDFA4SPEC): BACKEND_ARGS=--backend pdf --require asciidoctor-pdf -a compress --require ./scripts/pdf-index-customizer.rb
$(PDFSPEC): PAGESIZE=LETTER
$(PDFA4SPEC): PAGESIZE=A4
$(PDFSPEC) $(PDFA4SPEC): $(COMMONDOCS)
Expand Down Expand Up @@ -647,14 +653,17 @@ $(REGISTRYOUTDIR)/headers/openxr: | $(REGISTRYOUTDIR)/headers
$(QUIET)$(MKDIR) "$@"

release-htmlpdf: html pdf $(REGISTRYOUTDIR)/pdf $(REGISTRYOUTDIR)/html
-asciidoctor-pdf-optimize $(PDFSPEC)
$(QUIET)$(CP) $(PDFSPEC) $(REGISTRYOUTDIR)/pdf/$(SPEC_FILENAME_STEM).pdf
$(ECHO) "[hexapdf] $(call MAKE_RELATIVE,$(REGISTRYOUTDIR)/pdf/$(SPEC_FILENAME_STEM).pdf)"
$(QUIET)$(HEXAPDF) optimize --force $(PDFSPEC) $(REGISTRYOUTDIR)/pdf/$(SPEC_FILENAME_STEM).pdf
$(ECHO) "[cp] $(call MAKE_RELATIVE,$(REGISTRYOUTDIR)/html/$(SPEC_FILENAME_STEM).html)"
$(QUIET)$(CP) $(HTMLSPEC) $(REGISTRYOUTDIR)/html/$(SPEC_FILENAME_STEM).html
.PHONY: release-htmlpdf


release: release-htmlpdf manhtmlpages loader styleguide extprocess | $(REGISTRYOUTDIR) $(REGISTRYOUTDIR)/man
$(ECHO) "[cp] $(call MAKE_RELATIVE,$(REGISTRYOUTDIR))/{styleguide,extprocess,loader}.html"
$(QUIET)$(CP) $(OUTDIR)/styleguide.html $(OUTDIR)/extprocess.html $(OUTDIR)/loader.html $(REGISTRYOUTDIR)
$(ECHO) "[cp] $(REGISTRYOUTDIR)/man/html"
$(QUIET)$(CP) -R $(MANHTMLDIR) $(REGISTRYOUTDIR)/man/html
.PHONY: release

Expand Down
30 changes: 25 additions & 5 deletions specification/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@ SPDX-License-Identifier: CC-BY-4.0

Before building the specification, install the necessary prerequisite tools as described later in this document.

You may instead choose to use the `open-in-docker.sh` script,
which will mount the repository in a container built from an image with all the necessary tools installed.
See that script for more details.
You can find the associated Dockerfile at https://github.com/KhronosGroup/DockerContainers/blob/master/Dockerfile.openxr
You may instead choose to use the `open-in-docker.sh` script, available in the
OpenXR-Docs (spec source) and OpenXR-SDK-Source (SDK, for loader docs build)
repo as well as the internal monorepo. This script which will mount the
repository in a container built from an image with all the necessary tools
installed: these are regularly pushed to Docker Hub. See that script for more
details. You can find the associated Dockerfile at
<https://github.com/KhronosGroup/DockerContainers/blob/main/openxr.Dockerfile>

## Conditional Inclusion of Extensions

Expand Down Expand Up @@ -91,6 +94,10 @@ specified by the Makefile variable `$(OUTDIR)` (by default,
It is recommended to build these targets using a "helper" script from above,
unless you want to only build the core spec without any extensions.

Most of these are not supported if building in `OpenXR-SDK-Source`: this
repository is mostly software, and the only contained AsciiDoc content is the
loader design document source.

These targets are currently supported.

* API spec:
Expand Down Expand Up @@ -119,6 +126,10 @@ For example:
make styleguide
```

Many of these are not supported if building in `OpenXR-SDK-Source`: this
repository is mostly software, and the only contained AsciiDoc content is the
loader design document source.

* "OpenXR Documentation and Extensions" guide (aka Style Guide):
* `styleguide` - Single-file HTML5 in `$(OUTDIR)/styleguide.html`
* OpenXR Extensions Process guide:
Expand Down Expand Up @@ -219,7 +230,8 @@ parts you don't use) completely before trying to install.
> Asciidoctor-pdf versions before `1.5.0.alpha15` have issues with multi-page
valid usage blocks, in that the background only renders for the first page.
`alpha.15` fixes this issue (as well as a few others); do not use prior
versions.
versions. On the other hand, versions later than 1.6.2 break our index
customization script, so 1.6.2 is ideal.

Only the `asciidoctor` and `rouge` gems (and their dependencies) are needed if
you do not intend to build PDF versions of the spec and supporting documents.
Expand All @@ -230,6 +242,14 @@ people submitting MRs with substantial changes to the Specification are
responsible for verifying that their branches build *both* `html` and `pdf`
targets.

The easiest way to get the right version of these gems is to use "bundler":

```sh
bundle install
```

Then, pass `BUNDLER=1` to each `make` (or wrapper script) invocation.

### Platforms and System Packages

#### Windows
Expand Down
74 changes: 72 additions & 2 deletions specification/registry/xr.xml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<tag name="OPPO" author="OPPO" contact="Buyi Xu @fantastxu, Haomiao Jiang @hjiang36"/>
<tag name="PLUTO" author="Pluto VR" contact="Jared Cheshier @Jared, Sophia Baldonado @sophia"/>
<tag name="QCOM" author="Qualcomm Technologies" contact="Armelle @alaine_qcom, Martin Renschler @martinr"/>
<tag name="RZR" author="Razer" contact="Alexandre Hulsken @ahulsken, Eric Vezzoli @EricVezzoli"/>
<tag name="STARBREEZE" author="Starbreeze" contact="David Srour @dsrour"/>
<tag name="TOBII" author="Tobii" contact="Denny Rönngren @denron"/>
<tag name="ULTRALEAP" author="Ultraleap" contact="Robert Blenkinsopp @rblenkinsopp"/>
Expand Down Expand Up @@ -133,7 +134,16 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
updates them automatically by processing a line at a time.
-->
<type category="define">// OpenXR current version number.
#define <name>XR_CURRENT_API_VERSION</name> <type>XR_MAKE_VERSION</type>(1, 1, 36)</type>
#define <name>XR_CURRENT_API_VERSION</name> <type>XR_MAKE_VERSION</type>(1, 1, 37)</type>

<!--
Defines for a fixed major.minor version of OpenXR preserving the shared patch version.
-->
<type category="define">// OpenXR 1.0 version number
#define <name>XR_API_VERSION_1_0</name> <type>XR_MAKE_VERSION</type>(1, 0, XR_VERSION_PATCH(XR_CURRENT_API_VERSION))</type>

<type category="define">// OpenXR 1.1 version number
#define <name>XR_API_VERSION_1_1</name> <type>XR_MAKE_VERSION</type>(1, 1, XR_VERSION_PATCH(XR_CURRENT_API_VERSION))</type>

<!--
NOTE: For avoidance of ambiguity, there should only be 1 <name> tag immediately in
Expand Down Expand Up @@ -7658,6 +7668,7 @@ typedef XrResult (XRAPI_PTR *<name>PFN_xrCreateApiLayerInstance</name>)(
</require>
<require comment="API version">
<type name="XR_CURRENT_API_VERSION"/>
<type name="XR_API_VERSION_1_0"/>
<type name="XR_VERSION_MAJOR"/>
<type name="XR_VERSION_MINOR"/>
<type name="XR_VERSION_PATCH"/>
Expand Down Expand Up @@ -7844,6 +7855,10 @@ typedef XrResult (XRAPI_PTR *<name>PFN_xrCreateApiLayerInstance</name>)(


<feature api="openxr" name="XR_VERSION_1_1" number="1.1">
<require comment="API version">
<type name="XR_API_VERSION_1_1"/>
</require>

<require comment="Promoted from XR_KHR_maintenance1">

<!-- new structs -->
Expand Down Expand Up @@ -8627,7 +8642,7 @@ typedef XrResult (XRAPI_PTR *<name>PFN_xrCreateApiLayerInstance</name>)(

<extension name="XR_FB_composition_layer_alpha_blend" number="42" type="instance" supported="openxr">
<require>
<enum value="2" name="XR_FB_composition_layer_alpha_blend_SPEC_VERSION"/>
<enum value="3" name="XR_FB_composition_layer_alpha_blend_SPEC_VERSION"/>
<enum value="&quot;XR_FB_composition_layer_alpha_blend&quot;" name="XR_FB_COMPOSITION_LAYER_ALPHA_BLEND_EXTENSION_NAME"/>
<type name="XrBlendFactorFB"/>
<type name="XrCompositionLayerAlphaBlendFB"/>
Expand Down Expand Up @@ -10612,6 +10627,12 @@ typedef XrResult (XRAPI_PTR *<name>PFN_xrCreateApiLayerInstance</name>)(
<extend interaction_profile_path="/interaction_profiles/oculus/touch_controller">
<component subpath="/input/palm_ext/pose" type="XR_ACTION_TYPE_POSE_INPUT"/>
</extend>
<extend interaction_profile_path="/interaction_profiles/facebook/touch_controller_pro">
<component subpath="/input/palm_ext/pose" type="XR_ACTION_TYPE_POSE_INPUT"/>
</extend>
<extend interaction_profile_path="/interaction_profiles/meta/touch_controller_plus">
<component subpath="/input/palm_ext/pose" type="XR_ACTION_TYPE_POSE_INPUT"/>
</extend>
<extend interaction_profile_path="/interaction_profiles/valve/index_controller">
<component subpath="/input/palm_ext/pose" type="XR_ACTION_TYPE_POSE_INPUT"/>
</extend>
Expand Down Expand Up @@ -15214,6 +15235,55 @@ typedef XrResult (XRAPI_PTR *<name>PFN_xrCreateApiLayerInstance</name>)(
</require>
</extension>

<extension name="XR_EXT_spatial_anchor" number="739" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_spatial_anchor_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_spatial_anchor&quot;" name="XR_EXT_SPATIAL_ANCHOR_EXTENSION_NAME"/>
</require>
</extension>

<extension name="XR_EXT_spatial_anchor_persistence" number="740" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_spatial_anchor_persistence_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_spatial_anchor_persistence&quot;" name="XR_EXT_SPATIAL_ANCHOR_PERSISTENCE_EXTENSION_NAME"/>
</require>
</extension>

<extension name="XR_EXT_spatial_entity" number="741" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_spatial_entity_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_spatial_entity&quot;" name="XR_EXT_SPATIAL_ENTITY_EXTENSION_NAME"/>
</require>
</extension>

<extension name="XR_EXT_spatial_entity_discovery" number="742" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_spatial_entity_discovery_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_spatial_entity_discovery&quot;" name="XR_EXT_SPATIAL_ENTITY_DISCOVERY_EXTENSION_NAME"/>
</require>
</extension>

<extension name="XR_EXT_extension_743" number="743" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_extension_743_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_extension_743&quot;" name="XR_EXT_EXTENSION_743_EXTENSION_NAME"/>
</require>
</extension>

<extension name="XR_EXT_extension_744" number="744" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_extension_744_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_extension_744&quot;" name="XR_EXT_EXTENSION_744_EXTENSION_NAME"/>
</require>
</extension>

<extension name="XR_EXT_extension_745" number="745" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_extension_745_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_extension_745&quot;" name="XR_EXT_EXTENSION_745_EXTENSION_NAME"/>
</require>
</extension>

</extensions>

</registry>
Loading

0 comments on commit 10bdf86

Please sign in to comment.