Skip to content

Commit

Permalink
OpenXR CTS 1.1.42.0 (2024-11-07)
Browse files Browse the repository at this point in the history
This release, like the previous one, has a separate “Usage Guide”
document with instructions and command lines, instead of a complex
README. See the previous release notes for more info.

There is one known issue in this release, but it only affects the
self-tests (not required for conformance) under OpenGL. Passing
exclude:[self_test] when running interactive tests with OpenGL will work
around the issue. A fix is known and in review, expected by next
release.

-   Conformance Tests
    -   Fix: Update generated code to allow - in interaction profile
        paths. (internal MR 3493)
    -   Fix: Allow interaction profiles which do not expose boolean
        paths to be tested. (internal MR 3506)
    -   Fix: Include interaction profile dependencies in generated
        binding path dependencies. (internal MR 3507, internal issue
        2350)
    -   Fix: Correctly parse and process interaction profile path and
        binding path dependencies from XML, and clean up code in
        interaction_profile_processor.py. (internal MR 3507, internal MR
        3521)
    -   Fix: Add missing XML description of EXT_hand_interaction
        additions to several interaction profiles, affecting generated
        interaction profile tests. (internal MR 3517, internal MR 3541,
        internal MR 3544)
    -   Fix: remove unused functionPtr field in global FunctionInfoMap
        as it is invalid if called with a different instance. (internal
        MR 3547)
    -   Fix: Correct an outdated description of the self tests in the
        Usage document: glTF files now load asynchronously in those
        tests. (internal MR 3553)
    -   Fix: Internal cross-references in the “Submission Package”
        section of the Usage document. (internal MR 3562)
    -   Improvement: Update stb_image from 2.27 to 2.30 (latest
        upstream) for fixes, security improvements, and optimizations.
        (internal MR 2578)
    -   Improvement: Update stb_typetype to latest upstream for float
        comparison fixes. (internal MR 2578)
    -   Improvement: Update Catch2 from v3.3.2 to v3.7.1, including our
        custom fork of the jUnit reporter. Provides build-time and
        runtime performance improvements, among other changes. (internal
        MR 2893)
    -   Improvement: Reorganize session state tests and use test
        sections, annotating assertions with spec links. (internal MR
        3017, internal MR 3468)
    -   Improvement: Update tinygltf to version 2.9.3. (internal MR
        3366)
    -   Improvement: List failed test cases, and unmatched test specs,
        at end of CTS run. (internal MR 3489)
    -   Improvement: Add warnings if supporting OpenXR 1.1 but not
        supporting optional, but recommended, extensions providing
        compatibility for OpenXR 1.0 apps/engines. (internal MR 3499)
    -   Improvement: Make generated interaction profile sources
        reproducible/deterministic. (internal MR 3507)
    -   Improvement: Correct the build-time dependencies of the
        generated interaction profile data. (internal MR 3521)
    -   Improvement: Note in the Usage document that
        /interaction_profiles/ext/hand_interaction_ext and
        /interaction_profiles/ext/eye_gaze_interaction are generic
        interaction profiles that should be tested if supported.
        (internal MR 3524, internal MR 3506)
    -   Improvement: Added support for
        PRIMARY_STEREO_WITH_FOVEATED_INSET in xrLocateViews tests.
        (internal MR 3527, internal MR 3571)
    -   Improvement: Add command lines for Android for the self tests in
        the Usage document. (internal MR 3553)
    -   New test: Show a perceptively-smooth gradient in two swapchain
        formats or two layer types (projection vs quad), to do basic
        rendering verification. This primarily catches issues where
        non-linear textures are being interpreted as linear or
        vice-versa in a runtime’s compositor. (internal MR 3351,
        internal issue 2239)
    -   New test: Check xrCreateInstance patterns required by API
        layers. (internal MR 3415, internal issue 2333, OpenXR-CTS PR
        94)
    -   New test: Verify behavior when session state related calls occur
        out of order. (internal MR 3468, internal MR 3579)
    -   New test: When using XR_FB_space_warp, verify runtime returns
        XR_ERROR_VALIDATION_FAILURE if nearZ is equal to farZ (internal
        MR 3523)
    -   New test: Add additional assertions for
        xrGetInputSourceLocalizedName, after removing incorrect portions
        of the test. (internal MR 3534, internal MR 3559)

GitOrigin-RevId: f71e0129647d748aa9d876189d465a01e91965f7
  • Loading branch information
