Compare commits

...

29 Commits

Author SHA1 Message Date
Andrew Eikum
ebe847d547 update wine 2021-06-04 09:18:11 -05:00
Liam Middlebrook
cc7ad4bd13 proton: Improve find_nvidia_wine_dll_dir() handling of missing files
Additionally split out the find_library() logic for discovery of libdl
so that the case of a missing libdl (no matter how unlikely) is caught
before attempting to load an erroneous CDLL.

Fixes: 4881 (Latest Proton Experimental Fails To Open)

Reviewed-by: Adam Moss <amoss@nvidia.com>
2021-06-02 14:25:21 -07:00
Andrew Eikum
91d99ef236 update vkd3d-proton to v2.3.1-39-gec5b4cce 2021-06-02 14:13:10 -05:00
Andrew Eikum
b58cfb4168 update wine 2021-06-02 14:13:10 -05:00
Liam Middlebrook
2dda8e4e47 proton: Copy DLLs provided by the NVIDIA driver into prefix
The upcoming NVIDIA 470 driver series will introduce a DLL (nvngx.dll)
for the support of NVIDIA DLSS in Proton. This change adds logic for
discovering the location of DLL files provided by the NVIDIA driver, and
copies them to C:\Windows\System32\

Reviewed-by: Adam Moss <amoss@nvidia.com>
2021-06-02 14:13:10 -05:00
Liam Middlebrook
0503dde36c dxvk-nvapi: Add to Proton
Add https://github.com/jp7677/dxvk-nvapi as a submodule. dxvk-nvapi will
not be copied into Proton prefixes by default, but instead will be
controlled via the environment variable PROTON_ENABLE_NVAPI. This is
done to avoid any potential adverse effects of the nvapi DLL existing
in cases where an application may require a function that is not
implemented by dxvk-nvapi.

This new functionality can be enabled by setting the following environment
variable to a value of `1`:
    `PROTON_ENABLE_NVAPI`

This functionality is needed in order to support DLSS within Proton.

Reviewed-by: Adam Moss <amoss@nvidia.com>
2021-06-02 14:13:10 -05:00
Andrew Eikum
5a30a04562 proton: Use DXVK's DXGI by default 2021-06-02 13:10:23 -05:00
Andrew Eikum
622beb876e update dxvk to v1.8.1-137-gf4cbc9ae 2021-06-02 13:10:23 -05:00
Andrew Eikum
22c42cd43d Makefile: Don't consider proton-sdk tags for build name 2021-06-02 13:10:23 -05:00
Giovanni Mascellani
c287de9b0f
docker: Install Capstone development files. 2021-05-28 12:12:02 +02:00
Andrew Eikum
c82f15be51
update wine 2021-05-28 12:12:02 +02:00
Andrew Eikum
c16db69537
update dxvk to v1.8.1-84-gc5108006 2021-05-28 12:12:02 +02:00
Rémi Bernon
c913122960
docker: Add python3-pefile package to SDK image. 2021-05-28 12:12:01 +02:00
Rémi Bernon
df0b2ceaf7
docker: Don't install tini, it's already there now. 2021-05-28 12:12:01 +02:00
Rémi Bernon
a60b494afd
docker: Install libxpresent-dev packages. 2021-05-28 12:12:01 +02:00
Rémi Bernon
c214de457c
docker: Bump steamrt version to 0.20210505.0. 2021-05-28 12:12:01 +02:00
Andrew Eikum
383977e6cb
update wine 2021-05-28 12:12:01 +02:00
Andrew Eikum
9cf3679c0e
update dxvk 2021-05-28 12:12:00 +02:00
Andrew Eikum
9e513d238e
update vkd3d-proton to v2.3.1-8-g8734589e 2021-05-28 12:12:00 +02:00
Andrew Eikum
cbb3d2a0a9
Handle steampipe quirks in deploy builds 2021-05-28 12:12:00 +02:00
Andrew Eikum
e7b8fedd00
Don't ship filenames with colons in them 2021-05-28 12:11:59 +02:00
Andrew Eikum
b263b86894
Don't ship proton dist files in a tarball anymore 2021-05-28 12:11:57 +02:00
Rémi Bernon
dc318f58c0
build: Cleanup target directories before building.
And force copy artifacts after.
2021-05-28 12:10:35 +02:00
Rémi Bernon
c0ea64ec95
build: Use jobs to control xargs parallelism. 2021-05-28 11:11:18 +02:00
Rémi Bernon
46e9ab5bf3
build: Make silent builds actually quiet. 2021-05-28 11:11:18 +02:00
Paul Gofman
b70ae9094b
build: Fixup PE section headers.
For FH4.
2021-05-28 11:11:17 +02:00
Rémi Bernon
ccde2554ce
build: Build with Proton SDK 0.20210505.0-2.
But disable XPresent extension for now.
2021-05-28 11:11:11 +02:00
Paul Gofman
be905ab339 wineopenxr: Update to 1.0.15 registry version. 2021-05-27 21:44:39 +03:00
Andrew Eikum
d611ab8a5f proton: Add PROTON_CRASH_REPORT_DIR runtime config
CW-Bug-Id: #18905
2021-05-27 13:43:12 -05:00
23 changed files with 1148 additions and 348 deletions

3
.gitmodules vendored
View File

@ -31,3 +31,6 @@
[submodule "OpenXR-SDK"]
path = OpenXR-SDK
url = https://github.com/KhronosGroup/OpenXR-SDK
[submodule "dxvk-nvapi"]
path = dxvk-nvapi
url = https://github.com/jp7677/dxvk-nvapi

View File

