diff --git a/.github/workflows/android-cts-build.yml b/.github/workflows/android-cts-build.yml index f7e0afad..89fc1293 100644 --- a/.github/workflows/android-cts-build.yml +++ b/.github/workflows/android-cts-build.yml @@ -24,7 +24,7 @@ jobs: lfs: true - name: Get modern CMake and Ninja - uses: lukka/get-cmake@v3.29.5 + uses: lukka/get-cmake@v3.30.2 - name: set up JDK 11 uses: actions/setup-java@v4 @@ -33,13 +33,14 @@ jobs: distribution: "temurin" cache: gradle - - uses: "gradle/actions/setup-gradle@v3" + # Also performs Gradle wrapper validation + - uses: "gradle/actions/setup-gradle@v4" - name: "Build with Gradle" run: "cd src/conformance && ./gradlew ${{ inputs.gradleTask }}" - name: Upload unsigned artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: android-openxr-cts-unsigned path: ${{ inputs.gradleOutputDir }} diff --git a/.github/workflows/android-cts-pr.yml b/.github/workflows/android-cts-pr.yml index f94a4e93..30eedff7 100644 --- a/.github/workflows/android-cts-pr.yml +++ b/.github/workflows/android-cts-pr.yml @@ -19,7 +19,7 @@ jobs: lfs: true - name: Get modern CMake and Ninja - uses: lukka/get-cmake@v3.29.5 + uses: lukka/get-cmake@v3.30.2 - name: set up JDK 11 uses: actions/setup-java@v4 @@ -28,13 +28,14 @@ jobs: distribution: "temurin" cache: gradle - - uses: "gradle/actions/setup-gradle@v3" + # Also performs Gradle wrapper validation + - uses: "gradle/actions/setup-gradle@v4" - name: "Build with Gradle" run: "cd src/conformance && ./gradlew assembleDebug" - name: Upload OpenXR-CTS Android - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: OpenXR-CTS Android path: src/conformance/build/outputs/apk/debug/conformance-debug.apk diff --git a/.github/workflows/check_clang_format_and_codespell.yml b/.github/workflows/check_clang_format_and_codespell.yml index c40e5bf5..b8dedc16 100644 --- a/.github/workflows/check_clang_format_and_codespell.yml +++ b/.github/workflows/check_clang_format_and_codespell.yml @@ -28,7 +28,7 @@ jobs: if: ${{ failure() }} - name: Publish diff if: ${{ failure() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: path: ${{ runner.temp }}/clang-format.patch name: clang-format-changes diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml index 75f94ea3..f9ae3673 100644 --- a/.github/workflows/gradle-wrapper-validation.yml +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -2,6 +2,7 @@ # # SPDX-License-Identifier: CC0-1.0 +# Probably no longer needed as long as we have another Gradle build. name: Validate Gradle Wrapper on: diff --git a/.github/workflows/msvc-build-preset.yml b/.github/workflows/msvc-build-preset.yml index d9670136..0a2fcdfe 100644 --- a/.github/workflows/msvc-build-preset.yml +++ b/.github/workflows/msvc-build-preset.yml @@ -34,7 +34,7 @@ jobs: lfs: true - name: Get modern CMake and Ninja - uses: lukka/get-cmake@v3.30.1 + uses: lukka/get-cmake@v3.30.2 - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v2 @@ -57,7 +57,7 @@ jobs: run: "cmake --build $env:RUNNER_TEMP --parallel --config ${{ inputs.buildType }} --target install" - name: Upload Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: inputs.artifactName with: name: "${{ inputs.artifactName }}" diff --git a/.github/workflows/windows-cts-release.yml b/.github/workflows/windows-cts-release.yml index cab18346..6a6307ae 100644 --- a/.github/workflows/windows-cts-release.yml +++ b/.github/workflows/windows-cts-release.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Retrieve Win32 build - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: openxr-cts-win32 path: openxr-cts-win32 @@ -40,7 +40,7 @@ jobs: run: '7za a "$TAGNAME-win32.zip" openxr-cts-win32' - name: Retrieve x64 build - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: openxr-cts-x64 path: openxr-cts-x64 diff --git a/CHANGELOG.CTS.md b/CHANGELOG.CTS.md index 292b985a..4e3bff52 100644 --- a/CHANGELOG.CTS.md +++ b/CHANGELOG.CTS.md @@ -17,6 +17,63 @@ 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.40.0 (2024-08-29) + +- Conformance Tests + - Fix: Ensure that existing tests for `type` member verification only run when + selected, and only test that member as invalid. + ([internal MR 3287](https://gitlab.khronos.org/openxr/openxr/merge_requests/3287), + [internal issue 2170](https://gitlab.khronos.org/openxr/openxr/issues/2170), + [internal issue 2301](https://gitlab.khronos.org/openxr/openxr/issues/2301)) + - Fix: Swapchain leak in test helper. + ([internal MR 3386](https://gitlab.khronos.org/openxr/openxr/merge_requests/3386)) + - Fix: Resolve some C++ sanitizer issues. + ([internal MR 3453](https://gitlab.khronos.org/openxr/openxr/merge_requests/3453)) + - Fix: Temporarily disable faulty assertions about the Z axis in the + grip_surface/palm_ext pose test. + ([internal MR 3465](https://gitlab.khronos.org/openxr/openxr/merge_requests/3465)) + - Improvement: Supply Metal graphics plugin for running conformance test on macOS + with `XR_KHR_metal_enable` extension. + ([internal MR 3009](https://gitlab.khronos.org/openxr/openxr/merge_requests/3009)) + - Improvement: Verify more two-call-idiom outputs in the conformance layer. + ([internal MR 3282](https://gitlab.khronos.org/openxr/openxr/merge_requests/3282)) + - Improvement: Update CTS layer to verify that all enumerations of reference + spaces contain `LOCAL_FLOOR` if they are required to. + ([internal MR 3283](https://gitlab.khronos.org/openxr/openxr/merge_requests/3283)) + - Improvement: Optionally verify that the runtime validates struct `.type` member + in various places. + ([internal MR 3287](https://gitlab.khronos.org/openxr/openxr/merge_requests/3287), + [internal issue 2170](https://gitlab.khronos.org/openxr/openxr/issues/2170), + [internal issue 2301](https://gitlab.khronos.org/openxr/openxr/issues/2301)) + - Improvement: Simplify grip_surface/palm_ext pose test and support conformance + automation extension in it, among other improvements to it. + ([internal MR 3331](https://gitlab.khronos.org/openxr/openxr/merge_requests/3331), + [internal issue 2259](https://gitlab.khronos.org/openxr/openxr/issues/2259)) + - Improvement: Clean up usage of RAII mutex lock guards. + ([internal MR 3336](https://gitlab.khronos.org/openxr/openxr/merge_requests/3336)) + - Improvement: Add `xr_math_operators.h` to unify C++ math wrappers for CTS. + ([internal MR 3349](https://gitlab.khronos.org/openxr/openxr/merge_requests/3349), + [internal MR 3431](https://gitlab.khronos.org/openxr/openxr/merge_requests/3431)) + - Improvement: Code cleanups in `GetSwapchainCreateTestParameters` and related + tests. + ([internal MR 3369](https://gitlab.khronos.org/openxr/openxr/merge_requests/3369)) + - Improvement: Specify names through the debug extension for more Vulkan objects, + for improved ease of debugging. + ([internal MR 3422](https://gitlab.khronos.org/openxr/openxr/merge_requests/3422)) + - Improvement: Add basic SNORM formats to table of runtime-supported formats + testable on OpenGL. + ([internal MR 3427](https://gitlab.khronos.org/openxr/openxr/merge_requests/3427)) + - New test: Interactive test for new `XR_EXT_composition_layer_inverted_alpha` + extension. + ([internal MR 3085](https://gitlab.khronos.org/openxr/openxr/merge_requests/3085)) + - New test: Check that an action with no suggested bindings is not bound/active. + ([internal MR 3256](https://gitlab.khronos.org/openxr/openxr/merge_requests/3256), + [internal issue 1609](https://gitlab.khronos.org/openxr/openxr/issues/1609)) + - New test: Verify that the string returned by `xrGetInputSourceLocalizedName` is + null-terminated. + ([internal MR 3380](https://gitlab.khronos.org/openxr/openxr/merge_requests/3380), + [internal issue 2300](https://gitlab.khronos.org/openxr/openxr/issues/2300)) + ## OpenXR CTS 1.1.37.0 (2024-06-06) - Conformance Tests diff --git a/changes/conformance/mr.3009.gl.md b/changes/conformance/mr.3009.gl.md deleted file mode 100644 index 82fa075f..00000000 --- a/changes/conformance/mr.3009.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Supply Metal graphics plugin for running conformance test on macOS with `XR_KHR_metal_enable` extension. diff --git a/changes/conformance/mr.3085.gl.md b/changes/conformance/mr.3085.gl.md deleted file mode 100644 index 52565261..00000000 --- a/changes/conformance/mr.3085.gl.md +++ /dev/null @@ -1 +0,0 @@ -New test: Interactive test for new `XR_EXT_composition_layer_inverted_alpha` extension. diff --git a/changes/conformance/mr.3256.gl.md b/changes/conformance/mr.3256.gl.md deleted file mode 100644 index 7acbb353..00000000 --- a/changes/conformance/mr.3256.gl.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -- issue.1609.gl ---- -New test: Check that an action with no suggested bindings is not bound/active. diff --git a/changes/conformance/mr.3282.gl.md b/changes/conformance/mr.3282.gl.md deleted file mode 100644 index 43f9d08c..00000000 --- a/changes/conformance/mr.3282.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Verify more two-call-idiom outputs in the conformance layer. diff --git a/changes/conformance/mr.3283.gl.md b/changes/conformance/mr.3283.gl.md deleted file mode 100644 index e5b9dc2c..00000000 --- a/changes/conformance/mr.3283.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Update CTS layer to verify that all enumerations of reference spaces contain LOCAL_FLOOR if they are required to. diff --git a/changes/conformance/mr.3287.gl.md b/changes/conformance/mr.3287.gl.md deleted file mode 100644 index 86cebc55..00000000 --- a/changes/conformance/mr.3287.gl.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -- issue.2170 -- issue.2301 ---- -- Improvement: Optionally verify that the runtime validates struct `.type` member in various places. -- Fix: Ensure that existing tests for `type` member verification only run when selected, and only test that member as invalid. diff --git a/changes/conformance/mr.3331.gl.md b/changes/conformance/mr.3331.gl.md deleted file mode 100644 index 85ebbcbc..00000000 --- a/changes/conformance/mr.3331.gl.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -- issue.2259.gl ---- -Improvement: Simplify grip surface (palm pose) test and support conformance automation extension in it, among other improvements to it. diff --git a/changes/conformance/mr.3336.gl.md b/changes/conformance/mr.3336.gl.md deleted file mode 100644 index 2781a63f..00000000 --- a/changes/conformance/mr.3336.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Clean up usage of RAII mutex lock guards. diff --git a/changes/conformance/mr.3349.gl.md b/changes/conformance/mr.3349.gl.md deleted file mode 100644 index b1cc2cc5..00000000 --- a/changes/conformance/mr.3349.gl.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -- mr.3349.gl -- mr.3431.gl ---- -Improvement: Add `xr_math_operators.h` to unify C++ math wrappers for CTS. diff --git a/changes/conformance/mr.3369.gl.md b/changes/conformance/mr.3369.gl.md deleted file mode 100644 index 027d115d..00000000 --- a/changes/conformance/mr.3369.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Code cleanups in `GetSwapchainCreateTestParameters` and related tests. diff --git a/changes/conformance/mr.3380.gl.md b/changes/conformance/mr.3380.gl.md deleted file mode 100644 index ca1ddd9b..00000000 --- a/changes/conformance/mr.3380.gl.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -- issue.2300.gl ---- -New test: Verify that the string returned by `xrGetInputSourceLocalizedName` is null-terminated. diff --git a/changes/conformance/mr.3386.gl.md b/changes/conformance/mr.3386.gl.md deleted file mode 100644 index b6c1f60a..00000000 --- a/changes/conformance/mr.3386.gl.md +++ /dev/null @@ -1 +0,0 @@ -Fix: Swapchain leak in test helper. diff --git a/changes/conformance/mr.3422.gl.md b/changes/conformance/mr.3422.gl.md deleted file mode 100644 index fad54ebc..00000000 --- a/changes/conformance/mr.3422.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Specify names through the debug extension for more Vulkan objects, for improved ease of debugging. diff --git a/changes/conformance/mr.3427.gl.md b/changes/conformance/mr.3427.gl.md deleted file mode 100644 index 9593c9a1..00000000 --- a/changes/conformance/mr.3427.gl.md +++ /dev/null @@ -1 +0,0 @@ -Improvement: Add basic SNORM formats to table of runtime-supported formats testable on OpenGL. diff --git a/src/conformance/conformance_test/test_XR_EXT_palm_pose.cpp b/src/conformance/conformance_test/test_XR_EXT_palm_pose.cpp index bc602770..e8471e5d 100644 --- a/src/conformance/conformance_test/test_XR_EXT_palm_pose.cpp +++ b/src/conformance/conformance_test/test_XR_EXT_palm_pose.cpp @@ -748,6 +748,9 @@ namespace Conformance XrVector3f gripSurfaceZDirection = Quat::RotateVector(gripSurfaceLocation.pose.orientation, zAxis); INFO("gripSurfaceZDirection is the local Z axis of grip_surface/palm_ext relative to grip space"); CAPTURE(gripSurfaceZDirection); + +// assertions temporarily disabled for revision +#if 0 if (i == 0) { // Test that the z axis (direction from the palm center to the wrist) of grip surface points "to the left" in grip space. // This should be true for all usual controllers. If this is not true for your controller, you may need to adapt or discard this test. @@ -765,6 +768,7 @@ namespace Conformance // This should be true for all usual controllers. If this is not true for your controller, you may need to adapt or discard this test. CHECK(gripSurfaceZDirection.y > 0); } +#endif } } } // namespace diff --git a/src/conformance/conformance_test/test_xrCreateInstance.cpp b/src/conformance/conformance_test/test_xrCreateInstance.cpp index 80ec6687..66438f23 100644 --- a/src/conformance/conformance_test/test_xrCreateInstance.cpp +++ b/src/conformance/conformance_test/test_xrCreateInstance.cpp @@ -269,7 +269,8 @@ namespace Conformance { for (int i = 0; i < 2; ++i) { CAPTURE(i); - AutoBasicInstance instance; + // Using skipDebugMessenger to avoid leaking a debug messenger during AutoBasicInstance shutdown. + AutoBasicInstance instance(AutoBasicInstance::skipDebugMessenger); XrResult destroyResult = XR_ERROR_RUNTIME_FAILURE; std::thread t([&destroyResult, &instance] { destroyResult = xrDestroyInstance(instance); }); t.join(); diff --git a/src/conformance/conformance_test/test_xrCreateSession.cpp b/src/conformance/conformance_test/test_xrCreateSession.cpp index 1491b8d1..d6d19f2d 100644 --- a/src/conformance/conformance_test/test_xrCreateSession.cpp +++ b/src/conformance/conformance_test/test_xrCreateSession.cpp @@ -157,7 +157,8 @@ namespace Conformance for (int i = 0; i < 2; ++i) { CAPTURE(i); - AutoBasicInstance instance; + // Using skipDebugMessenger to avoid leaking a debug messenger during AutoBasicInstance shutdown. + AutoBasicInstance instance(AutoBasicInstance::skipDebugMessenger); AutoBasicSession session(AutoBasicSession::createSession, instance); XrResult destroySessionResult = XR_ERROR_RUNTIME_FAILURE; XrResult destroyInstanceResult = XR_ERROR_RUNTIME_FAILURE; diff --git a/src/conformance/conformance_test/test_xrGetReferenceSpaceBoundsRect.cpp b/src/conformance/conformance_test/test_xrGetReferenceSpaceBoundsRect.cpp index 07a4a771..0dd1d5dc 100644 --- a/src/conformance/conformance_test/test_xrGetReferenceSpaceBoundsRect.cpp +++ b/src/conformance/conformance_test/test_xrGetReferenceSpaceBoundsRect.cpp @@ -70,8 +70,7 @@ namespace Conformance XrExtent2Df bounds{-1.f, -1.f}; result = xrGetReferenceSpaceBoundsRect(session, rst, &bounds); REQUIRE_THAT(result, In({XR_SUCCESS, XR_SPACE_BOUNDS_UNAVAILABLE})); - CAPTURE(bounds.width); - CAPTURE(bounds.height); + CAPTURE(bounds); CHECK(!std::isnan(bounds.width)); CHECK(!std::isnan(bounds.height)); diff --git a/src/conformance/utilities/types_and_constants.h b/src/conformance/utilities/types_and_constants.h index c58dce64..e814ffee 100644 --- a/src/conformance/utilities/types_and_constants.h +++ b/src/conformance/utilities/types_and_constants.h @@ -64,7 +64,7 @@ namespace Conformance /// application or runtime. /// /// Used for validating that runtimes properly ignore unrecognized extension structs. -#define XRC_UNRECOGNIZABLE_STRUCTURE_TYPE ((XrStructureType)-1) +#define XRC_UNRECOGNIZABLE_STRUCTURE_TYPE ((XrStructureType)((int)XR_STRUCTURE_TYPE_MAX_ENUM - 1)) /// @}