rpavlik committed Nov 8, 2024
1 parent 9020e5e commit 3db438c
Show file tree
Hide file tree
Showing 341 changed files with 21,188 additions and 7,641 deletions.
4 changes: 2 additions & 2 deletions .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ Comment: Based on a Material Icons asset ("emoji-people") with added text
Rasterized with Android Studio.

Files: src/external/catch2/*
Copyright: Copyright (c) 2023 Two Blue Cubes Ltd.
Copyright: Copyright Catch2 Authors
License: BSL-1.0
Comment: Unmodified, vendored copy of Catch2 v3.3.2
Comment: Unmodified, vendored copy of Catch2 v3.7.1

Files: src/external/jsoncpp/*
Copyright: 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
Expand Down
101 changes: 101 additions & 0 deletions CHANGELOG.CTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,107 @@ particular, since it is primarily software, pull requests may be integrated as
they are accepted even between periodic updates. However, versions that are not
signed tags on the `approved` branch are not valid for conformance submission.

## OpenXR CTS 1.1.42.0 (2024-11-07)

This release, like the previous one, has a separate "Usage Guide" document with
instructions and command lines, instead of a complex README. See the previous
release notes for more info.

There is one known issue in this release, but it only affects the self-tests
(not required for conformance) under OpenGL. Passing `exclude:[self_test]` when
running interactive tests with OpenGL will work around the issue. A fix is known
and in review, expected by next release.

- Conformance Tests
- Fix: Update generated code to allow `-` in interaction profile paths.
([internal MR 3493](https://gitlab.khronos.org/openxr/openxr/merge_requests/3493))
- Fix: Allow interaction profiles which do not expose boolean paths to be tested.
([internal MR 3506](https://gitlab.khronos.org/openxr/openxr/merge_requests/3506))
- Fix: Include interaction profile dependencies in generated binding path
dependencies.
([internal MR 3507](https://gitlab.khronos.org/openxr/openxr/merge_requests/3507),
[internal issue 2350](https://gitlab.khronos.org/openxr/openxr/issues/2350))
- Fix: Correctly parse and process interaction profile path and binding path
dependencies from XML, and clean up code in `interaction_profile_processor.py`.
([internal MR 3507](https://gitlab.khronos.org/openxr/openxr/merge_requests/3507),
[internal MR 3521](https://gitlab.khronos.org/openxr/openxr/merge_requests/3521))
- Fix: Add missing XML description of `EXT_hand_interaction` additions to several
interaction profiles, affecting generated interaction profile tests.
([internal MR 3517](https://gitlab.khronos.org/openxr/openxr/merge_requests/3517),
[internal MR 3541](https://gitlab.khronos.org/openxr/openxr/merge_requests/3541),
[internal MR 3544](https://gitlab.khronos.org/openxr/openxr/merge_requests/3544))
- Fix: remove unused `functionPtr` field in global `FunctionInfoMap` as it is
invalid if called with a different instance.
([internal MR 3547](https://gitlab.khronos.org/openxr/openxr/merge_requests/3547))
- Fix: Correct an outdated description of the self tests in the Usage document:
glTF files now load asynchronously in those tests.
([internal MR 3553](https://gitlab.khronos.org/openxr/openxr/merge_requests/3553))
- Fix: Internal cross-references in the "Submission Package" section of the Usage
document.
([internal MR 3562](https://gitlab.khronos.org/openxr/openxr/merge_requests/3562))
- Improvement: Update `stb_image` from 2.27 to 2.30 (latest upstream) for fixes,
security improvements, and optimizations.
([internal MR 2578](https://gitlab.khronos.org/openxr/openxr/merge_requests/2578))
- Improvement: Update `stb_typetype` to latest upstream for float comparison
fixes.
([internal MR 2578](https://gitlab.khronos.org/openxr/openxr/merge_requests/2578))
- Improvement: Update Catch2 from v3.3.2 to v3.7.1, including our custom fork of
the jUnit reporter. Provides build-time and runtime performance improvements,
among other changes.
([internal MR 2893](https://gitlab.khronos.org/openxr/openxr/merge_requests/2893))
- Improvement: Reorganize session state tests and use test sections, annotating
assertions with spec links.
([internal MR 3017](https://gitlab.khronos.org/openxr/openxr/merge_requests/3017),
[internal MR 3468](https://gitlab.khronos.org/openxr/openxr/merge_requests/3468))
- Improvement: Update tinygltf to version 2.9.3.
([internal MR 3366](https://gitlab.khronos.org/openxr/openxr/merge_requests/3366))
- Improvement: List failed test cases, and unmatched test specs, at end of CTS
run.
([internal MR 3489](https://gitlab.khronos.org/openxr/openxr/merge_requests/3489))
- Improvement: Add warnings if supporting OpenXR 1.1 but not supporting optional,
but recommended, extensions providing compatibility for OpenXR 1.0
apps/engines.
([internal MR 3499](https://gitlab.khronos.org/openxr/openxr/merge_requests/3499))
- Improvement: Make generated interaction profile sources
reproducible/deterministic.
([internal MR 3507](https://gitlab.khronos.org/openxr/openxr/merge_requests/3507))
- Improvement: Correct the build-time dependencies of the generated interaction
profile data.
([internal MR 3521](https://gitlab.khronos.org/openxr/openxr/merge_requests/3521))
- Improvement: Note in the Usage document that
`/interaction_profiles/ext/hand_interaction_ext` and
`/interaction_profiles/ext/eye_gaze_interaction` are generic interaction
profiles that should be tested if supported.
([internal MR 3524](https://gitlab.khronos.org/openxr/openxr/merge_requests/3524),
[internal MR 3506](https://gitlab.khronos.org/openxr/openxr/merge_requests/3506))
- Improvement: Added support for `PRIMARY_STEREO_WITH_FOVEATED_INSET` in
`xrLocateViews` tests.
([internal MR 3527](https://gitlab.khronos.org/openxr/openxr/merge_requests/3527),
[internal MR 3571](https://gitlab.khronos.org/openxr/openxr/merge_requests/3571))
- Improvement: Add command lines for Android for the self tests in the Usage
document.
([internal MR 3553](https://gitlab.khronos.org/openxr/openxr/merge_requests/3553))
- New test: Show a perceptively-smooth gradient in two swapchain formats or two
layer types (projection vs quad), to do basic rendering verification. This
primarily catches issues where non-linear textures are being interpreted as
linear or vice-versa in a runtime's compositor.
([internal MR 3351](https://gitlab.khronos.org/openxr/openxr/merge_requests/3351),
[internal issue 2239](https://gitlab.khronos.org/openxr/openxr/issues/2239))
- New test: Check `xrCreateInstance` patterns required by API layers.
([internal MR 3415](https://gitlab.khronos.org/openxr/openxr/merge_requests/3415),
[internal issue 2333](https://gitlab.khronos.org/openxr/openxr/issues/2333),
[OpenXR-CTS PR 94](https://github.com/KhronosGroup/OpenXR-CTS/pull/94))
- New test: Verify behavior when session state related calls occur out of order.
([internal MR 3468](https://gitlab.khronos.org/openxr/openxr/merge_requests/3468),
[internal MR 3579](https://gitlab.khronos.org/openxr/openxr/merge_requests/3579))
- New test: When using `XR_FB_space_warp`, verify runtime returns
`XR_ERROR_VALIDATION_FAILURE` if `nearZ` is equal to `farZ`
([internal MR 3523](https://gitlab.khronos.org/openxr/openxr/merge_requests/3523))
- New test: Add additional assertions for `xrGetInputSourceLocalizedName`, after
removing incorrect portions of the test.
([internal MR 3534](https://gitlab.khronos.org/openxr/openxr/merge_requests/3534),
[internal MR 3559](https://gitlab.khronos.org/openxr/openxr/merge_requests/3559))

## OpenXR CTS 1.1.41.0 (2024-10-10)

An important feature of this release is the new usage guide for the Conformance
Expand Down
2 changes: 0 additions & 2 deletions changes/conformance/mr.2578.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3017.gl.md

This file was deleted.

4 changes: 0 additions & 4 deletions changes/conformance/mr.3351.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3366.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3489.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3493.gl.md

This file was deleted.

4 changes: 0 additions & 4 deletions changes/conformance/mr.3499.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3506.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3507.gl.1.md

This file was deleted.

5 changes: 0 additions & 5 deletions changes/conformance/mr.3507.gl.2.md

This file was deleted.

4 changes: 0 additions & 4 deletions changes/conformance/mr.3507.gl.md

This file was deleted.

6 changes: 0 additions & 6 deletions changes/conformance/mr.3517.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3521.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3523.gl.md

This file was deleted.

4 changes: 0 additions & 4 deletions changes/conformance/mr.3524.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3527.gl.md

This file was deleted.

5 changes: 0 additions & 5 deletions changes/conformance/mr.3534.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3547.gl.md

This file was deleted.

2 changes: 0 additions & 2 deletions changes/conformance/mr.3553.gl.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/conformance/mr.3562.gl.md

This file was deleted.

2 changes: 1 addition & 1 deletion specification/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ ASCIIDOCTOR_TARGETS += $(PDFSPEC) $(PDFA4SPEC)

# Target-specific variables and deps customizing the AsciiDoctor rule
# EXTRAATRIBS is for build-time customization
$(PDFSPEC) $(PDFA4SPEC): BACKEND_ARGS=--backend pdf --require asciidoctor-pdf -a compress --require ./scripts/pdf-index-customizer.rb $(EXTRAATTRIBS)
$(PDFSPEC) $(PDFA4SPEC): BACKEND_ARGS=--backend pdf --require asciidoctor-pdf -a compress --require ./scripts/pdf-index-customizer.rb $(EXTRAATTRIBS)
$(PDFSPEC): PAGESIZE=LETTER
$(PDFA4SPEC): PAGESIZE=A4
$(PDFSPEC) $(PDFA4SPEC): $(COMMONDOCS)
Expand Down
12 changes: 11 additions & 1 deletion src/conformance/conformance_layer/Negotiate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@
#include "HandleState.h"
#include "gen_dispatch.h"

#include <cstring>

namespace
{
static const char* LAYER_NAME = "XR_APILAYER_KHRONOS_runtime_conformance";

XRAPI_ATTR XrResult XRAPI_CALL ConformanceLayer_RegisterInstance(const XrInstanceCreateInfo* createInfo,
const XrApiLayerCreateInfo* apiLayerInfo, XrInstance* instance)
{
Expand Down Expand Up @@ -69,7 +73,7 @@ namespace
// Function used to negotiate an interface betewen the loader and an API layer. Each library exposing one or
// more API layers needs to expose at least this function.
extern "C" LAYER_EXPORT XRAPI_ATTR XrResult XRAPI_CALL xrNegotiateLoaderApiLayerInterface(const XrNegotiateLoaderInfo* loaderInfo,
const char* /*apiLayerName*/,
const char* apiLayerName,
XrNegotiateApiLayerRequest* apiLayerRequest)
{
if (loaderInfo == nullptr || loaderInfo->structType != XR_LOADER_INTERFACE_STRUCT_LOADER_INFO ||
Expand All @@ -92,6 +96,12 @@ extern "C" LAYER_EXPORT XRAPI_ATTR XrResult XRAPI_CALL xrNegotiateLoaderApiLayer
return XR_ERROR_INITIALIZATION_FAILED;
}

if (strcmp(apiLayerName, LAYER_NAME) != 0) {
// TODO: Log reason somehow.
// LogPlatformUtilsError("loader layer name does not match expected name");
return XR_ERROR_INITIALIZATION_FAILED;
}

if (apiLayerRequest == nullptr || apiLayerRequest->structType != XR_LOADER_INTERFACE_STRUCT_API_LAYER_REQUEST ||
apiLayerRequest->structVersion != XR_API_LAYER_INFO_STRUCT_VERSION ||
apiLayerRequest->structSize != sizeof(XrNegotiateApiLayerRequest)) {
Expand Down
47 changes: 47 additions & 0 deletions src/conformance/conformance_test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ file(
)
file(GLOB VULKAN_SHADERS "vulkan_shaders/*.glsl")

configure_file(
conformance_test_layer.json
${CMAKE_CURRENT_BINARY_DIR}/XrApiLayer_conformance_test_layer.json @ONLY
)

# Check to see if git-lfs is working right
file(STRINGS gltf_examples/VertexColorTest.glb LFS_CHECK_STRINGS)
if(LFS_CHECK_STRINGS MATCHES "https://git-lfs[.]github[.]com/spec/v1")
Expand Down Expand Up @@ -153,6 +158,38 @@ if(ANDROID)
)
endif()

# Dynamic Library:
# - Make build depend on the module definition/version script/export map
# - Add the linker flag (except windows)
if(WIN32)
target_sources(
conformance_test
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/conformance_test.def"
)
elseif(APPLE)
set_target_properties(
conformance_test
PROPERTIES
LINK_FLAGS
"-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/conformance_test.expsym"
)
target_sources(
conformance_test
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/conformance_test.expsym"
)
else()
set_target_properties(
conformance_test
PROPERTIES
LINK_FLAGS
"-Wl,--version-script=\"${CMAKE_CURRENT_SOURCE_DIR}/conformance_test.map\""
)
target_sources(
conformance_test
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/conformance_test.map"
)
endif()

if(BUILD_CONFORMANCE_CLI)
# Copy conformance_test assets files to the conformance_cli binary folder
foreach(ASSET ${ASSETS})
Expand All @@ -174,6 +211,16 @@ if(BUILD_CONFORMANCE_CLI)
${CMAKE_COMMAND} -E copy $<TARGET_FILE:conformance_test>
$<TARGET_PROPERTY:conformance_cli,BINARY_DIR>
)