@ -18,7 +18,7 @@ BUILD_DIR := "build-$(shell echo $(_build_name) | sed -e 's/ /_/g')"
STEAM_DIR := $(HOME)/.steam/root
ifeq ($(build_name),)
DEPLOY_DIR := $(shell git describe --tags --always)
DEPLOY_DIR := $(shell git describe --tags --always --exclude proton-sdk*)
else
DEPLOY_DIR := $(_build_name)
endif
@ -145,19 +145,24 @@ install-internal: downloads
install: install-internal
mkdir -p $(STEAM_DIR)/compatibilitytools.d/
rm -rf $(STEAM_DIR)/compatibilitytools.d/$(_build_name)/files/ #remove proton's internal files, but preserve user_settings etc from top-level
cp -Rf --no-dereference --preserve=mode,links vagrant_share/compatibilitytools.d/$(_build_name) $(STEAM_DIR)/compatibilitytools.d/
echo "Proton installed to your local Steam installation"
redist: | vagrant_share/$(DEPLOY_DIR)
redist: private SHELL := $(VAGRANT_SHELL)
redist: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && cp $(BUILD_DIR)/redist/* /vagrant/$(DEPLOY_DIR) && \
rm -rf /vagrant/$(DEPLOY_DIR)/* && \
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) redist && \
cp -Rf $(BUILD_DIR)/redist/* /vagrant/$(DEPLOY_DIR) && \
echo "Proton build available at vagrant_share/$(DEPLOY_DIR)"
deploy: | vagrant_share/$(DEPLOY_DIR)-deploy
deploy: private SHELL := $(VAGRANT_SHELL)
deploy: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && cp $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)-deploy && \
rm -rf /vagrant/$(DEPLOY_DIR)-deploy/* && \
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) deploy && \
cp -Rf $(BUILD_DIR)/deploy/* /vagrant/$(DEPLOY_DIR)-deploy && \
echo "Proton deployed to vagrant_share/$(DEPLOY_DIR)-deploy"
module: | vagrant_share/$(module)/lib/wine/
@ -176,39 +181,47 @@ dxvk: | vagrant_share/dxvk/lib64/wine/dxvk
dxvk: private SHELL := $(VAGRANT_SHELL)
dxvk: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/dxvk/*.dll /vagrant/dxvk/lib/wine/dxvk/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/dxvk/*.dll /vagrant/dxvk/lib64/wine/dxvk/
cp -f $(BUILD_DIR)/dist/files/lib/wine/dxvk/*.dll /vagrant/dxvk/lib/wine/dxvk/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/dxvk/*.dll /vagrant/dxvk/lib64/wine/dxvk/
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib/wine/nvapi
dxvk-nvapi: | vagrant_share/dxvk-nvapi/lib64/wine/nvapi
dxvk-nvapi: private SHELL := $(VAGRANT_SHELL)
dxvk-nvapi: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) dxvk-nvapi && \
cp -f $(BUILD_DIR)/dist/files/lib/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib/wine/nvapi/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/nvapi/*.dll /vagrant/dxvk-nvapi/lib64/wine/nvapi/
vkd3d-proton: | vagrant_share/vkd3d-proton/lib/wine/vkd3d-proton
vkd3d-proton: | vagrant_share/vkd3d-proton/lib64/wine/vkd3d-proton
vkd3d-proton: private SHELL := $(VAGRANT_SHELL)
vkd3d-proton: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vkd3d-proton && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib/wine/vkd3d-proton/ && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib64/wine/vkd3d-proton/
cp -f $(BUILD_DIR)/dist/files/lib/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib/wine/vkd3d-proton/ && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/vkd3d-proton/*.dll /vagrant/vkd3d-proton/lib64/wine/vkd3d-proton/
lsteamclient: | vagrant_share/lsteamclient/lib/wine
lsteamclient: | vagrant_share/lsteamclient/lib64/wine
lsteamclient: private SHELL := $(VAGRANT_SHELL)
lsteamclient: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) lsteamclient && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib/wine && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib64/wine
cp -f $(BUILD_DIR)/dist/files/lib/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib/wine && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/lsteamclient.dll.so /vagrant/lsteamclient/lib64/wine
vrclient: | vagrant_share/vrclient/lib/wine
vrclient: | vagrant_share/vrclient/lib64/wine
vrclient: private SHELL := $(VAGRANT_SHELL)
vrclient: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) vrclient && \
cp -f $(BUILD_DIR)/dist/dist/lib/wine/vrclient.dll.so /vagrant/vrclient/lib/wine && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/vrclient_x64.dll.so /vagrant/vrclient/lib64/wine
cp -f $(BUILD_DIR)/dist/files/lib/wine/vrclient.dll.so /vagrant/vrclient/lib/wine && \
cp -f $(BUILD_DIR)/dist/files/lib64/wine/vrclient_x64.dll.so /vagrant/vrclient/lib64/wine
wineopenxr: | vagrant_share/wineopenxr/lib/wine
wineopenxr: | vagrant_share/wineopenxr/lib64/wine
wineopenxr: private SHELL := $(VAGRANT_SHELL)
wineopenxr: downloads
$(MAKE) $(MFLAGS) $(MAKEOVERRIDES) -C $(BUILD_DIR)/ $(UNSTRIPPED) $(CCACHE_FLAG) wineopenxr && \
cp -f $(BUILD_DIR)/dist/dist/lib64/wine/wineopenxr.dll.so /vagrant/wineopenxr/lib64/wine
cp -f $(BUILD_DIR)/dist/files/lib64/wine/wineopenxr.dll.so /vagrant/wineopenxr/lib64/wine
vagrant_share/%:
mkdir -p $@

View File

@ -273,12 +273,14 @@ the Wine prefix. Removing the option will revert to the previous behavior.
| | <tt>PROTON_LOG_DIR</tt> | Output log files into the directory specified. Defaults to your home directory. |
| | <tt>PROTON_DUMP_DEBUG_COMMANDS</tt> | When running a game, Proton will write some useful debug scripts for that game into `$PROTON_DEBUG_DIR/proton_$USER/`. |
| | <tt>PROTON_DEBUG_DIR</tt> | Root directory for the Proton debug scripts, `/tmp` by default. |
| | <tt>PROTON_CRASH_REPORT_DIR</tt> | Write crash logs into this directory. Does not clean up old logs, so may eat all your disk space eventually. |
| <tt>wined3d</tt> | <tt>PROTON_USE_WINED3D</tt> | Use OpenGL-based wined3d instead of Vulkan-based DXVK for d3d11, d3d10, and d3d9. |
| <tt>nod3d11</tt> | <tt>PROTON_NO_D3D11</tt> | Disable <tt>d3d11.dll</tt>, for d3d11 games which can fall back to and run better with d3d9. |
| <tt>nod3d10</tt> | <tt>PROTON_NO_D3D10</tt> | Disable <tt>d3d10.dll</tt> and <tt>dxgi.dll</tt>, for d3d10 games which can fall back to and run better with d3d9. |
| <tt>noesync</tt> | <tt>PROTON_NO_ESYNC</tt> | Do not use eventfd-based in-process synchronization primitives. |
| <tt>nofsync</tt> | <tt>PROTON_NO_FSYNC</tt> | Do not use futex-based in-process synchronization primitives. (Automatically disabled on systems with no `FUTEX_WAIT_MULTIPLE` support.) |
| <tt>noxim</tt> | <tt>PROTON_NO_XIM</tt> | Enabled by default. Do not attempt to use XIM (X Input Methods) support. XIM support is known to cause crashes with libx11 older than version 1.7. |
| <tt>enablenvapi</tt> | <tt>PROTON_ENABLE_NVAPI</tt> | Enable NVIDIA's NVAPI GPU support library. |
| <tt>nativevulkanloader</tt> | | Use the Vulkan loader shipped with the game instead of Proton's built-in Vulkan loader. This breaks VR support, but is required by a few games. |
| <tt>forcelgadd</tt> | <tt>PROTON_FORCE_LARGE_ADDRESS_AWARE</tt> | Force Wine to enable the LARGE_ADDRESS_AWARE flag for all executables. Enabled by default. |
| <tt>heapdelayfree</tt>| <tt>PROTON_HEAP_DELAY_FREE</tt>| Delay freeing some memory, to work around application use-after-free bugs. |

View File

@ -1,6 +1,15 @@
SRC := $(abspath $(SRCDIR))
OBJ := $(abspath $(CURDIR))
ifeq ($(filter s,$(MAKEFLAGS)),s)
MAKEFLAGS += --quiet --no-print-directory
--quiet? := --quiet
else
MFLAGS += V=1 VERBOSE=1
-v? := -v
--verbose? := --verbose
endif
##
## Nested make
##
@ -104,6 +113,8 @@ container-build:
all32 $(MAKECMDGOALS32): container-build
all64 $(MAKECMDGOALS64): container-build
else
J = $(patsubst -j%,%,$(filter -j%,$(MAKEFLAGS)))
endif
@ -125,7 +136,7 @@ endif
##
DST_BASE := $(OBJ)/dist
DST_DIR := $(DST_BASE)/dist
DST_DIR := $(DST_BASE)/files
DST_LIBDIR32 := $(DST_DIR)/lib
DST_LIBDIR64 := $(DST_DIR)/lib64
DEPLOY_DIR := ./deploy
@ -167,6 +178,7 @@ CARGO_BUILD_ARG := --release
COMPAT_MANIFEST_TEMPLATE := $(SRCDIR)/compatibilitytool.vdf.template
LICENSE := $(SRCDIR)/dist.LICENSE
OFL_LICENSE := $(SRCDIR)/fonts/liberation-fonts/LICENSE
STEAMPIPE_FIXUPS_PY := $(SRCDIR)/steampipe_fixups.py
GECKO_VER := 2.47.2
GECKO32_TARBALL := wine-gecko-$(GECKO_VER)-x86.tar.xz
@ -253,8 +265,9 @@ DIST_TARGETS := $(DIST_COPY_TARGETS) $(DIST_OVR32) $(DIST_OVR64) \
$(DIST_GECKO32) $(DIST_GECKO64) $(DIST_WINEMONO) \
$(DIST_COMPAT_MANIFEST) $(DIST_LICENSE) $(DIST_TOOLMANIFEST) $(DIST_OFL_LICENSE) $(DIST_FONTS)
DEPLOY_COPY_TARGETS := $(DIST_COPY_TARGETS) $(DIST_VERSION) $(DIST_LICENSE) $(DIST_TOOLMANIFEST) $(DIST_OFL_LICENSE)
REDIST_COPY_TARGETS := $(DEPLOY_COPY_TARGETS) $(DIST_COMPAT_MANIFEST)
BASE_COPY_TARGETS := $(DIST_COPY_TARGETS) $(DIST_VERSION) $(DIST_LICENSE) $(DIST_TOOLMANIFEST) $(DIST_OFL_LICENSE) $(DST_DIR)
DEPLOY_COPY_TARGETS := $(BASE_COPY_TARGETS) $(STEAMPIPE_FIXUPS_PY)
REDIST_COPY_TARGETS := $(BASE_COPY_TARGETS) $(DIST_COMPAT_MANIFEST)
$(DIST_LICENSE): $(LICENSE)
cp -a $< $@
@ -343,36 +356,36 @@ dist: $(DIST_TARGETS) all-dist dist_wineopenxr | $(DST_DIR)
echo `date '+%s'` `GIT_DIR=$(abspath $(SRCDIR)/.git) git describe --tags` > $(DIST_VERSION)
deploy: dist | $(filter-out dist deploy install redist,$(MAKECMDGOALS))
mkdir -p $(DEPLOY_DIR) && \
cp -a $(DEPLOY_COPY_TARGETS) $(DEPLOY_DIR) && \
tar -C $(DST_DIR) -c . > $(DEPLOY_DIR)/proton_dist.tar
@echo "Created deployment archive at "$(DEPLOY_DIR)"/proton_dist.tar"
mkdir -p $(DEPLOY_DIR)
cp -af --no-dereference --preserve=mode,links $(DEPLOY_COPY_TARGETS) $(DEPLOY_DIR)
python3 $(STEAMPIPE_FIXUPS_PY) process $(DEPLOY_DIR)
install: dist | $(filter-out dist deploy install redist,$(MAKECMDGOALS))
if [ ! -d $(STEAM_DIR) ]; then echo >&2 "!! "$(STEAM_DIR)" does not exist, cannot install"; return 1; fi
mkdir -p $(STEAM_DIR)/compatibilitytools.d/$(BUILD_NAME)
cp -rf --no-dereference --preserve=mode,links $(DST_BASE)/* $(STEAM_DIR)/compatibilitytools.d/$(BUILD_NAME)
cp -f $(DIST_VERSION) $(STEAM_DIR)/compatibilitytools.d/$(BUILD_NAME)/dist/
cp -af --no-dereference --preserve=mode,links $(DST_BASE)/* $(STEAM_DIR)/compatibilitytools.d/$(BUILD_NAME)
@echo "Installed Proton to "$(STEAM_DIR)/compatibilitytools.d/$(BUILD_NAME)
@echo "You may need to restart Steam to select this tool"
redist: dist | $(filter-out dist deploy install redist,$(MAKECMDGOALS))
mkdir -p $(REDIST_DIR)
cp -a $(REDIST_COPY_TARGETS) $(REDIST_DIR)
tar -C $(DST_DIR) -c . | gzip -c -1 > $(REDIST_DIR)/proton_dist.tar.gz
@echo "Created redistribution tarball at "$(REDIST_DIR)"/proton_dist.tar.gz"
cp -af --no-dereference --preserve=mode,links $(REDIST_COPY_TARGETS) $(REDIST_DIR)
.PHONY: module32 module64 module
module32: private SHELL := $(CONTAINER_SHELL)
module32: CONTAINERGOALS := $(CONTAINERGOALS) wine-configure32
module32: | all-source wine-configure32
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ32)/dlls/$(module)
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ32)/dlls/$(module) && \
find $(WINE_OBJ32)/dlls/$(module) -type f -name '*.dll' -printf '%p\0' | \
xargs $(--verbose?) -0 -r -P$(J) -n1 $(SRC)/make/pefixup.py
module64: private SHELL := $(CONTAINER_SHELL)
module64: CONTAINERGOALS := $(CONTAINERGOALS) wine-configure64
module64: | all-source wine-configure64
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ64)/dlls/$(module)
+$(MAKE) -j$(J) $(filter -j%,$(MAKEFLAGS)) $(MFLAGS) $(MAKEOVERRIDES) -C $(WINE_OBJ64)/dlls/$(module) && \
find $(WINE_OBJ64)/dlls/$(module) -type f -name '*.dll' -printf '%p\0' | \
xargs $(--verbose?) -0 -r -P$(J) -n1 $(SRC)/make/pefixup.py
module: CONTAINERGOALS := $(CONTAINERGOALS) wine-configure
module: | all-source wine-configure
@ -633,6 +646,7 @@ WINE_SOURCE_ARGS = \
WINE_CONFIGURE_ARGS = \
--with-mingw \
--without-xpresent \
--disable-tests
WINE_CONFIGURE_ARGS64 = --enable-win64
@ -717,6 +731,32 @@ $(OBJ)/.dxvk-post-build32:
touch $@
##
## dxvk-nvapi
##
DXVK_NVAPI_MESON_ARGS32 = \
--bindir=$(DXVK_NVAPI_DST32)/lib/wine/nvapi \
--cross-file=$(DXVK_NVAPI_OBJ32)/build-win32.txt
DXVK_NVAPI_MESON_ARGS64 = \
--bindir=$(DXVK_NVAPI_DST64)/lib64/wine/nvapi \
--cross-file=$(DXVK_NVAPI_OBJ64)/build-win64.txt
$(eval $(call rules-source,dxvk-nvapi,$(SRCDIR)/dxvk-nvapi))
$(eval $(call rules-meson,dxvk-nvapi,32))
$(eval $(call rules-meson,dxvk-nvapi,64))
$(OBJ)/.dxvk-nvapi-post-build64:
mkdir -p "$(DST_DIR)"/lib64/wine/nvapi
rm -f "$(DST_DIR)"/lib64/wine/nvapi/version && if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- dxvk-nvapi ) > "$(DST_DIR)"/lib64/wine/nvapi/version; fi
touch $@
$(OBJ)/.dxvk-nvapi-post-build32:
mkdir -p "$(DST_DIR)"/lib/wine/nvapi
rm -f "$(DST_DIR)"/lib/wine/nvapi/version && if test -e $(SRCDIR)/.git; then ( cd $(SRCDIR) && git submodule status -- dxvk-nvapi ) > "$(DST_DIR)"/lib/wine/nvapi/version; fi
touch $@
##
## vkd3d-proton
##

View File

@ -97,7 +97,7 @@ function configure() {
#
arg_steamrt="soldier"
arg_protonsdk_image="registry.gitlab.steamos.cloud/proton/soldier/sdk:0.20210126.1-1"
arg_protonsdk_image="registry.gitlab.steamos.cloud/proton/soldier/sdk:0.20210505.0-2"
arg_no_protonsdk=""
arg_build_name=""
arg_docker_opts=""

View File

@ -73,6 +73,14 @@ def setup_dll_symlinks(default_pfx_dir, dist_dir):
os.unlink(filename)
make_relative_symlink(target, filename)
#steampipe can't handle filenames with colons, so we remove them here
#and restore them in the proton script
def fixup_drive_links(default_pfx_dir):
for walk_dir, dirs, files in os.walk(os.path.join(default_pfx_dir, "dosdevices")):
for dir_ in dirs:
if ":" in dir_:
os.remove(os.path.join(walk_dir, dir_))
def make_default_pfx(default_pfx_dir, dist_dir, runtime):
local_env = dict(os.environ)
@ -96,6 +104,7 @@ def make_default_pfx(default_pfx_dir, dist_dir, runtime):
env=local_env, check=True)
setup_dll_symlinks(default_pfx_dir, dist_dir)
fixup_drive_links(default_pfx_dir)
if __name__ == '__main__':
import sys

View File

@ -1,4 +1,4 @@
STEAMRT_VERSION = 0.20210126.1
STEAMRT_VERSION = 0.20210505.0
STEAMRT_URLBASE = registry.gitlab.steamos.cloud
PROTONSDK_URLBASE = $(STEAMRT_URLBASE)/proton/soldier/sdk

View File

@ -52,9 +52,14 @@ RUN bash -c 'mkdir -p /usr/lib/ccache && ls /usr/bin/{,*-}{cc,c++,gcc,g++}{,-[0-
ENV PATH=/usr/lib/ccache:$PATH
RUN apt-get install -y \
tini \
libxpresent-dev \
libxpresent-dev:i386 \
python3-pefile \
libcapstone-dev \
libcapstone-dev:i386 \
&& rm -rf /opt/usr/share/doc /opt/usr/share/info /opt/usr/share/man \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/usr/bin/tini-static", "-s", "-g", "--"]
CMD ["/bin/bash"]

2
dxvk

@ -1 +1 @@
Subproject commit f8a4ca555a6e5d89f5162a042bbae550902f4e49
Subproject commit ed3aacadb27918e7988e479a275088a78e18cfa8

1
dxvk-nvapi Submodule

@ -0,0 +1 @@
Subproject commit 8b3987f6707946b9202eda3dda38632197d2286b

25
make/pefixup.py Executable file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env python3
import sys
import os
import stat
import pefile
for path in sys.argv[1:]:
pe = pefile.PE(path)
for section in pe.sections:
if section.Name.decode("utf-8")[0:5] == ".text":
section.Characteristics &= ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_CNT_INITIALIZED_DATA']
section.Characteristics &= ~pefile.SECTION_CHARACTERISTICS['IMAGE_SCN_ALIGN_MASK']
pe.OPTIONAL_HEADER.CheckSum = pe.generate_checksum()
perm = stat.S_IMODE(os.stat(path).st_mode)
if (perm & stat.S_IWUSR) == 0:
os.chmod(path, perm | stat.S_IWUSR)
pe.write(path)
if (perm & stat.S_IWUSR) == 0:
os.chmod(path, perm)

View File

@ -12,7 +12,7 @@ $$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/configure.ac
rm -rf "$$($(2)_OBJ$(3))/config.cache"
cd "$$($(2)_OBJ$(3))" && env $$($(2)_ENV$(3)) \
$$($(2)_SRC)/configure -C \
$$($(2)_SRC)/configure $(--quiet?) -C \
--prefix="$$($(2)_DST$(3))" \
--libdir="$$($(2)_DST$(3))/lib$(subst 32,,$(3))" \
$$($(2)_ENV$(3)) \

View File

@ -55,26 +55,32 @@ ifneq ($(UNSTRIPPED_BUILD),)
$$(OBJ)/.$(1)-dist$(3):
@echo ":: installing $(3)bit $(1)..." >&2
mkdir -p $$($(2)_LIBDIR$(3))/ $$(DST_LIBDIR$(3))/
cd $$($(2)_LIBDIR$(3)) && find -type f -printf '$$(DST_LIBDIR$(3))/%h\0' | sort -z | uniq -z | xargs --verbose -0 -r -P8 mkdir -p
cd $$($(2)_LIBDIR$(3)) && find -type l -printf '%p\0$$(DST_LIBDIR$(3))/%p\0' | xargs --verbose -0 -r -P8 -n2 cp -a
cd $$($(2)_LIBDIR$(3)) && find -type f -printf '$$(DST_LIBDIR$(3))/%h\0' | sort -z | uniq -z | xargs $(--verbose?) -0 -r -P$$(J) mkdir -p
cd $$($(2)_LIBDIR$(3)) && find -type l -printf '%p\0$$(DST_LIBDIR$(3))/%p\0' | xargs $(--verbose?) -0 -r -P$$(J) -n2 cp -a
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.def' ')' \
-printf '--only-keep-debug\0%p\0$$(DST_LIBDIR$(3))/%p.debug\0' | \
xargs --verbose -0 -r -P8 -n3 objcopy --file-alignment=4096
xargs $(--verbose?) -0 -r -P$$(J) -n3 objcopy --file-alignment=4096
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.def' ')' \
-printf '--add-gnu-debuglink=$$(DST_LIBDIR$(3))/%p.debug\0--strip-debug\0%p\0$$(DST_LIBDIR$(3))/%p\0' | \
xargs --verbose -0 -r -P8 -n4 objcopy --file-alignment=4096
xargs $(--verbose?) -0 -r -P$$(J) -n4 objcopy --file-alignment=4096
cd $$($(2)_LIBDIR$(3)) && find -type f -name '*.dll' \
-printf '$$(DST_LIBDIR$(3))/%p\0' | \
xargs $(--verbose?) -0 -r -P$$(J) -n1 $$(SRC)/make/pefixup.py
touch $$@
else
$$(OBJ)/.$(1)-dist$(3):
@echo ":: installing $(3)bit $(1)..." >&2
mkdir -p $$($(2)_LIBDIR$(3))/ $$(DST_LIBDIR$(3))/
cd $$($(2)_LIBDIR$(3)) && find -type f -printf '$$(DST_LIBDIR$(3))/%h\0' | sort -z | uniq -z | xargs --verbose -0 -r -P8 mkdir -p
cd $$($(2)_LIBDIR$(3)) && find -type l -printf '%p\0$$(DST_LIBDIR$(3))/%p\0' | xargs --verbose -0 -r -P8 -n2 cp -a
cd $$($(2)_LIBDIR$(3)) && find -type f -printf '$$(DST_LIBDIR$(3))/%h\0' | sort -z | uniq -z | xargs $(--verbose?) -0 -r -P$$(J) mkdir -p
cd $$($(2)_LIBDIR$(3)) && find -type l -printf '%p\0$$(DST_LIBDIR$(3))/%p\0' | xargs $(--verbose?) -0 -r -P$$(J) -n2 cp -a
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.def' ')' \
-printf '$$(DST_LIBDIR$(3))/%p.debug\0' | xargs --verbose -0 -r -P8 rm -f
-printf '$$(DST_LIBDIR$(3))/%p.debug\0' | xargs $(--verbose?) -0 -r -P$$(J) rm -f
cd $$($(2)_LIBDIR$(3)) && find -type f -not '(' -iname '*.pc' -or -iname '*.cmake' -or -iname '*.a' -or -iname '*.def' ')' \
-printf '--strip-debug\0%p\0$$(DST_LIBDIR$(3))/%p\0' | \
xargs --verbose -0 -r -P8 -n3 objcopy --file-alignment=4096
xargs $(--verbose?) -0 -r -P$$(J) -n3 objcopy --file-alignment=4096
cd $$($(2)_LIBDIR$(3)) && find -type f -name '*.dll' \
-printf '$$(DST_LIBDIR$(3))/%p\0' | \
xargs $(--verbose?) -0 -r -P$$(J) -n1 $$(SRC)/make/pefixup.py
touch $$@
endif
endif

View File

@ -31,7 +31,7 @@ $$(OBJ)/.$(1)-configure$(3): $$($(2)_SRC)/meson.build
$$(OBJ)/.$(1)-build$(3):
@echo ":: building $(3)bit $(1)..." >&2
env $$($(2)_ENV$(3)) \
ninja $$(filter -j%,$$(MAKEFLAGS)) -C "$$($(2)_OBJ$(3))" install
ninja $$(filter -j%,$$(MAKEFLAGS)) -C "$$($(2)_OBJ$(3))" install $(-v?)
touch $$@
endif
endef

View File

@ -25,7 +25,7 @@ $$(OBJ)/.$(1)-source: $$(shell echo -n 'syncing $(1)... ' >&2 && \
rsync --dry-run --filter=:C --exclude '*~' --exclude .git $$($(2)_SOURCE_ARGS) --info=name -Oarx --delete "$$(abspath $(3))/" "$$($(2)_SRC)" | \
grep -v -e ^$$$$ | grep -q ^ && echo $(1)-rebuild && \
echo 'done, dirty' >&2 || echo 'done' >&2)
rsync --filter=:C --exclude '*~' --exclude .git $$($(2)_SOURCE_ARGS) --info=name -Oarx --delete "$$(abspath $(3))/" "$$($(2)_SRC)"
rsync --filter=:C --exclude '*~' --exclude .git $$($(2)_SOURCE_ARGS) --info=name -Oarx --delete "$$(abspath $(3))/" "$$($(2)_SRC)" $(--quiet?)
touch $$@
$$(OBJ)/.$(1)-post-source: $$(OBJ)/.$(1)-source

203
proton
View File

@ -15,6 +15,16 @@ import subprocess
import sys
import tarfile
from ctypes import CDLL
from ctypes import POINTER
from ctypes import Structure
from ctypes import addressof
from ctypes import cast
from ctypes import c_int
from ctypes import c_char_p
from ctypes import c_void_p
from ctypes.util import find_library
from filelock import FileLock
#To enable debug logging, copy "user_settings.sample.py" to "user_settings.py"
@ -127,6 +137,93 @@ def try_get_game_library_dir():
return None
# Function to find the installed location of DLL files for use by Wine/Proton
# from the NVIDIA Linux driver
#
# See https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/issues/71 for
# background on the chosen method of DLL discovery.
#
# On success, returns a str() of the absolute-path to the directory at which DLL
# files are stored
#
# On failure, returns None
def find_nvidia_wine_dll_dir():
try:
libdl_soname = find_library("dl")
# If we couldn't determine the proper soname for libdl, bail out.
if libdl_soname is None:
return None
libdl = CDLL(libdl_soname)
except (FileNotFoundError, OSError):
return None
try:
libglx_nvidia = CDLL("libGLX_nvidia.so.0")
except OSError:
return None
# from dlinfo(3)
#
# struct link_map {
# ElfW(Addr) l_addr; /* Difference between the
# address in the ELF file and
# the address in memory */
# char *l_name; /* Absolute pathname where
# object was found */
# ElfW(Dyn) *l_ld; /* Dynamic section of the
# shared object */
# struct link_map *l_next, *l_prev;
# /* Chain of loaded objects */
#
# /* Plus additional fields private to the
# implementation */
# };
RTLD_DI_LINKMAP = 2
class link_map(Structure):
_fields_ = [("l_addr", c_void_p), ("l_name", c_char_p), ("l_ld", c_void_p)]
# from dlinfo(3)
#
# int dlinfo (void *restrict handle, int request, void *restrict info)
dlinfo_func = libdl.dlinfo
dlinfo_func.argtypes = c_void_p, c_int, c_void_p
dlinfo_func.restype = c_int
# Allocate a link_map object
glx_nvidia_info_ptr = POINTER(link_map)()
# Run dlinfo(3) on the handle to libGLX_nvidia.so.0, storing results at the
# address represented by glx_nvidia_info_ptr
if dlinfo_func(libglx_nvidia._handle,
RTLD_DI_LINKMAP,
addressof(glx_nvidia_info_ptr)) != 0:
return None
# Grab the contents our of our pointer
glx_nvidia_info = cast(glx_nvidia_info_ptr, POINTER(link_map)).contents
# Decode the path to our library to a str()
if glx_nvidia_info.l_name is None:
return None
try:
libglx_nvidia_path = os.fsdecode(glx_nvidia_info.l_name)
except UnicodeDecodeError:
return None
# Follow any symlinks to the actual file
libglx_nvidia_realpath = os.path.realpath(libglx_nvidia_path)
# Go to the relative path ./nvidia/wine from our library
nvidia_wine_dir = os.path.join(os.path.dirname(libglx_nvidia_realpath), "nvidia", "wine")
# Check that nvngx.dll exists here, or fail
if os.path.exists(os.path.join(nvidia_wine_dir, "nvngx.dll")):
return nvidia_wine_dir
return None
EXT2_IOC_GETFLAGS = 0x80086601
EXT2_IOC_SETFLAGS = 0x40086602
@ -149,14 +246,14 @@ def set_dir_casefold_bit(dir_path):
class Proton:
def __init__(self, base_dir):
self.base_dir = base_dir + "/"
self.dist_dir = self.path("dist/")
self.bin_dir = self.path("dist/bin/")
self.lib_dir = self.path("dist/lib/")
self.lib64_dir = self.path("dist/lib64/")
self.fonts_dir = self.path("dist/share/fonts/")
self.wine_fonts_dir = self.path("dist/share/wine/fonts/")
self.dist_dir = self.path("files/")
self.bin_dir = self.path("files/bin/")
self.lib_dir = self.path("files/lib/")
self.lib64_dir = self.path("files/lib64/")
self.fonts_dir = self.path("files/share/fonts/")
self.wine_fonts_dir = self.path("files/share/wine/fonts/")
self.version_file = self.path("version")
self.default_pfx_dir = self.path("dist/share/default_pfx/")
self.default_pfx_dir = self.path("files/share/default_pfx/")
self.user_settings_file = self.path("user_settings.py")
self.wine_bin = self.bin_dir + "wine"
self.wineserver_bin = self.bin_dir + "wineserver"
@ -165,28 +262,34 @@ class Proton:
def path(self, d):
return self.base_dir + d
def need_tarball_extraction(self):
'''Checks if the proton_dist tarball archive must be extracted. Returns true if extraction is needed, false otherwise'''
return not os.path.exists(self.dist_dir) or \
not os.path.exists(self.path("dist/version")) or \
not filecmp.cmp(self.version_file, self.path("dist/version"))
def cleanup_legacy_dist(self):
old_dist_dir = self.path("dist/")
if os.path.exists(old_dist_dir):
with self.dist_lock:
if os.path.exists(old_dist_dir):
shutil.rmtree(old_dist_dir)
def extract_tarball(self):
with self.dist_lock:
if self.need_tarball_extraction():
if os.path.exists(self.dist_dir):
shutil.rmtree(self.dist_dir)
tar = None
for sf in ["", ".xz", ".bz2", ".gz"]:
if os.path.exists(self.path("proton_dist.tar" + sf)):
tar = tarfile.open(self.path("proton_dist.tar" + sf), mode="r:*")
break
if not tar:
log("No proton_dist tarball??")
sys.exit(1)
tar.extractall(path=self.dist_dir)
tar.close()
try_copy(self.version_file, self.dist_dir)
def do_steampipe_fixups(self):
fixups_json = self.path("steampipe_fixups.json")
fixups_mtime = self.path("files/steampipe_fixups_mtime")
if os.path.exists(fixups_json):
with self.dist_lock:
import steampipe_fixups
current_fixup_mtime = None
if os.path.exists(fixups_mtime):
with open(fixups_mtime, "r") as f:
current_fixup_mtime = f.readline().strip()
new_fixup_mtime = getmtimestr(fixups_json)
if current_fixup_mtime != new_fixup_mtime:
result_code = steampipe_fixups.do_restore(self.base_dir, fixups_json)
if result_code == 0:
with open(fixups_mtime, "w") as f:
f.write(new_fixup_mtime + "\n")
def missing_default_prefix(self):
'''Check if the default prefix dir is missing. Returns true if missing, false if present'''
@ -432,11 +535,18 @@ class CompatData:
if not os.path.exists(self.prefix_dir + "/user.reg"):
self.copy_pfx()
if not os.path.lexists(self.prefix_dir + "/dosdevices/c:"):
os.symlink("../drive_c", self.prefix_dir + "/dosdevices/c:")
if not os.path.lexists(self.prefix_dir + "/dosdevices/z:"):
os.symlink("/", self.prefix_dir + "/dosdevices/z:")
# collect configuration info
steamdir = os.environ["STEAM_COMPAT_CLIENT_INSTALL_PATH"]
use_wined3d = "wined3d" in g_session.compat_config
use_dxvk_dxgi = "WINEDLLOVERRIDES" in g_session.env and "dxgi=n" in g_session.env["WINEDLLOVERRIDES"]
use_dxvk_dxgi = not ("WINEDLLOVERRIDES" in g_session.env and "dxgi=b" in g_session.env["WINEDLLOVERRIDES"])
use_nvapi = 'enablenvapi' in g_session.compat_config
builtin_dll_copy = os.environ.get("PROTON_DLL_COPY",
#dxsetup redist
@ -481,6 +591,7 @@ class CompatData:
str(use_wined3d),
str(use_dxvk_dxgi),
builtin_dll_copy,
str(use_nvapi),
))
if old_ver == CURRENT_PREFIX_VERSION:
@ -556,7 +667,6 @@ class CompatData:
dxvkfiles = ["dxvk_config", "d3d11", "d3d10", "d3d10core", "d3d10_1", "d3d9"]
wined3dfiles = []
#if the user asked for dxvk's dxgi (dxgi=n), then copy it into place
if use_dxvk_dxgi:
dxvkfiles.append("dxgi")
else:
@ -575,6 +685,31 @@ class CompatData:
self.prefix_dir + "drive_c/windows/syswow64/" + f + ".dll")
g_session.dlloverrides[f] = "n"
# If the user requested the NVAPI be available, copy it into place.
# If they didn't, clean up any stray nvapi DLLs.
if use_nvapi:
try_copy(g_proton.lib64_dir + "wine/nvapi/nvapi64.dll",
self.prefix_dir + "drive_c/windows/system32/nvapi64.dll")
try_copy(g_proton.lib_dir + "wine/nvapi/nvapi.dll",
self.prefix_dir + "drive_c/windows/syswow64/nvapi.dll")
g_session.dlloverrides["nvapi64"] = "n"
g_session.dlloverrides["nvapi"] = "n"
else:
nvapi64_dll = self.prefix_dir + "drive_c/windows/system32/nvapi64.dll"
nvapi32_dll = self.prefix_dir + "drive_c/windows/syswow64/nvapi.dll"
if os.path.exists(nvapi64_dll):
os.unlink(nvapi64_dll)
if os.path.exists(nvapi32_dll):
os.unlink(nvapi32_dll)
# Try to detect known DLLs that ship with the NVIDIA Linux Driver
# and add them into the prefix
nvidia_wine_dll_dir = find_nvidia_wine_dll_dir()
if nvidia_wine_dll_dir:
for dll in ["_nvngx.dll", "nvngx.dll"]:
try_copy(nvidia_wine_dll_dir + "/" + dll,
self.prefix_dir + "drive_c/windows/system32/" + dll)
try_copy(g_proton.lib64_dir + "wine/vkd3d-proton/d3d12.dll",
self.prefix_dir + "drive_c/windows/system32/d3d12.dll")
try_copy(g_proton.lib_dir + "wine/vkd3d-proton/d3d12.dll",
@ -740,6 +875,7 @@ class Session:
self.check_environment("PROTON_SET_GAME_DRIVE", "gamedrive")
self.check_environment("PROTON_NO_XIM", "noxim")
self.check_environment("PROTON_HEAP_DELAY_FREE", "heapdelayfree")
self.check_environment("PROTON_ENABLE_NVAPI", "enablenvapi")
if "noesync" in self.compat_config:
self.env.pop("WINEESYNC", "")
@ -779,6 +915,9 @@ class Session:
if "hidenvgpu" in self.compat_config:
self.env["WINE_HIDE_NVIDIA_GPU"] = "1"
if "PROTON_CRASH_REPORT_DIR" in self.env:
self.env["WINE_CRASH_REPORT_DIR"] = self.env["PROTON_CRASH_REPORT_DIR"]
if "SteamGameId" in self.env:
if self.env["WINEDEBUG"] != "-all":
basedir = self.env.get("PROTON_LOG_DIR", os.environ["HOME"])
@ -967,8 +1106,8 @@ if __name__ == "__main__":
g_proton = Proton(os.path.dirname(sys.argv[0]))
if g_proton.need_tarball_extraction():
g_proton.extract_tarball()
g_proton.cleanup_legacy_dist()
g_proton.do_steampipe_fixups()
g_compatdata = CompatData(os.environ["STEAM_COMPAT_DATA_PATH"])

116
steampipe_fixups.py Executable file
View File

@ -0,0 +1,116 @@
#!/usr/bin/env python3
#Steampipe doesn't support certain unix-y things which may be required by
#native Linux applications. This file will process a directory of Linux files
#and store the file properties into a manifest file. After a round trip through
#Steampipe, the original file properties can be restored using this same
#script.
import json
import os
import secrets
import stat
DEFAULT_MANIFEST_NAME = "steampipe_fixups.json"
def usage():
print("Usage:")
print("\t" + sys.argv[0] + "\tprepare\t<path to directory to process>\t[manifest output file]")
print("\t\tProcess the given path and output the manifest file to the given path, or <path/" + DEFAULT_MANIFEST_NAME + "> if unspecified.")
print("")
print("\t" + sys.argv[0] + "\trestore\t<path to directory to process>\t[manifest file]")
print("\t\tRestore the given path using the manifest file, or <path/" + DEFAULT_MANIFEST_NAME + "> if unspecified.")
empty_dirs = []
no_write_paths = []
def canonicalize(path, prefix):
return path.replace(prefix, "", 1).lstrip('/')
def process_dir(path):
for root, subdirs, files in os.walk(path):
if len(subdirs) == 0 and len(files) == 0:
empty_dirs.append(canonicalize(root, path))
for file_ in files:
this_file = os.path.join(root, file_)
stat_result = os.lstat(this_file)
if (stat_result.st_mode & stat.S_IWUSR) == 0:
no_write_paths.append(canonicalize(this_file, path))
return 0
def write_manifest(manifest):
out = open(manifest, "w")
json.dump(
{
"id": str(secrets.randbits(32)), #we need steampipe to update this file for every build
"empty_dirs": empty_dirs,
"no_write_paths": no_write_paths,
},
out,
indent = 4,
sort_keys = True
)
return 0
def do_process(path, manifest):
if os.path.exists(manifest):
os.remove(manifest)
ret = process_dir(path)
if ret != 0:
return ret
#output should be deterministic
empty_dirs.sort()
no_write_paths.sort()
ret = write_manifest(manifest)
if ret != 0:
return ret
return 0
def do_restore(path, manifest):
loaded = json.load(open(manifest, "r"))
empty_dirs = loaded["empty_dirs"]
no_write_paths = loaded["no_write_paths"]
for empty_dir in empty_dirs:
try:
os.makedirs(os.path.join(path, empty_dir))
except OSError:
#already exists
pass
for file_ in no_write_paths:
this_file = os.path.join(path, file_)
stat_result = os.lstat(this_file)
os.chmod(this_file,
stat_result.st_mode & ~(stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH))
return 0
if __name__ == '__main__':
import sys
if len(sys.argv) < 3 or len(sys.argv) > 4:
usage()
sys.exit(1)
verb = sys.argv[1]
path = sys.argv[2]
if len(sys.argv) >= 4:
manifest = sys.argv[3]
else:
manifest = os.path.join(path, DEFAULT_MANIFEST_NAME)
if verb == "process":
sys.exit(do_process(path, manifest))
if verb == "restore":
sys.exit(do_restore(path, manifest))
usage()
sys.exit(1)

@ -1 +1 @@
Subproject commit 3ed3526332f53d7d35cf1b685fa8096b01f26ff0
Subproject commit ec5b4ccecf799e7593dd3c6e8b13dc4f04e77228

2
wine

@ -1 +1 @@
Subproject commit f94b0f7590d43bb3e6aefcc6e16cf69bffc25122
Subproject commit 2bde7d53b3874dfc6f3066819e00da142443a48f

View File

@ -3,7 +3,7 @@
* This file is generated from OpenXR xr.xml file covered
* by the following copyright and permission notice:
*
* Copyright (c) 2017-2020 The Khronos Group Inc.
* Copyright (c) 2017-2021, The Khronos Group Inc.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
@ -386,6 +386,12 @@ static XrResult WINAPI wine_xrSetColorSpaceFB(XrSession session, const XrColorSp
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetColorSpaceFB(((wine_XrSession *)session)->session, colorspace);
}
static XrResult WINAPI wine_xrSetEnvironmentDepthEstimationVARJO(XrSession session, XrBool32 enabled)
{
WINE_TRACE("%p, %u\n", session, enabled);
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetEnvironmentDepthEstimationVARJO(((wine_XrSession *)session)->session, enabled);
}
static XrResult WINAPI wine_xrSetInputDeviceActiveEXT(XrSession session, XrPath interactionProfile, XrPath topLevelPath, XrBool32 isActive)
{
WINE_TRACE("%p, 0x%s, 0x%s, %u\n", session, wine_dbgstr_longlong(interactionProfile), wine_dbgstr_longlong(topLevelPath), isActive);
@ -552,6 +558,7 @@ static const struct openxr_func xr_dispatch_table[] =
{"xrRequestExitSession", &wine_xrRequestExitSession},
{"xrResultToString", &wine_xrResultToString},
{"xrSetColorSpaceFB", &wine_xrSetColorSpaceFB},
{"xrSetEnvironmentDepthEstimationVARJO", &wine_xrSetEnvironmentDepthEstimationVARJO},
{"xrSetInputDeviceActiveEXT", &wine_xrSetInputDeviceActiveEXT},
{"xrSetInputDeviceLocationEXT", &wine_xrSetInputDeviceLocationEXT},
{"xrSetInputDeviceStateBoolEXT", &wine_xrSetInputDeviceStateBoolEXT},
@ -627,6 +634,9 @@ static const char * const xr_extensions[] =
"XR_MSFT_unbounded_reference_space",
"XR_OCULUS_android_session_state_enable",
"XR_VALVE_analog_threshold",
"XR_VARJO_composition_layer_depth_test",
"XR_VARJO_environment_depth_estimation",
"XR_VARJO_foveated_rendering",
"XR_VARJO_quad_views",
};

View File

@ -3,7 +3,7 @@
* This file is generated from OpenXR xr.xml file covered
* by the following copyright and permission notice:
*
* Copyright (c) 2017-2020 The Khronos Group Inc.
* Copyright (c) 2017-2021, The Khronos Group Inc.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
@ -134,6 +134,7 @@ struct openxr_instance_funcs
XrResult (*p_xrRequestExitSession)(XrSession);
XrResult (*p_xrResultToString)(XrInstance, XrResult, char[]);
XrResult (*p_xrSetColorSpaceFB)(XrSession, const XrColorSpaceFB);
XrResult (*p_xrSetEnvironmentDepthEstimationVARJO)(XrSession, XrBool32);
XrResult (*p_xrSetInputDeviceActiveEXT)(XrSession, XrPath, XrPath, XrBool32);
XrResult (*p_xrSetInputDeviceLocationEXT)(XrSession, XrPath, XrPath, XrSpace, XrPosef);
XrResult (*p_xrSetInputDeviceStateBoolEXT)(XrSession, XrPath, XrPath, XrBool32);
@ -223,6 +224,7 @@ struct openxr_instance_funcs
USE_XR_FUNC(xrRequestExitSession) \
USE_XR_FUNC(xrResultToString) \
USE_XR_FUNC(xrSetColorSpaceFB) \
USE_XR_FUNC(xrSetEnvironmentDepthEstimationVARJO) \
USE_XR_FUNC(xrSetInputDeviceActiveEXT) \
USE_XR_FUNC(xrSetInputDeviceLocationEXT) \
USE_XR_FUNC(xrSetInputDeviceStateBoolEXT) \

View File

@ -3,7 +3,7 @@
* This file is generated from OpenXR xr.xml file covered
* by the following copyright and permission notice:
*
* Copyright (c) 2017-2020 The Khronos Group Inc.
* Copyright (c) 2017-2021, The Khronos Group Inc.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
@ -65,9 +65,9 @@
#define XR_KHR_COMPOSITION_LAYER_CUBE_EXTENSION_NAME "XR_KHR_composition_layer_cube"
#define XR_KHR_composition_layer_depth_SPEC_VERSION 5
#define XR_KHR_COMPOSITION_LAYER_DEPTH_EXTENSION_NAME "XR_KHR_composition_layer_depth"
#define XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION 3
#define XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION 4
#define XR_KHR_VULKAN_SWAPCHAIN_FORMAT_LIST_EXTENSION_NAME "XR_KHR_vulkan_swapchain_format_list"
#define XR_EXT_performance_settings_SPEC_VERSION 1
#define XR_EXT_performance_settings_SPEC_VERSION 2
#define XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME "XR_EXT_performance_settings"
#define XR_EXT_thermal_query_SPEC_VERSION 1
#define XR_EXT_THERMAL_QUERY_EXTENSION_NAME "XR_EXT_thermal_query"
@ -77,7 +77,7 @@
#define XR_KHR_COMPOSITION_LAYER_EQUIRECT_EXTENSION_NAME "XR_KHR_composition_layer_equirect"
#define XR_KHR_opengl_enable_SPEC_VERSION 9
#define XR_KHR_OPENGL_ENABLE_EXTENSION_NAME "XR_KHR_opengl_enable"
#define XR_KHR_vulkan_enable_SPEC_VERSION 7
#define XR_KHR_vulkan_enable_SPEC_VERSION 8
#define XR_KHR_VULKAN_ENABLE_EXTENSION_NAME "XR_KHR_vulkan_enable"
#define XR_KHR_D3D11_enable_SPEC_VERSION 5
#define XR_KHR_D3D11_ENABLE_EXTENSION_NAME "XR_KHR_D3D11_enable"
@ -87,7 +87,7 @@
#define XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME "XR_EXT_eye_gaze_interaction"
#define XR_KHR_visibility_mask_SPEC_VERSION 2
#define XR_KHR_VISIBILITY_MASK_EXTENSION_NAME "XR_KHR_visibility_mask"
#define XR_EXTX_overlay_SPEC_VERSION 4
#define XR_EXTX_overlay_SPEC_VERSION 5
#define XR_EXTX_OVERLAY_EXTENSION_NAME "XR_EXTX_overlay"
#define XR_KHR_composition_layer_color_scale_bias_SPEC_VERSION 5
#define XR_KHR_COMPOSITION_LAYER_COLOR_SCALE_BIAS_EXTENSION_NAME "XR_KHR_composition_layer_color_scale_bias"
@ -105,15 +105,15 @@
#define XR_OCULUS_ANDROID_SESSION_STATE_ENABLE_EXTENSION_NAME "XR_OCULUS_android_session_state_enable"
#define XR_EXT_view_configuration_depth_range_SPEC_VERSION 1
#define XR_EXT_VIEW_CONFIGURATION_DEPTH_RANGE_EXTENSION_NAME "XR_EXT_view_configuration_depth_range"
#define XR_EXT_conformance_automation_SPEC_VERSION 1
#define XR_EXT_conformance_automation_SPEC_VERSION 2
#define XR_EXT_CONFORMANCE_AUTOMATION_EXTENSION_NAME "XR_EXT_conformance_automation"
#define XR_MSFT_spatial_graph_bridge_SPEC_VERSION 1
#define XR_MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME "XR_MSFT_spatial_graph_bridge"
#define XR_MSFT_hand_interaction_SPEC_VERSION 1
#define XR_MSFT_HAND_INTERACTION_EXTENSION_NAME "XR_MSFT_hand_interaction"
#define XR_EXT_hand_tracking_SPEC_VERSION 2
#define XR_EXT_hand_tracking_SPEC_VERSION 3
#define XR_EXT_HAND_TRACKING_EXTENSION_NAME "XR_EXT_hand_tracking"
#define XR_MSFT_hand_tracking_mesh_SPEC_VERSION 2
#define XR_MSFT_hand_tracking_mesh_SPEC_VERSION 3
#define XR_MSFT_HAND_TRACKING_MESH_EXTENSION_NAME "XR_MSFT_hand_tracking_mesh"
#define XR_MSFT_secondary_view_configuration_SPEC_VERSION 1
#define XR_MSFT_SECONDARY_VIEW_CONFIGURATION_EXTENSION_NAME "XR_MSFT_secondary_view_configuration"
@ -132,7 +132,7 @@
#define XR_HUAWEI_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HUAWEI_controller_interaction"
#define XR_VALVE_analog_threshold_SPEC_VERSION 1
#define XR_VALVE_ANALOG_THRESHOLD_EXTENSION_NAME "XR_VALVE_analog_threshold"
#define XR_KHR_vulkan_enable2_SPEC_VERSION 1
#define XR_KHR_vulkan_enable2_SPEC_VERSION 2
#define XR_KHR_VULKAN_ENABLE2_EXTENSION_NAME "XR_KHR_vulkan_enable2"
#define XR_KHR_composition_layer_equirect2_SPEC_VERSION 1
#define XR_KHR_COMPOSITION_LAYER_EQUIRECT2_EXTENSION_NAME "XR_KHR_composition_layer_equirect2"
@ -150,6 +150,12 @@
#define XR_FB_COLOR_SPACE_EXTENSION_NAME "XR_FB_color_space"
#define XR_KHR_binding_modification_SPEC_VERSION 1
#define XR_KHR_BINDING_MODIFICATION_EXTENSION_NAME "XR_KHR_binding_modification"
#define XR_VARJO_foveated_rendering_SPEC_VERSION 1
#define XR_VARJO_FOVEATED_RENDERING_EXTENSION_NAME "XR_VARJO_foveated_rendering"
#define XR_VARJO_composition_layer_depth_test_SPEC_VERSION 1
#define XR_VARJO_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME "XR_VARJO_composition_layer_depth_test"
#define XR_VARJO_environment_depth_estimation_SPEC_VERSION 1
#define XR_VARJO_ENVIRONMENT_DEPTH_ESTIMATION_EXTENSION_NAME "XR_VARJO_environment_depth_estimation"
#define XR_MAKE_VERSION(major, minor, patch) \
@ -162,7 +168,7 @@
#define XR_VERSION_PATCH(version) (uint32_t)((uint64_t)(version) & 0xffffffffULL)
#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 13)
#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 15)
#if !defined(XR_MAY_ALIAS)
@ -252,6 +258,7 @@ XR_DEFINE_ATOM(XrSystemId)
typedef int64_t XrTime;
typedef uint64_t XrVersion;
typedef XrFlags64 XrAndroidSurfaceSwapchainFlagsFB;
typedef XrFlags64 XrCompositionLayerFlags;
typedef XrFlags64 XrDebugUtilsMessageSeverityFlagsEXT;
typedef XrFlags64 XrDebugUtilsMessageTypeFlagsEXT;
@ -417,6 +424,7 @@ typedef enum XrReferenceSpaceType
XR_REFERENCE_SPACE_TYPE_LOCAL = 2,
XR_REFERENCE_SPACE_TYPE_STAGE = 3,
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT = 1000038000,
XR_REFERENCE_SPACE_TYPE_COMBINED_EYE_VARJO = 1000121000,
XR_REFERENCE_SPACE_TYPE_MAX_ENUM = 0x7fffffff,
} XrReferenceSpaceType;
@ -620,6 +628,10 @@ typedef enum XrStructureType
XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB = 1000101000,
XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB = 1000108000,
XR_TYPE_BINDING_MODIFICATIONS_KHR = 1000120000,
XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO = 1000121000,
XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO = 1000121001,
XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO = 1000121002,
XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO = 1000122000,
XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR,
XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR,
XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR,
@ -652,6 +664,7 @@ typedef struct XrApplicationInfo XrApplicationInfo;
typedef struct XrBaseOutStructure XrBaseOutStructure;
typedef struct XrBoundSourcesForActionEnumerateInfo XrBoundSourcesForActionEnumerateInfo;
typedef struct XrCompositionLayerBaseHeader XrCompositionLayerBaseHeader;
typedef struct XrCompositionLayerDepthTestVARJO XrCompositionLayerDepthTestVARJO;
typedef struct XrControllerModelKeyStateMSFT XrControllerModelKeyStateMSFT;
typedef struct XrDebugUtilsLabelEXT XrDebugUtilsLabelEXT;
typedef struct XrEventDataBaseHeader XrEventDataBaseHeader;
@ -661,17 +674,11 @@ typedef struct XrEventDataMainSessionVisibilityChangedEXTX XrEventDataMainSessio
typedef struct XrEventDataSessionStateChanged XrEventDataSessionStateChanged;
typedef struct XrExtensionProperties XrExtensionProperties;
typedef struct XrExtent2Di XrExtent2Di;
typedef struct XrFovf XrFovf;
typedef struct XrFrameEndInfo XrFrameEndInfo;
typedef struct XrFrameWaitInfo XrFrameWaitInfo;
typedef struct XrGraphicsBindingD3D12KHR XrGraphicsBindingD3D12KHR;
typedef struct XrGraphicsBindingOpenGLWin32KHR XrGraphicsBindingOpenGLWin32KHR;
typedef struct XrGraphicsBindingVulkanKHR XrGraphicsBindingVulkanKHR;
typedef XrGraphicsBindingVulkanKHR XrGraphicsBindingVulkan2KHR;
typedef struct XrGraphicsRequirementsD3D12KHR XrGraphicsRequirementsD3D12KHR;
typedef struct XrGraphicsRequirementsOpenGLKHR XrGraphicsRequirementsOpenGLKHR;
typedef struct XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkanKHR;
typedef XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkan2KHR;
typedef struct XrFoveatedViewConfigurationViewVARJO XrFoveatedViewConfigurationViewVARJO;
typedef struct XrFrameBeginInfo XrFrameBeginInfo;
typedef struct XrFrameState XrFrameState;
typedef struct XrGraphicsBindingD3D11KHR XrGraphicsBindingD3D11KHR;
typedef struct XrGraphicsRequirementsD3D11KHR XrGraphicsRequirementsD3D11KHR;
typedef struct XrHandJointsLocateInfoEXT XrHandJointsLocateInfoEXT;
typedef struct XrHandMeshUpdateInfoMSFT XrHandMeshUpdateInfoMSFT;
typedef struct XrHandPoseTypeInfoMSFT XrHandPoseTypeInfoMSFT;
@ -691,13 +698,15 @@ typedef struct XrSwapchainImageD3D12KHR XrSwapchainImageD3D12KHR;
typedef struct XrSwapchainImageOpenGLKHR XrSwapchainImageOpenGLKHR;
typedef struct XrSwapchainImageWaitInfo XrSwapchainImageWaitInfo;
typedef struct XrSystemColorSpacePropertiesFB XrSystemColorSpacePropertiesFB;
typedef struct XrSystemGetInfo XrSystemGetInfo;
typedef struct XrSystemHandTrackingMeshPropertiesMSFT XrSystemHandTrackingMeshPropertiesMSFT;
typedef struct XrSystemFoveatedRenderingPropertiesVARJO XrSystemFoveatedRenderingPropertiesVARJO;
typedef struct XrSystemGraphicsProperties XrSystemGraphicsProperties;
typedef struct XrSystemHandTrackingPropertiesEXT XrSystemHandTrackingPropertiesEXT;
typedef struct XrSystemTrackingProperties XrSystemTrackingProperties;
typedef struct XrVector3f XrVector3f;
typedef struct XrViewConfigurationDepthRangeEXT XrViewConfigurationDepthRangeEXT;
typedef struct XrViewConfigurationView XrViewConfigurationView;
typedef struct XrViewLocateInfo XrViewLocateInfo;
typedef struct XrViewLocateFoveatedRenderingVARJO XrViewLocateFoveatedRenderingVARJO;
typedef struct XrViewState XrViewState;
typedef struct XrVulkanDeviceCreateInfoKHR XrVulkanDeviceCreateInfoKHR;
typedef struct XrVulkanInstanceCreateInfoKHR XrVulkanInstanceCreateInfoKHR;
typedef struct XrActionSetCreateInfo XrActionSetCreateInfo;
@ -713,8 +722,11 @@ typedef struct XrEventDataEventsLost XrEventDataEventsLost;
typedef struct XrEventDataPerfSettingsEXT XrEventDataPerfSettingsEXT;
typedef struct XrEventDataVisibilityMaskChangedKHR XrEventDataVisibilityMaskChangedKHR;
typedef struct XrEyeGazeSampleTimeEXT XrEyeGazeSampleTimeEXT;
typedef struct XrFrameState XrFrameState;
typedef struct XrGraphicsRequirementsD3D11KHR XrGraphicsRequirementsD3D11KHR;
typedef struct XrFrameEndInfo XrFrameEndInfo;
typedef struct XrGraphicsBindingD3D12KHR XrGraphicsBindingD3D12KHR;
typedef struct XrGraphicsBindingVulkanKHR XrGraphicsBindingVulkanKHR;
typedef XrGraphicsBindingVulkanKHR XrGraphicsBindingVulkan2KHR;
typedef struct XrGraphicsRequirementsOpenGLKHR XrGraphicsRequirementsOpenGLKHR;
typedef struct XrHandJointVelocityEXT XrHandJointVelocityEXT;
typedef struct XrHandMeshVertexMSFT XrHandMeshVertexMSFT;
typedef struct XrHapticBaseHeader XrHapticBaseHeader;
@ -731,12 +743,11 @@ typedef struct XrSwapchainImageAcquireInfo XrSwapchainImageAcquireInfo;
typedef struct XrSwapchainImageVulkanKHR XrSwapchainImageVulkanKHR;
typedef XrSwapchainImageVulkanKHR XrSwapchainImageVulkan2KHR;
typedef struct XrSystemEyeGazeInteractionPropertiesEXT XrSystemEyeGazeInteractionPropertiesEXT;
typedef struct XrSystemHandTrackingPropertiesEXT XrSystemHandTrackingPropertiesEXT;
typedef struct XrSystemHandTrackingMeshPropertiesMSFT XrSystemHandTrackingMeshPropertiesMSFT;
typedef struct XrVector2f XrVector2f;
typedef struct XrView XrView;
typedef struct XrViewConfigurationViewFovEPIC XrViewConfigurationViewFovEPIC;
typedef struct XrVisibilityMaskKHR XrVisibilityMaskKHR;
typedef struct XrVulkanSwapchainFormatListCreateInfoKHR XrVulkanSwapchainFormatListCreateInfoKHR;
typedef struct XrViewConfigurationProperties XrViewConfigurationProperties;
typedef struct XrViewLocateInfo XrViewLocateInfo;
typedef struct XrVulkanGraphicsDeviceGetInfoKHR XrVulkanGraphicsDeviceGetInfoKHR;
typedef struct XrActionSpaceCreateInfo XrActionSpaceCreateInfo;
typedef struct XrActionStateVector2f XrActionStateVector2f;
typedef struct XrBindingModificationBaseHeaderKHR XrBindingModificationBaseHeaderKHR;
@ -745,7 +756,9 @@ typedef struct XrControllerModelNodeStateMSFT XrControllerModelNodeStateMSFT;
typedef struct XrDebugUtilsMessengerCallbackDataEXT XrDebugUtilsMessengerCallbackDataEXT;
typedef struct XrEventDataInteractionProfileChanged XrEventDataInteractionProfileChanged;
typedef struct XrExtent2Df XrExtent2Df;
typedef struct XrGraphicsBindingD3D11KHR XrGraphicsBindingD3D11KHR;
typedef struct XrFrameWaitInfo XrFrameWaitInfo;
typedef struct XrGraphicsRequirementsD3D12KHR XrGraphicsRequirementsD3D12KHR;
typedef struct XrHandJointLocationEXT XrHandJointLocationEXT;
typedef struct XrHandJointVelocitiesEXT XrHandJointVelocitiesEXT;
typedef struct XrHandMeshSpaceCreateInfoMSFT XrHandMeshSpaceCreateInfoMSFT;
typedef struct XrHandTrackerCreateInfoEXT XrHandTrackerCreateInfoEXT;
@ -756,39 +769,42 @@ typedef struct XrSecondaryViewConfigurationSessionBeginInfoMSFT XrSecondaryViewC
typedef struct XrSpaceLocation XrSpaceLocation;
typedef struct XrSpatialGraphNodeSpaceCreateInfoMSFT XrSpatialGraphNodeSpaceCreateInfoMSFT;
typedef struct XrSwapchainImageReleaseInfo XrSwapchainImageReleaseInfo;
typedef struct XrSystemGraphicsProperties XrSystemGraphicsProperties;
typedef struct XrSystemGetInfo XrSystemGetInfo;
typedef struct XrVector4f XrVector4f;
typedef struct XrViewState XrViewState;
typedef struct XrVisibilityMaskKHR XrVisibilityMaskKHR;
typedef struct XrActionStatePose XrActionStatePose;
typedef struct XrBindingModificationsKHR XrBindingModificationsKHR;
typedef struct XrControllerModelStateMSFT XrControllerModelStateMSFT;
typedef struct XrEventDataReferenceSpaceChangePending XrEventDataReferenceSpaceChangePending;
typedef struct XrHandMeshIndexBufferMSFT XrHandMeshIndexBufferMSFT;
typedef struct XrGraphicsBindingOpenGLWin32KHR XrGraphicsBindingOpenGLWin32KHR;
typedef struct XrHandJointLocationsEXT XrHandJointLocationsEXT;
typedef struct XrHandMeshVertexBufferMSFT XrHandMeshVertexBufferMSFT;
typedef struct XrInteractionProfileSuggestedBinding XrInteractionProfileSuggestedBinding;
typedef struct XrSecondaryViewConfigurationFrameEndInfoMSFT XrSecondaryViewConfigurationFrameEndInfoMSFT;
typedef struct XrSpatialAnchorCreateInfoMSFT XrSpatialAnchorCreateInfoMSFT;
typedef struct XrSwapchainSubImage XrSwapchainSubImage;
typedef struct XrViewConfigurationProperties XrViewConfigurationProperties;
typedef struct XrVulkanSwapchainFormatListCreateInfoKHR XrVulkanSwapchainFormatListCreateInfoKHR;
typedef struct XrApiLayerProperties XrApiLayerProperties;
typedef struct XrCompositionLayerDepthInfoKHR XrCompositionLayerDepthInfoKHR;
typedef struct XrCompositionLayerEquirectKHR XrCompositionLayerEquirectKHR;
typedef struct XrCompositionLayerProjectionView XrCompositionLayerProjectionView;
typedef struct XrEventDataBuffer XrEventDataBuffer;
typedef struct XrHandJointLocationEXT XrHandJointLocationEXT;
typedef struct XrHandMeshMSFT XrHandMeshMSFT;
typedef struct XrRect2Df XrRect2Df;
typedef struct XrSwapchainImageD3D11KHR XrSwapchainImageD3D11KHR;
typedef struct XrVulkanGraphicsDeviceGetInfoKHR XrVulkanGraphicsDeviceGetInfoKHR;
typedef struct XrCompositionLayerCylinderKHR XrCompositionLayerCylinderKHR;
typedef struct XrCompositionLayerProjection XrCompositionLayerProjection;
typedef struct XrFrameBeginInfo XrFrameBeginInfo;
typedef struct XrHolographicWindowAttachmentMSFT XrHolographicWindowAttachmentMSFT;
typedef struct XrSystemProperties XrSystemProperties;
typedef struct XrCompositionLayerEquirect2KHR XrCompositionLayerEquirect2KHR;
typedef struct XrHandJointLocationsEXT XrHandJointLocationsEXT;
typedef struct XrCompositionLayerQuad XrCompositionLayerQuad;
typedef struct XrFovf XrFovf;
typedef struct XrHandMeshIndexBufferMSFT XrHandMeshIndexBufferMSFT;
typedef struct XrHolographicWindowAttachmentMSFT XrHolographicWindowAttachmentMSFT;
typedef struct XrSessionBeginInfo XrSessionBeginInfo;
typedef struct XrSystemProperties XrSystemProperties;
typedef struct XrViewConfigurationViewFovEPIC XrViewConfigurationViewFovEPIC;
typedef struct XrCompositionLayerCylinderKHR XrCompositionLayerCylinderKHR;
typedef struct XrCompositionLayerProjectionView XrCompositionLayerProjectionView;
typedef struct XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkanKHR;
typedef XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkan2KHR;
typedef struct XrRect2Df XrRect2Df;
typedef struct XrView XrView;
typedef struct XrCompositionLayerEquirect2KHR XrCompositionLayerEquirect2KHR;
typedef struct XrEventDataBuffer XrEventDataBuffer;
typedef struct XrSwapchainImageD3D11KHR XrSwapchainImageD3D11KHR;
typedef struct XrCompositionLayerProjection XrCompositionLayerProjection;
typedef struct XrHandMeshMSFT XrHandMeshMSFT;
typedef XrBool32 (XRAPI_PTR * PFN_xrDebugUtilsMessengerCallbackEXT)(
XrDebugUtilsMessageSeverityFlagsEXT messageSeverity,
XrDebugUtilsMessageTypeFlagsEXT messageTypes,
@ -868,6 +884,14 @@ struct XrCompositionLayerBaseHeader
XrSpace space;
};
struct XrCompositionLayerDepthTestVARJO
{
XrStructureType type;
const void *next;
float depthTestRangeNearZ;
float depthTestRangeFarZ;
};
struct XrControllerModelKeyStateMSFT
{
XrStructureType type;
@ -934,58 +958,36 @@ struct XrExtent2Di
int32_t height;
};
struct XrFovf
{
float angleLeft;
float angleRight;
float angleUp;
float angleDown;
};
struct XrFrameEndInfo
struct XrFoveatedViewConfigurationViewVARJO
{
XrStructureType type;
const void *next;
XrTime displayTime;
XrEnvironmentBlendMode environmentBlendMode;
uint32_t layerCount;
const XrCompositionLayerBaseHeader * const*layers;
void *next;
XrBool32 foveatedRenderingActive;
};
struct XrFrameWaitInfo
struct XrFrameBeginInfo
{
XrStructureType type;
const void *next;
};
struct XrGraphicsBindingD3D12KHR
struct XrFrameState
{
XrStructureType type;
void *next;
XrTime predictedDisplayTime;
XrDuration predictedDisplayPeriod;
XrBool32 shouldRender;
};
struct XrGraphicsBindingD3D11KHR
{
XrStructureType type;
const void *next;
ID3D12Device *device;
ID3D12CommandQueue *queue;
ID3D11Device *device;
};
struct XrGraphicsBindingOpenGLWin32KHR
{
XrStructureType type;
const void *next;
HDC hDC;
HGLRC hGLRC;
};
struct XrGraphicsBindingVulkanKHR
{
XrStructureType type;
const void *next;
VkInstance instance;
VkPhysicalDevice physicalDevice;
VkDevice device;
uint32_t queueFamilyIndex;
uint32_t queueIndex;
};
struct XrGraphicsRequirementsD3D12KHR
struct XrGraphicsRequirementsD3D11KHR
{
XrStructureType type;
void *next;
@ -993,22 +995,6 @@ struct XrGraphicsRequirementsD3D12KHR
D3D_FEATURE_LEVEL minFeatureLevel;
};
struct XrGraphicsRequirementsOpenGLKHR
{
XrStructureType type;
void *next;
XrVersion minApiVersionSupported;
XrVersion maxApiVersionSupported;
};
struct XrGraphicsRequirementsVulkanKHR
{
XrStructureType type;
void *next;
XrVersion minApiVersionSupported;
XrVersion maxApiVersionSupported;
};
struct XrHandJointsLocateInfoEXT
{
XrStructureType type;
@ -1161,20 +1147,25 @@ struct XrSystemColorSpacePropertiesFB
XrColorSpaceFB colorSpace;
};
struct XrSystemGetInfo
{
XrStructureType type;
const void *next;
XrFormFactor formFactor;
};
struct XrSystemHandTrackingMeshPropertiesMSFT
struct XrSystemFoveatedRenderingPropertiesVARJO
{
XrStructureType type;
void *next;
XrBool32 supportsHandTrackingMesh;
uint32_t maxHandMeshIndexCount;
uint32_t maxHandMeshVertexCount;
XrBool32 supportsFoveatedRendering;
};
struct XrSystemGraphicsProperties
{
uint32_t maxSwapchainImageHeight;
uint32_t maxSwapchainImageWidth;
uint32_t maxLayerCount;
};
struct XrSystemHandTrackingPropertiesEXT
{
XrStructureType type;
void *next;
XrBool32 supportsHandTracking;
};
struct XrSystemTrackingProperties
@ -1212,13 +1203,18 @@ struct XrViewConfigurationView
uint32_t maxSwapchainSampleCount;
};
struct XrViewLocateInfo
struct XrViewLocateFoveatedRenderingVARJO
{
XrStructureType type;
const void *next;
XrViewConfigurationType viewConfigurationType;
XrTime displayTime;
XrSpace space;
XrBool32 foveatedRenderingActive;
};
struct XrViewState
{
XrStructureType type;
void *next;
XrViewStateFlags viewStateFlags;
};
struct XrVulkanDeviceCreateInfoKHR
@ -1356,21 +1352,41 @@ struct XrEyeGazeSampleTimeEXT
XrTime time;
};
struct XrFrameState
struct XrFrameEndInfo
{
XrStructureType type;
void *next;
XrTime predictedDisplayTime;
XrDuration predictedDisplayPeriod;
XrBool32 shouldRender;
const void *next;
XrTime displayTime;
XrEnvironmentBlendMode environmentBlendMode;
uint32_t layerCount;
const XrCompositionLayerBaseHeader * const*layers;
};
struct XrGraphicsRequirementsD3D11KHR
struct XrGraphicsBindingD3D12KHR
{
XrStructureType type;
const void *next;
ID3D12Device *device;
ID3D12CommandQueue *queue;
};
struct XrGraphicsBindingVulkanKHR
{
XrStructureType type;
const void *next;
VkInstance instance;
VkPhysicalDevice physicalDevice;
VkDevice device;
uint32_t queueFamilyIndex;
uint32_t queueIndex;
};
struct XrGraphicsRequirementsOpenGLKHR
{
XrStructureType type;
void *next;
LUID adapterLuid;
D3D_FEATURE_LEVEL minFeatureLevel;
XrVersion minApiVersionSupported;
XrVersion maxApiVersionSupported;
};
struct XrHandJointVelocityEXT
@ -1490,11 +1506,13 @@ struct XrSystemEyeGazeInteractionPropertiesEXT
XrBool32 supportsEyeGazeInteraction;
};
struct XrSystemHandTrackingPropertiesEXT
struct XrSystemHandTrackingMeshPropertiesMSFT
{
XrStructureType type;
void *next;
XrBool32 supportsHandTracking;
XrBool32 supportsHandTrackingMesh;
uint32_t maxHandMeshIndexCount;
uint32_t maxHandMeshVertexCount;
};
struct XrVector2f
@ -1503,40 +1521,29 @@ struct XrVector2f
float y;
};
struct XrView
struct XrViewConfigurationProperties
{
XrStructureType type;
void *next;
XrPosef pose;
XrFovf fov;
XrViewConfigurationType viewConfigurationType;
XrBool32 fovMutable;
};
struct XrViewConfigurationViewFovEPIC
struct XrViewLocateInfo
{
XrStructureType type;
const void *next;
XrFovf recommendedFov;
XrFovf maxMutableFov;
XrViewConfigurationType viewConfigurationType;
XrTime displayTime;
XrSpace space;
};
struct XrVisibilityMaskKHR
{
XrStructureType type;
void *next;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector2f *vertices;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t *indices;
};
struct XrVulkanSwapchainFormatListCreateInfoKHR
struct XrVulkanGraphicsDeviceGetInfoKHR
{
XrStructureType type;
const void *next;
uint32_t viewFormatCount;
const VkFormat *viewFormats;
XrSystemId systemId;
VkInstance vulkanInstance;
};
struct XrActionSpaceCreateInfo
@ -1605,11 +1612,25 @@ struct XrExtent2Df
float height;
};
struct XrGraphicsBindingD3D11KHR
struct XrFrameWaitInfo
{
XrStructureType type;
const void *next;
ID3D11Device *device;
};
struct XrGraphicsRequirementsD3D12KHR
{
XrStructureType type;
void *next;
LUID adapterLuid;
D3D_FEATURE_LEVEL minFeatureLevel;
};
struct XrHandJointLocationEXT
{
XrSpaceLocationFlags locationFlags;
XrPosef pose;
float radius;
};
struct XrHandJointVelocitiesEXT
@ -1687,11 +1708,11 @@ struct XrSwapchainImageReleaseInfo
const void *next;
};
struct XrSystemGraphicsProperties
struct XrSystemGetInfo
{
uint32_t maxSwapchainImageHeight;
uint32_t maxSwapchainImageWidth;
uint32_t maxLayerCount;
XrStructureType type;
const void *next;
XrFormFactor formFactor;
};
struct XrVector4f
@ -1702,11 +1723,16 @@ struct XrVector4f
float w;
};
struct XrViewState
struct XrVisibilityMaskKHR
{
XrStructureType type;
void *next;
XrViewStateFlags viewStateFlags;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector2f *vertices;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t *indices;
};
struct XrActionStatePose
@ -1744,12 +1770,21 @@ struct XrEventDataReferenceSpaceChangePending
XrPosef poseInPreviousSpace;
};
struct XrHandMeshIndexBufferMSFT
struct XrGraphicsBindingOpenGLWin32KHR
{
uint32_t indexBufferKey;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t *indices;
XrStructureType type;
const void *next;
HDC hDC;
HGLRC hGLRC;
};
struct XrHandJointLocationsEXT
{
XrStructureType type;
void *next;
XrBool32 isActive;
uint32_t jointCount;
XrHandJointLocationEXT *jointLocations;
};
struct XrHandMeshVertexBufferMSFT
@ -1793,12 +1828,12 @@ struct XrSwapchainSubImage
uint32_t imageArrayIndex;
};
struct XrViewConfigurationProperties
struct XrVulkanSwapchainFormatListCreateInfoKHR
{
XrStructureType type;
void *next;
XrViewConfigurationType viewConfigurationType;
XrBool32 fovMutable;
const void *next;
uint32_t viewFormatCount;
const VkFormat *viewFormats;
};
struct XrApiLayerProperties
@ -1836,59 +1871,66 @@ struct XrCompositionLayerEquirectKHR
XrVector2f bias;
};
struct XrCompositionLayerProjectionView
struct XrCompositionLayerQuad
{
XrStructureType type;
const void *next;
XrPosef pose;
XrFovf fov;
XrCompositionLayerFlags layerFlags;
XrSpace space;
XrEyeVisibility eyeVisibility;
XrSwapchainSubImage subImage;
};
struct XrEventDataBuffer
{
XrStructureType type;
const void *next;
uint8_t varying[4000];
};
struct XrHandJointLocationEXT
{
XrSpaceLocationFlags locationFlags;
XrPosef pose;
float radius;
XrExtent2Df size;
};
struct XrHandMeshMSFT
struct XrFovf
{
XrStructureType type;
void *next;
XrBool32 isActive;
XrBool32 indexBufferChanged;
XrBool32 vertexBufferChanged;
XrHandMeshIndexBufferMSFT indexBuffer;
XrHandMeshVertexBufferMSFT vertexBuffer;
float angleLeft;
float angleRight;
float angleUp;
float angleDown;
};
struct XrRect2Df
struct XrHandMeshIndexBufferMSFT
{
XrOffset2Df offset;
XrExtent2Df extent;
uint32_t indexBufferKey;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t *indices;
};
struct XrSwapchainImageD3D11KHR
{
XrStructureType type;
void *next;
ID3D11Texture2D *texture;
};
struct XrVulkanGraphicsDeviceGetInfoKHR
struct XrHolographicWindowAttachmentMSFT
{
XrStructureType type;
const void *next;
IUnknown *holographicSpace;
IUnknown *coreWindow;
};
struct XrSessionBeginInfo
{
XrStructureType type;
const void *next;
XrViewConfigurationType primaryViewConfigurationType;
};
struct XrSystemProperties
{
XrStructureType type;
void *next;
XrSystemId systemId;
VkInstance vulkanInstance;
uint32_t vendorId;
char systemName[XR_MAX_SYSTEM_NAME_SIZE];
XrSystemGraphicsProperties graphicsProperties;
XrSystemTrackingProperties trackingProperties;
};
struct XrViewConfigurationViewFovEPIC
{
XrStructureType type;
const void *next;
XrFovf recommendedFov;
XrFovf maxMutableFov;
};
struct XrCompositionLayerCylinderKHR
@ -1905,39 +1947,35 @@ struct XrCompositionLayerCylinderKHR
float aspectRatio;
};
struct XrCompositionLayerProjection
struct XrCompositionLayerProjectionView
{
XrStructureType type;
const void *next;
XrCompositionLayerFlags layerFlags;
XrSpace space;
uint32_t viewCount;
const XrCompositionLayerProjectionView *views;
XrPosef pose;
XrFovf fov;
XrSwapchainSubImage subImage;
};
struct XrFrameBeginInfo
{
XrStructureType type;
const void *next;
};
struct XrHolographicWindowAttachmentMSFT
{
XrStructureType type;
const void *next;
IUnknown *holographicSpace;
IUnknown *coreWindow;
};
struct XrSystemProperties
struct XrGraphicsRequirementsVulkanKHR
{
XrStructureType type;
void *next;
XrSystemId systemId;
uint32_t vendorId;
char systemName[XR_MAX_SYSTEM_NAME_SIZE];
XrSystemGraphicsProperties graphicsProperties;
XrSystemTrackingProperties trackingProperties;
XrVersion minApiVersionSupported;
XrVersion maxApiVersionSupported;
};
struct XrRect2Df
{
XrOffset2Df offset;
XrExtent2Df extent;
};
struct XrView
{
XrStructureType type;
void *next;
XrPosef pose;
XrFovf fov;
};
struct XrCompositionLayerEquirect2KHR
@ -1955,32 +1993,39 @@ struct XrCompositionLayerEquirect2KHR
float lowerVerticalAngle;
};
struct XrHandJointLocationsEXT
struct XrEventDataBuffer
{
XrStructureType type;
const void *next;
uint8_t varying[4000];
};
struct XrSwapchainImageD3D11KHR
{
XrStructureType type;
void *next;
XrBool32 isActive;
uint32_t jointCount;
XrHandJointLocationEXT *jointLocations;
ID3D11Texture2D *texture;
};
struct XrCompositionLayerQuad
struct XrCompositionLayerProjection
{
XrStructureType type;
const void *next;
XrCompositionLayerFlags layerFlags;
XrSpace space;
XrEyeVisibility eyeVisibility;
XrSwapchainSubImage subImage;
XrPosef pose;
XrExtent2Df size;
uint32_t viewCount;
const XrCompositionLayerProjectionView *views;
};
struct XrSessionBeginInfo
struct XrHandMeshMSFT
{
XrStructureType type;
const void *next;
XrViewConfigurationType primaryViewConfigurationType;
void *next;
XrBool32 isActive;
XrBool32 indexBufferChanged;
XrBool32 vertexBufferChanged;
XrHandMeshIndexBufferMSFT indexBuffer;
XrHandMeshVertexBufferMSFT vertexBuffer;
};
typedef XrResult (XRAPI_PTR *PFN_xrAcquireSwapchainImage)(XrSwapchain, const XrSwapchainImageAcquireInfo *, uint32_t *);
@ -2063,6 +2108,7 @@ typedef XrResult (XRAPI_PTR *PFN_xrRequestDisplayRefreshRateFB)(XrSession, float
typedef XrResult (XRAPI_PTR *PFN_xrRequestExitSession)(XrSession);
typedef XrResult (XRAPI_PTR *PFN_xrResultToString)(XrInstance, XrResult, char[]);
typedef XrResult (XRAPI_PTR *PFN_xrSetColorSpaceFB)(XrSession, const XrColorSpaceFB);
typedef XrResult (XRAPI_PTR *PFN_xrSetEnvironmentDepthEstimationVARJO)(XrSession, XrBool32);
typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceActiveEXT)(XrSession, XrPath, XrPath, XrBool32);
typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceLocationEXT)(XrSession, XrPath, XrPath, XrSpace, XrPosef);
typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateBoolEXT)(XrSession, XrPath, XrPath, XrBool32);
@ -2159,6 +2205,7 @@ XrResult XRAPI_CALL xrRequestDisplayRefreshRateFB(XrSession session, float displ
XrResult XRAPI_CALL xrRequestExitSession(XrSession session);
XrResult XRAPI_CALL xrResultToString(XrInstance instance, XrResult value, char buffer[]);
XrResult XRAPI_CALL xrSetColorSpaceFB(XrSession session, const XrColorSpaceFB colorspace);
XrResult XRAPI_CALL xrSetEnvironmentDepthEstimationVARJO(XrSession session, XrBool32 enabled);
XrResult XRAPI_CALL xrSetInputDeviceActiveEXT(XrSession session, XrPath interactionProfile, XrPath topLevelPath, XrBool32 isActive);
XrResult XRAPI_CALL xrSetInputDeviceLocationEXT(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrSpace space, XrPosef pose);
XrResult XRAPI_CALL xrSetInputDeviceStateBoolEXT(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrBool32 state);

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<comment>
Copyright (c) 2017-2020 The Khronos Group Inc.
Copyright (c) 2017-2021, The Khronos Group Inc.
SPDX-License-Identifier: Apache-2.0 OR MIT
@ -37,7 +37,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<tag name="KHR" author="Khronos" contact="Brent Insko @insko"/>
<tag name="LUNARG" author="LunarG" contact="Brad Grantham @bradgrantham-lunarg"/>
<tag name="LIV" author="LIV" contact="Arthur Brainville @Ybalrid, Steffan Donal @liv_ruu"/>
<tag name="MAGICLEAP" author="Magic Leap" contact="Blake Taylor @theblindprogramm3r"/>
<tag name="ML" author="Magic Leap" contact="Jey Michaelraj @jeymichael"/>
<tag name="MND" author="Monado Project" contact="Jakob Bornecrantz @wallbraker, Ryan Pavlik @rpavlik"/>
<tag name="MNDX" author="Monado Project experimental" contact="Jakob Bornecrantz @wallbraker, Ryan Pavlik @rpavlik"/>
<tag name="MSFT" author="Microsoft" contact="Alex Turner @alexturn, Yin Li @yl_msft, Bryce Hutchings @brycehutchings, Lachlan Ford @laford_msft, Minmin Gong @gongminmin "/>
@ -111,7 +111,7 @@ 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, 0, 13)</type>
#define <name>XR_CURRENT_API_VERSION</name> <type>XR_MAKE_VERSION</type>(1, 0, 15)</type>
<!--
NOTE: For avoidance of ambiguity, there should only be 1 <name> tag immediately in
@ -211,6 +211,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<type requires="openxr_platform_defines" name="float"/>
<type requires="openxr_platform_defines" name="int8_t"/>
<type requires="openxr_platform_defines" name="uint8_t"/>
<type requires="openxr_platform_defines" name="uint16_t"/>
<type requires="openxr_platform_defines" name="int32_t"/>
<type requires="openxr_platform_defines" name="uint32_t"/>
<type requires="openxr_platform_defines" name="int64_t"/>
@ -241,6 +242,9 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<type bitvalues="XrOverlayMainSessionFlagBitsEXTX" category="bitmask">typedef <type>XrFlags64</type> <name>XrOverlayMainSessionFlagsEXTX</name>;</type>
<type bitvalues="XrOverlaySessionCreateFlagBitsEXTX" category="bitmask">typedef <type>XrFlags64</type> <name>XrOverlaySessionCreateFlagsEXTX</name>;</type>
<!-- Bitmask types for XR_FB_android_surface_swapchain_create -->
<type bitvalues="XrAndroidSurfaceSwapchainFlagBitsFB" category="bitmask">typedef <type>XrFlags64</type> <name>XrAndroidSurfaceSwapchainFlagsFB</name>;</type>
<!-- Handles referring to internally-maintained objects. -->
<!-- These types which can be 64-bit integers or opaque pointers, selected at compile time based on pointer size -->
<type category="handle"><type>XR_DEFINE_HANDLE</type>(<name>XrInstance</name>)</type>
@ -298,6 +302,9 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<!-- enums for XR_MSFT_spatial_graph_bridge -->
<type name="XrSpatialGraphNodeTypeMSFT" category="enum"/>
<!-- enums and flag bits for XR_FB_android_surface_swapchain_create -->
<type name="XrAndroidSurfaceSwapchainFlagBitsFB" category="enum"/>
<!-- Struct types -->
<type category="struct" name="XrVector2f">
<member><type>float</type> <name>x</name></member>
@ -993,20 +1000,20 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<member values="XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR"><type>XrStructureType</type> <name>type</name></member>
<member>const <type>void</type>* <name>next</name></member>
<member><type>XrSystemId</type> <name>systemId</name></member>
<member><type>XrVulkanInstanceCreateFlagsKHR</type> <name>createFlags</name></member>
<member optional="true"><type>XrVulkanInstanceCreateFlagsKHR</type> <name>createFlags</name></member>
<member><type>PFN_vkGetInstanceProcAddr</type> <name>pfnGetInstanceProcAddr</name></member>
<member>const <type>VkInstanceCreateInfo</type>* <name>vulkanCreateInfo</name></member>
<member>const <type>VkAllocationCallbacks</type>* <name>vulkanAllocator</name></member>
<member optional="true">const <type>VkAllocationCallbacks</type>* <name>vulkanAllocator</name></member>
</type>
<type category="struct" name="XrVulkanDeviceCreateInfoKHR">
<member values="XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR"><type>XrStructureType</type> <name>type</name></member>
<member>const <type>void</type>* <name>next</name></member>
<member><type>XrSystemId</type> <name>systemId</name></member>
<member><type>XrVulkanDeviceCreateFlagsKHR</type> <name>createFlags</name></member>
<member optional="true"><type>XrVulkanDeviceCreateFlagsKHR</type> <name>createFlags</name></member>
<member><type>PFN_vkGetInstanceProcAddr</type> <name>pfnGetInstanceProcAddr</name></member>
<member><type>VkPhysicalDevice</type> <name>vulkanPhysicalDevice</name></member>
<member>const <type>VkDeviceCreateInfo</type>* <name>vulkanCreateInfo</name></member>
<member>const <type>VkAllocationCallbacks</type>* <name>vulkanAllocator</name></member>
<member optional="true">const <type>VkAllocationCallbacks</type>* <name>vulkanAllocator</name></member>
</type>
<type category="struct" name="XrGraphicsBindingVulkan2KHR" alias="XrGraphicsBindingVulkanKHR" />
<type category="struct" name="XrVulkanGraphicsDeviceGetInfoKHR">
@ -1164,7 +1171,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<member><type>XrTime</type> <name>time</name></member>
</type>
<type category="struct" name="XrHandJointLocationEXT">
<member><type>XrSpaceLocationFlags</type> <name>locationFlags</name></member>
<member optional="true"><type>XrSpaceLocationFlags</type> <name>locationFlags</name></member>
<member><type>XrPosef</type> <name>pose</name></member>
<member><type>float</type> <name>radius</name></member>
</type>
@ -1286,6 +1293,13 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<member><type>IUnknown</type>* <name>coreWindow</name></member>
</type>
<!-- XR_FB_android_surface_swapchain_create -->
<type category="struct" name="XrAndroidSurfaceSwapchainCreateInfoFB" structextends="XrSwapchainCreateInfo" protect="XR_USE_PLATFORM_ANDROID">
<member values="XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB"><type>XrStructureType</type> <name>type</name></member>
<member>const <type>void</type>* <name>next</name></member>
<member><type>XrAndroidSurfaceSwapchainFlagsFB</type> <name>createFlags</name></member>
</type>
<!-- XR_KHR_loader_init -->
<type category="struct" name="XrLoaderInitInfoBaseHeaderKHR">
<member><type>XrStructureType</type> <name>type</name></member>
@ -1363,6 +1377,33 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<member><type>XrColorSpaceFB</type> <name>colorSpace</name></member>
</type>
<!-- XR_VARJO_composition_layer_depth_test -->
<type category="struct" name="XrCompositionLayerDepthTestVARJO" structextends="XrCompositionLayerProjection">
<member values="XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO"><type>XrStructureType</type> <name>type</name></member>
<member>const <type>void</type>* <name>next</name></member>
<member><type>float</type> <name>depthTestRangeNearZ</name></member>
<member><type>float</type> <name>depthTestRangeFarZ</name></member>
</type>
<!-- XR_VARJO_foveated_rendering -->
<type category="struct" name="XrViewLocateFoveatedRenderingVARJO" structextends="XrViewLocateInfo">
<member values="XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO"><type>XrStructureType</type> <name>type</name></member>
<member>const <type>void</type>* <name>next</name></member>
<member><type>XrBool32</type> <name>foveatedRenderingActive</name></member>
</type>
<type category="struct" name="XrFoveatedViewConfigurationViewVARJO" structextends="XrViewConfigurationView" >
<member values="XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO"><type>XrStructureType</type> <name>type</name></member>
<member><type>void</type>* <name>next</name></member>
<member><type>XrBool32</type> <name>foveatedRenderingActive</name></member>
</type>
<type category="struct" name="XrSystemFoveatedRenderingPropertiesVARJO" structextends="XrSystemProperties">
<member values="XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO"><type>XrStructureType</type> <name>type</name></member>
<member><type>void</type>* <name>next</name></member>
<member><type>XrBool32</type> <name>supportsFoveatedRendering</name></member>
</type>
</types>
<!-- SECTION: OpenXR enumerant (token) definitions. -->
@ -1485,7 +1526,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="-27" name="XR_ERROR_ACTION_TYPE_MISMATCH" comment="The API used to retrieve an action's state does not match the action's type."/>
<enum value="-28" name="XR_ERROR_SESSION_NOT_READY" comment="The session is not in the ready state."/>
<enum value="-29" name="XR_ERROR_SESSION_NOT_STOPPING" comment="The session is not in the stopping state."/>
<enum value="-30" name="XR_ERROR_TIME_INVALID" comment="The provided XrTime was zero, negative, or out of range."/>
<enum value="-30" name="XR_ERROR_TIME_INVALID" comment="The provided basetype:XrTime was zero, negative, or out of range."/>
<enum value="-31" name="XR_ERROR_REFERENCE_SPACE_UNSUPPORTED" comment="The specified reference space is not supported by the runtime or system."/>
<enum value="-32" name="XR_ERROR_FILE_ACCESS_ERROR" comment="The file could not be accessed."/>
<enum value="-33" name="XR_ERROR_FILE_CONTENTS_INVALID" comment="The file's contents were invalid."/>
@ -1504,7 +1545,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="-47" name="XR_ERROR_ACTIONSETS_ALREADY_ATTACHED" comment="The session already has attached action sets." />
<enum value="-48" name="XR_ERROR_LOCALIZED_NAME_DUPLICATED" comment="The localized name provided was a duplicate of an already-existing resource."/>
<enum value="-49" name="XR_ERROR_LOCALIZED_NAME_INVALID" comment="The localized name provided was invalid."/>
<enum value="-50" name="XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING" comment="The xrGetGraphicsRequirements* call was not made before calling xrCreateSession."/>
<enum value="-50" name="XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING" comment="The fname:xrGetGraphicsRequirements* call was not made before calling fname:xrCreateSession."/>
<unused start="-100"/>
</enums>
<enums name="XrObjectType" type="enum" comment="Enums to track objects of various types">
@ -1743,7 +1784,6 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum bitpos="0" name="XR_OVERLAY_MAIN_SESSION_ENABLED_COMPOSITION_LAYER_INFO_DEPTH_BIT_EXTX" comment="Indicates the main session enabled XR_KHR_extra_layer_info_depth"/>
</enums>
<enums name="XrOverlaySessionCreateFlagBitsEXTX" type="bitmask">
<enum bitpos="0" name="XR_OVERLAY_SESSION_CREATE_RELAXED_DISPLAY_TIME_BIT_EXTX" comment="Indicates the runtime does not need to attempt to lock the overlay session displayTime to the main session displayTime"/>
</enums>
<!-- enumes XR_MSFT_spatial_graph_bridge -->
@ -1752,6 +1792,12 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="2" name="XR_SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT" />
</enums>
<!-- flags for XR_FB_android_surface_swapchain_create -->
<enums name="XrAndroidSurfaceSwapchainFlagBitsFB" type="bitmask">
<enum bitpos="0" name="XR_ANDROID_SURFACE_SWAPCHAIN_SYNCHRONOUS_BIT_FB" comment="Create the underlying BufferQueue in synchronous mode"/>
<enum bitpos="1" name="XR_ANDROID_SURFACE_SWAPCHAIN_USE_TIMESTAMPS_BIT_FB" comment="Acquire most recent buffer whose presentation timestamp is not greater than display time of final composited frame"/>
</enums>
<!-- SECTION: OpenXR command definitions -->
<commands>
<command successcodes="XR_SUCCESS" errorcodes="XR_ERROR_HANDLE_INVALID,XR_ERROR_INSTANCE_LOST,XR_ERROR_RUNTIME_FAILURE,XR_ERROR_OUT_OF_MEMORY,XR_ERROR_FUNCTION_UNSUPPORTED,XR_ERROR_VALIDATION_FAILURE">
@ -2101,7 +2147,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<param><type>XrSystemId</type> <name>systemId</name></param>
<param optional="true"><type>uint32_t</type> <name>bufferCapacityInput</name></param>
<param><type>uint32_t</type>* <name>bufferCountOutput</name></param>
<param optional="true" len="bufferCapacityInput,null-terminated"><type>char</type>* <name>buffer</name></param>
<param optional="true" len="bufferCapacityInput"><type>char</type>* <name>buffer</name></param>
</command>
<command successcodes="XR_SUCCESS" errorcodes="XR_ERROR_INSTANCE_LOST,XR_ERROR_RUNTIME_FAILURE,XR_ERROR_HANDLE_INVALID,XR_ERROR_SYSTEM_INVALID,XR_ERROR_VALIDATION_FAILURE,XR_ERROR_SIZE_INSUFFICIENT,XR_ERROR_FUNCTION_UNSUPPORTED">
<proto><type>XrResult</type> <name>xrGetVulkanDeviceExtensionsKHR</name></proto>
@ -2109,7 +2155,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<param><type>XrSystemId</type> <name>systemId</name></param>
<param optional="true"><type>uint32_t</type> <name>bufferCapacityInput</name></param>
<param><type>uint32_t</type>* <name>bufferCountOutput</name></param>
<param optional="true" len="bufferCapacityInput,null-terminated"><type>char</type>* <name>buffer</name></param>
<param optional="true" len="bufferCapacityInput"><type>char</type>* <name>buffer</name></param>
</command>
<command successcodes="XR_SUCCESS" errorcodes="XR_ERROR_HANDLE_INVALID,XR_ERROR_INSTANCE_LOST,XR_ERROR_RUNTIME_FAILURE,XR_ERROR_SYSTEM_INVALID,XR_ERROR_VALIDATION_FAILURE,XR_ERROR_FUNCTION_UNSUPPORTED">
<proto><type>XrResult</type> <name>xrGetVulkanGraphicsDeviceKHR</name></proto>
@ -2239,7 +2285,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
</command>
<command name="xrGetVulkanGraphicsRequirements2KHR" alias="xrGetVulkanGraphicsRequirementsKHR" />
<!-- commands for XR_KHR_convert_timespec_time -->
<!-- commands for XR_KHR_convert_timespec_time -->
<command successcodes="XR_SUCCESS" errorcodes="XR_ERROR_HANDLE_INVALID,XR_ERROR_INSTANCE_LOST,XR_ERROR_RUNTIME_FAILURE,XR_ERROR_VALIDATION_FAILURE,XR_ERROR_TIME_INVALID,XR_ERROR_FUNCTION_UNSUPPORTED">
<proto><type>XrResult</type> <name>xrConvertTimeToTimespecTimeKHR</name></proto>
<param><type>XrInstance</type> <name>instance</name></param>
@ -2448,6 +2494,13 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<param><type>XrSession</type> <name>session</name></param>
<param>const <type>XrColorSpaceFB</type> <name>colorspace</name></param>
</command>
<!-- commands for XR_VARJO_environment_depth_estimation -->
<command successcodes="XR_SUCCESS,XR_SESSION_LOSS_PENDING" errorcodes="XR_ERROR_INSTANCE_LOST,XR_ERROR_SESSION_LOST,XR_ERROR_RUNTIME_FAILURE,XR_ERROR_HANDLE_INVALID,XR_ERROR_FEATURE_UNSUPPORTED,XR_ERROR_FUNCTION_UNSUPPORTED">
<proto><type>XrResult</type> <name>xrSetEnvironmentDepthEstimationVARJO</name></proto>
<param><type>XrSession</type> <name>session</name></param>
<param><type>XrBool32</type> <name>enabled</name></param>
</command>
</commands>
<!-- SECTION: OpenXR API interface definitions -->
@ -2682,7 +2735,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<!-- Vulkan image format list extension -->
<extension name="XR_KHR_vulkan_swapchain_format_list" number="15" type="instance" requires="XR_KHR_vulkan_enable" supported="openxr" protect="XR_USE_GRAPHICS_API_VULKAN">
<require>
<enum value="3" name="XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION"/>
<enum value="4" name="XR_KHR_vulkan_swapchain_format_list_SPEC_VERSION"/>
<enum value="&quot;XR_KHR_vulkan_swapchain_format_list&quot;" name="XR_KHR_VULKAN_SWAPCHAIN_FORMAT_LIST_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR"/>
<type name="XrVulkanSwapchainFormatListCreateInfoKHR"/>
@ -2692,7 +2745,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<!-- Performance Settings extension -->
<extension name="XR_EXT_performance_settings" number="16" type="instance" supported="openxr">
<require>
<enum value="1" name="XR_EXT_performance_settings_SPEC_VERSION"/>
<enum value="2" name="XR_EXT_performance_settings_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_performance_settings&quot;" name="XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT"/>
<type name="XrPerfSettingsDomainEXT"/>
@ -2815,7 +2868,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<!-- Vulkan graphics binding extension -->
<extension name="XR_KHR_vulkan_enable" number="26" type="instance" protect="XR_USE_GRAPHICS_API_VULKAN" supported="openxr">
<require>
<enum value="7" name="XR_KHR_vulkan_enable_SPEC_VERSION"/>
<enum value="8" name="XR_KHR_vulkan_enable_SPEC_VERSION"/>
<enum value="&quot;XR_KHR_vulkan_enable&quot;" name="XR_KHR_VULKAN_ENABLE_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR"/>
<enum offset="1" extends="XrStructureType" name="XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR"/>
@ -2913,7 +2966,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<!-- Overlay preview extension -->
<extension name="XR_EXTX_overlay" number="34" type="instance" provisional="true" supported="openxr">
<require>
<enum value="4" name="XR_EXTX_overlay_SPEC_VERSION"/>
<enum value="5" name="XR_EXTX_overlay_SPEC_VERSION"/>
<enum value="&quot;XR_EXTX_overlay&quot;" name="XR_EXTX_OVERLAY_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX"/>
<enum offset="3" extends="XrStructureType" name="XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX"/>
@ -3036,7 +3089,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<extension name="XR_EXT_conformance_automation" number="48" type="instance" supported="openxr">
<require>
<enum value="1" name="XR_EXT_conformance_automation_SPEC_VERSION"/>
<enum value="2" name="XR_EXT_conformance_automation_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_conformance_automation&quot;" name="XR_EXT_CONFORMANCE_AUTOMATION_EXTENSION_NAME"/>
<command name="xrSetInputDeviceActiveEXT"/>
<command name="xrSetInputDeviceStateBoolEXT"/>
@ -3075,7 +3128,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<extension name="XR_EXT_hand_tracking" number="52" type="instance" supported="openxr">
<require>
<enum value="2" name="XR_EXT_hand_tracking_SPEC_VERSION"/>
<enum value="3" name="XR_EXT_hand_tracking_SPEC_VERSION"/>
<enum value="&quot;XR_EXT_hand_tracking&quot;" name="XR_EXT_HAND_TRACKING_EXTENSION_NAME"/>
<command name="xrCreateHandTrackerEXT"/>
@ -3108,7 +3161,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<extension name="XR_MSFT_hand_tracking_mesh" number="53"
requires="XR_EXT_hand_tracking" type="instance" supported="openxr">
<require>
<enum value="2" name="XR_MSFT_hand_tracking_mesh_SPEC_VERSION"/>
<enum value="3" name="XR_MSFT_hand_tracking_mesh_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_hand_tracking_mesh&quot;" name="XR_MSFT_HAND_TRACKING_MESH_EXTENSION_NAME"/>
<command name="xrCreateHandMeshSpaceMSFT"/>
@ -3209,10 +3262,10 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
</require>
</extension>
<extension name="XR_MAGICLEAP_extension_59" number="59" type="instance" supported="disabled">
<extension name="XR_ML_extension_59" number="59" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MAGICLEAP_extension_59_SPEC_VERSION"/>
<enum value="&quot;XR_MAGICLEAP_extension_59&quot;" name="XR_MAGICLEAP_extension_59_EXTENSION_NAME"/>
<enum value="1" name="XR_ML_extension_59_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_59&quot;" name="XR_ML_extension_59_EXTENSION_NAME"/>
</require>
</extension>
@ -3283,10 +3336,13 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
</require>
</extension>
<extension name="XR_FB_extension_71" number="71" type="instance" supported="disabled">
<extension name="XR_FB_android_surface_swapchain_create" number="71" type="instance" supported="openxr" protect="XR_USE_PLATFORM_ANDROID" requires="XR_KHR_android_surface_swapchain">
<require>
<enum value="1" name="XR_FB_extension_71_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_71&quot;" name="XR_FB_extension_71_EXTENSION_NAME"/>
<enum value="1" name="XR_FB_android_surface_swapchain_create_SPEC_VERSION"/>
<enum value="&quot;XR_FB_android_surface_swapchain_create&quot;" name="XR_FB_ANDROID_SURFACE_SWAPCHAIN_CREATE_EXTENSION_NAME"/>
<type name="XrAndroidSurfaceSwapchainCreateInfoFB"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB"/>
</require>
</extension>
@ -3431,7 +3487,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<extension name="XR_KHR_vulkan_enable2" number="91" type="instance" protect="XR_USE_GRAPHICS_API_VULKAN" supported="openxr">
<require>
<enum value="1" name="XR_KHR_vulkan_enable2_SPEC_VERSION"/>
<enum value="2" name="XR_KHR_vulkan_enable2_SPEC_VERSION"/>
<enum value="&quot;XR_KHR_vulkan_enable2&quot;" name="XR_KHR_VULKAN_ENABLE2_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR"/>
<enum offset="1" extends="XrStructureType" name="XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR"/>
@ -3467,6 +3523,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="&quot;XR_EXT_extension_93&quot;" name="XR_EXT_extension_93_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_EXT_extension_94" number="94" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_EXT_extension_94_SPEC_VERSION"/>
@ -3502,18 +3559,21 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="&quot;XR_MSFT_extension_98&quot;" name="XR_MSFT_extension_98_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_99" number="99" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_99_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_99&quot;" name="XR_MSFT_extension_99_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_100" number="100" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_100_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_100&quot;" name="XR_MSFT_extension_100_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_101" number="101" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_101_SPEC_VERSION"/>
@ -3528,7 +3588,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<type name="XrEventDataDisplayRefreshRateChangedFB"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB"/>
<command name="xrEnumerateDisplayRefreshRatesFB"/>
<command name="xrGetDisplayRefreshRateFB"/>
<command name="xrRequestDisplayRefreshRateFB"/>
@ -3570,14 +3630,14 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="&quot;XR_HTC_extension_107&quot;" name="XR_HTC_extension_107_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_HTC_extension_108" number="108" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_HTC_extension_108_SPEC_VERSION"/>
<enum value="&quot;XR_HTC_extension_108&quot;" name="XR_HTC_extension_108_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_color_space" number="109" type="instance" supported="openxr">
<require>
<enum value="1" name="XR_FB_color_space_SPEC_VERSION"/>
@ -3670,6 +3730,7 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<enum value="&quot;XR_FB_extension_120&quot;" name="XR_FB_extension_120_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_KHR_binding_modification" number="121" type="instance" supported="openxr">
<require>
<enum value="1" name="XR_KHR_binding_modification_SPEC_VERSION"/>
@ -3679,6 +3740,327 @@ maintained in the default branch of the Khronos OpenXR GitHub project.
<type name="XrBindingModificationBaseHeaderKHR"/>
</require>
</extension>
<extension name="XR_VARJO_foveated_rendering" number="122" type="instance" requires="XR_VARJO_quad_views" supported="openxr">
<require>
<enum value="1" name="XR_VARJO_foveated_rendering_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_foveated_rendering&quot;" name="XR_VARJO_FOVEATED_RENDERING_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO"/>
<enum offset="1" extends="XrStructureType" name="XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO"/>
<enum offset="2" extends="XrStructureType" name="XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO"/>
<enum offset="0" extends="XrReferenceSpaceType" name="XR_REFERENCE_SPACE_TYPE_COMBINED_EYE_VARJO"/>
<type name="XrViewLocateFoveatedRenderingVARJO"/>
<type name="XrFoveatedViewConfigurationViewVARJO"/>
<type name="XrSystemFoveatedRenderingPropertiesVARJO"/>
</require>
</extension>
<extension name="XR_VARJO_composition_layer_depth_test" number="123" type="instance" requires="XR_KHR_composition_layer_depth" supported="openxr">
<require>
<enum value="1" name="XR_VARJO_composition_layer_depth_test_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_composition_layer_depth_test&quot;" name="XR_VARJO_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME"/>
<enum offset="0" extends="XrStructureType" name="XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO"/>
<type name="XrCompositionLayerDepthTestVARJO"/>
</require>
</extension>
<extension name="XR_VARJO_environment_depth_estimation" number="124" type="instance" supported="openxr">
<require>
<enum value="1" name="XR_VARJO_environment_depth_estimation_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_environment_depth_estimation&quot;" name="XR_VARJO_ENVIRONMENT_DEPTH_ESTIMATION_EXTENSION_NAME"/>
<command name="xrSetEnvironmentDepthEstimationVARJO" />
</require>
</extension>
<extension name="XR_VARJO_extension_125" number="125" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_125_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_125&quot;" name="XR_VARJO_extension_125_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_126" number="126" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_126_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_126&quot;" name="XR_VARJO_extension_126_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_127" number="127" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_127_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_127&quot;" name="XR_VARJO_extension_127_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_128" number="128" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_128_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_128&quot;" name="XR_VARJO_extension_128_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_129" number="129" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_129_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_129&quot;" name="XR_VARJO_extension_129_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_130" number="130" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_130_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_130&quot;" name="XR_VARJO_extension_130_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_131" number="131" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_131_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_131&quot;" name="XR_VARJO_extension_131_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_VARJO_extension_132" number="132" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_VARJO_extension_132_SPEC_VERSION"/>
<enum value="&quot;XR_VARJO_extension_132&quot;" name="XR_VARJO_extension_132_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_133" number="133" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_133_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_133&quot;" name="XR_ML_extension_133_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_134" number="134" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_134_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_134&quot;" name="XR_ML_extension_134_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_135" number="135" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_135_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_135&quot;" name="XR_ML_extension_135_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_136" number="136" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_136_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_136&quot;" name="XR_ML_extension_136_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_137" number="137" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_137_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_137&quot;" name="XR_ML_extension_137_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_138" number="138" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_138_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_138&quot;" name="XR_ML_extension_138_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_139" number="139" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_139_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_139&quot;" name="XR_ML_extension_139_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_140" number="140" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_140_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_140&quot;" name="XR_ML_extension_140_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_141" number="141" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_141_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_141&quot;" name="XR_ML_extension_141_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ML_extension_142" number="142" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ML_extension_142_SPEC_VERSION"/>
<enum value="&quot;XR_ML_extension_142&quot;" name="XR_ML_extension_142_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_143" number="143" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_143_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_143&quot;" name="XR_MSFT_extension_143_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_144" number="144" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_144_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_144&quot;" name="XR_MSFT_extension_144_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_145" number="145" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_145_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_145&quot;" name="XR_MSFT_extension_145_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_146" number="146" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_146_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_146&quot;" name="XR_MSFT_extension_146_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_147" number="147" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_147_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_147&quot;" name="XR_MSFT_extension_147_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_MSFT_extension_148" number="148" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_MSFT_extension_148_SPEC_VERSION"/>
<enum value="&quot;XR_MSFT_extension_148&quot;" name="XR_MSFT_extension_148_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_KHR_extension_149" number="149" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_KHR_extension_149_SPEC_VERSION"/>
<enum value="&quot;XR_KHR_extension_149&quot;" name="XR_KHR_extension_149_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ULTRALEAP_extension_150" number="150" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ULTRALEAP_extension_150_SPEC_VERSION"/>
<enum value="&quot;XR_ULTRALEAP_extension_150&quot;" name="XR_ULTRALEAP_extension_150_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ULTRALEAP_extension_151" number="151" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ULTRALEAP_extension_151_SPEC_VERSION"/>
<enum value="&quot;XR_ULTRALEAP_extension_151&quot;" name="XR_ULTRALEAP_extension_151_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ULTRALEAP_extension_152" number="152" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ULTRALEAP_extension_152_SPEC_VERSION"/>
<enum value="&quot;XR_ULTRALEAP_extension_152&quot;" name="XR_ULTRALEAP_extension_152_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ULTRALEAP_extension_153" number="153" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ULTRALEAP_extension_153_SPEC_VERSION"/>
<enum value="&quot;XR_ULTRALEAP_extension_153&quot;" name="XR_ULTRALEAP_extension_153_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ULTRALEAP_extension_154" number="154" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ULTRALEAP_extension_154_SPEC_VERSION"/>
<enum value="&quot;XR_ULTRALEAP_extension_154&quot;" name="XR_ULTRALEAP_extension_154_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_ULTRALEAP_extension_155" number="155" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_ULTRALEAP_extension_155_SPEC_VERSION"/>
<enum value="&quot;XR_ULTRALEAP_extension_155&quot;" name="XR_ULTRALEAP_extension_155_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_156" number="156" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_156_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_156&quot;" name="XR_FB_extension_156_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_157" number="157" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_157_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_157&quot;" name="XR_FB_extension_157_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_158" number="158" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_158_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_158&quot;" name="XR_FB_extension_158_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_159" number="159" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_159_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_159&quot;" name="XR_FB_extension_159_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_160" number="160" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_160_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_160&quot;" name="XR_FB_extension_160_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_161" number="161" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_161_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_161&quot;" name="XR_FB_extension_161_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_162" number="162" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_162_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_162&quot;" name="XR_FB_extension_162_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_163" number="163" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_163_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_163&quot;" name="XR_FB_extension_163_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_164" number="164" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_164_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_164&quot;" name="XR_FB_extension_164_EXTENSION_NAME"/>
</require>
</extension>
<extension name="XR_FB_extension_165" number="165" type="instance" supported="disabled">
<require>
<enum value="1" name="XR_FB_extension_165_SPEC_VERSION"/>
<enum value="&quot;XR_FB_extension_165&quot;" name="XR_FB_extension_165_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
</registry>