# Copy test layer files to conformance_cli binary folder
add_custom_command(
TARGET conformance_test
POST_BUILD
COMMAND
${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/XrApiLayer_conformance_test_layer.json
$<TARGET_PROPERTY:conformance_cli,BINARY_DIR>
)
endif()

set_target_properties(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"file_format_version": "1.0.0",
"api_layer": {
"name": "XR_APILAYER_KHRONOS_conformance_test_layer",
"library_path": "libconformance_test.so",
"api_version": "1.1",
"implementation_version": "1",
"description": "API Layer to validate OpenXR runtime conformance",
"disable_environment": "KHRONOS_conformance_test_layer_disabled",
"functions": {
"xrNegotiateLoaderApiLayerInterface": "testLayer_xrNegotiateLoaderApiLayerInterface"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2019-2024, The Khronos Group Inc.

SPDX-License-Identifier: Apache-2.0
3 changes: 2 additions & 1 deletion src/conformance/conformance_test/conformance_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
#include <catch2/catch_session.hpp>
#include <catch2/catch_test_case_info.hpp>
#include <catch2/catch_test_macros.hpp>
#include <catch2/internal/catch_clara.hpp> // for customizing arg parsing
#include <catch2/internal/catch_clara.hpp> // for customizing arg parsing
#include <catch2/internal/catch_test_case_registry_impl.hpp> // for getAllTestCasesSorted
#include <catch2/reporters/catch_reporter_event_listener.hpp>
#include <catch2/reporters/catch_reporter_registrars.hpp>

Expand Down
9 changes: 9 additions & 0 deletions src/conformance/conformance_test/conformance_test.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
; Copyright (c) 2019-2024, The Khronos Group Inc.
;
; SPDX-License-Identifier: Apache-2.0

EXPORTS
testLayer_xrNegotiateLoaderApiLayerInterface
xrcCleanup
xrcEnumerateTestCases
xrcRunConformanceTests
8 changes: 8 additions & 0 deletions src/conformance/conformance_test/conformance_test.expsym
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (c) 2019-2024, The Khronos Group Inc.
#
# SPDX-License-Identifier: Apache-2.0

_testLayer_xrNegotiateLoaderApiLayerInterface
_xrcCleanup
_xrcEnumerateTestCases
_xrcRunConformanceTests
15 changes: 15 additions & 0 deletions src/conformance/conformance_test/conformance_test.map
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
Copyright (c) 2019-2024, The Khronos Group Inc.

SPDX-License-Identifier: Apache-2.0
*/

{
global:
testLayer_xrNegotiateLoaderApiLayerInterface;
xrcCleanup;
xrcEnumerateTestCases;
xrcRunConformanceTests;
local:
*;
};
14 changes: 14 additions & 0 deletions src/conformance/conformance_test/conformance_test_layer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"file_format_version": "1.0.0",
"api_layer": {
"name": "XR_APILAYER_KHRONOS_conformance_test_layer",
"library_path": "./@CMAKE_SHARED_MODULE_PREFIX@conformance_test@CMAKE_SHARED_MODULE_SUFFIX@",
"api_version": "1.0",
"implementation_version": "1",
"description": "API Layer to validate OpenXR runtime conformance",
"disable_environment": "KHRONOS_conformance_test_layer_disabled",
"functions": {
"xrNegotiateLoaderApiLayerInterface": "testLayer_xrNegotiateLoaderApiLayerInterface"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2019-2024, The Khronos Group Inc.

SPDX-License-Identifier: Apache-2.0
Loading

0 comments on commit 3db438c

Please sign in to comment.