Skip to content

Commit

Permalink
OpenXR CTS 1.1.37.0 (2024-06-06)
Browse files Browse the repository at this point in the history
-   Conformance Tests
    -   Fix: Action test when constrained to right-hand only. (internal
        MR 3244)
    -   Fix: Skip StereoWithFoveatedInset-interactive if runtime does
        not support it. (internal MR 3350)
    -   Fix: Dangling pointer in action test. (internal MR 3357)
    -   Fix: Resolve Vulkan validation warning in some tests. (internal
        MR 3367)
    -   Improvement: Use absolute epsilons for pose comparison in action
        test. (internal MR 3244)
    -   Improvement: Improve user message in action test. (internal MR
        3244)
    -   Improvement: Only suggest binding the proceed action to
        “…/click” binding paths, rather than all binding paths of
        boolean type, to avoid accidental activation. (internal MR 3312)
    -   Improvement: Support hiding parts of models in the glTF/PBR
        subsystem. (internal MR 3314)
    -   Improvement: Code cleanup. (internal MR 3323)
    -   Improvement: Use new XR_API_VERSION_1_0 and XR_API_VERSION_1_1
        defines. (internal MR 3329)
    -   Improvement: Relax too strict palm/grip_surface pose
        assumptions. (internal MR 3345)
    -   Improvement: Add missing extension name tags to test cases.
        (internal MR 3355)
    -   Improvement: Code cleanup and documentation in helper utilities.
        (internal MR 3356)
    -   Improvement: Code cleanups and clang-tidy fixes. (internal MR
        3357, internal MR 3357)
    -   Improvement: Improve readability of test sources. (internal MR
        3358)
    -   Improvement: Fix duplicated inaccurate code comment. (internal
        MR 3372)
    -   New test: Add interactive tests for
        XR_KHR_composition_layer_equirect and
        XR_KHR_composition_layer_equirect2. (internal MR 2882)
    -   New test: Add test which creates a session but does not call
        xrDestroySession. (internal MR 3247)

GitOrigin-RevId: c3e7f173147ad8730e9041e04b7e7b2d61c5de4c
  • Loading branch information
rpavlik committed Jun 6, 2024
1 parent a7c7a6e commit c42343f
Show file tree
Hide file tree
Showing 48 changed files with 413 additions and 119 deletions.
45 changes: 45 additions & 0 deletions CHANGELOG.CTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,51 @@ 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.37.0 (2024-06-06)

- Conformance Tests
- Fix: Action test when constrained to right-hand only.
([internal MR 3244](https://gitlab.khronos.org/openxr/openxr/merge_requests/3244))
- Fix: Skip StereoWithFoveatedInset-interactive if runtime does not support it.
([internal MR 3350](https://gitlab.khronos.org/openxr/openxr/merge_requests/3350))
- Fix: Dangling pointer in action test.
([internal MR 3357](https://gitlab.khronos.org/openxr/openxr/merge_requests/3357))
- Fix: Resolve Vulkan validation warning in some tests.
([internal MR 3367](https://gitlab.khronos.org/openxr/openxr/merge_requests/3367))
- Improvement: Use absolute epsilons for pose comparison in action test.
([internal MR 3244](https://gitlab.khronos.org/openxr/openxr/merge_requests/3244))
- Improvement: Improve user message in action test.
([internal MR 3244](https://gitlab.khronos.org/openxr/openxr/merge_requests/3244))
- Improvement: Only suggest binding the proceed action to ".../click" binding
paths, rather than all binding paths of boolean type, to avoid accidental
activation.
([internal MR 3312](https://gitlab.khronos.org/openxr/openxr/merge_requests/3312))
- Improvement: Support hiding parts of models in the glTF/PBR subsystem.
([internal MR 3314](https://gitlab.khronos.org/openxr/openxr/merge_requests/3314))
- Improvement: Code cleanup.
([internal MR 3323](https://gitlab.khronos.org/openxr/openxr/merge_requests/3323))
- Improvement: Use new `XR_API_VERSION_1_0` and `XR_API_VERSION_1_1` defines.
([internal MR 3329](https://gitlab.khronos.org/openxr/openxr/merge_requests/3329))
- Improvement: Relax too strict palm/grip_surface pose assumptions.
([internal MR 3345](https://gitlab.khronos.org/openxr/openxr/merge_requests/3345))
- Improvement: Add missing extension name tags to test cases.
([internal MR 3355](https://gitlab.khronos.org/openxr/openxr/merge_requests/3355))
- Improvement: Code cleanup and documentation in helper utilities.
([internal MR 3356](https://gitlab.khronos.org/openxr/openxr/merge_requests/3356))
- Improvement: Code cleanups and clang-tidy fixes.
([internal MR 3357](https://gitlab.khronos.org/openxr/openxr/merge_requests/3357),
[internal MR 3357](https://gitlab.khronos.org/openxr/openxr/merge_requests/3357))
- Improvement: Improve readability of test sources.
([internal MR 3358](https://gitlab.khronos.org/openxr/openxr/merge_requests/3358))
- Improvement: Fix duplicated inaccurate code comment.
([internal MR 3372](https://gitlab.khronos.org/openxr/openxr/merge_requests/3372))
- New test: Add interactive tests for `XR_KHR_composition_layer_equirect` and
`XR_KHR_composition_layer_equirect2`.
([internal MR 2882](https://gitlab.khronos.org/openxr/openxr/merge_requests/2882))
- New test: Add test which creates a session but does not call
`xrDestroySession`.
([internal MR 3247](https://gitlab.khronos.org/openxr/openxr/merge_requests/3247))

## OpenXR CTS 1.1.36.0 (2024-04-25)

This new release supports testing both OpenXR 1.0 and OpenXR 1.1 runtimes, and
Expand Down
1 change: 0 additions & 1 deletion changes/conformance/mr.2882.gl.md

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

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

This file was deleted.

2 changes: 1 addition & 1 deletion src/conformance/conformance_test/test_ActionPoses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], //
[&](const XrSwapchainImageBaseHeader* swapchainImage) {
Expand Down
2 changes: 1 addition & 1 deletion src/conformance/conformance_test/test_HapticInterrupt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], [&](const XrSwapchainImageBaseHeader* swapchainImage) {
GetGlobalData().graphicsPlugin->ClearImageSlice(swapchainImage, 0);
Expand Down
2 changes: 1 addition & 1 deletion src/conformance/conformance_test/test_InteractiveThrow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], [&](const XrSwapchainImageBaseHeader* swapchainImage) {
GetGlobalData().graphicsPlugin->ClearImageSlice(swapchainImage);
Expand Down
22 changes: 12 additions & 10 deletions src/conformance/conformance_test/test_SessionState.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.

#include "catch2/matchers/catch_matchers.hpp"
#include "catch2/matchers/catch_matchers_vector.hpp"
#include "utilities/utils.h"
#include "conformance_utils.h"
#include "conformance_framework.h"
Expand Down Expand Up @@ -45,6 +47,9 @@ namespace Conformance
REQUIRE_MSG(session != XR_NULL_HANDLE_CPP,
"If this (XrSession creation) fails, ensure the runtime is configured and the AR/VR device is present.");

XrInstance instance = session.GetInstance();
XrSystemId systemId = session.GetSystemId();

auto tryReadEvent = [&](XrEventDataBuffer* evt) {
*evt = {XR_TYPE_EVENT_DATA_BUFFER};
XrResult res;
Expand Down Expand Up @@ -88,26 +93,23 @@ namespace Conformance
{
// Get the list of supported view configurations
uint32_t viewCount = 0;
REQUIRE(XR_SUCCESS == xrEnumerateViewConfigurations(session.instance, session.systemId, 0, &viewCount, nullptr));
REQUIRE(XR_SUCCESS == xrEnumerateViewConfigurations(instance, systemId, 0, &viewCount, nullptr));
std::vector<XrViewConfigurationType> runtimeViewTypes(viewCount);
REQUIRE(XR_SUCCESS ==
xrEnumerateViewConfigurations(session.instance, session.systemId, viewCount, &viewCount, runtimeViewTypes.data()));
REQUIRE(XR_SUCCESS == xrEnumerateViewConfigurations(instance, systemId, viewCount, &viewCount, runtimeViewTypes.data()));

for (XrViewConfigurationType viewType : KnownViewTypes) {
CAPTURE(viewType);

// Is this enum valid, check against enabled extensions.
bool valid = IsViewConfigurationTypeEnumValid(viewType);

const bool isSupportedType =
std::find(runtimeViewTypes.begin(), runtimeViewTypes.end(), viewType) != runtimeViewTypes.end();

if (!valid) {
CHECK_MSG(valid == isSupportedType, "Can not support invalid view configuration type");
if (!IsViewConfigurationTypeEnumValid(viewType)) {
INFO("Must not enumerate invalid view configuration type");
CHECK_THAT(runtimeViewTypes, !Catch::Matchers::VectorContains(viewType));
}

// Skip this view config.
if (isSupportedType) {
// Skip this view config if it is supported, since we cannot test correct handling of unsupported values with it.
if (Catch::Matchers::VectorContains(viewType).match(runtimeViewTypes)) {
continue;
}

Expand Down
2 changes: 1 addition & 1 deletion src/conformance/conformance_test/test_SpaceOffsets.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], [&](const XrSwapchainImageBaseHeader* swapchainImage) {
GetGlobalData().graphicsPlugin->ClearImageSlice(swapchainImage);
Expand Down
13 changes: 8 additions & 5 deletions src/conformance/conformance_test/test_Swapchains.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,9 @@ namespace Conformance
REQUIRE_THAT(imageFormatArray, VectorHasOnlyUniqueElements<int64_t>());
REQUIRE_THAT(imageFormatArray, !Catch::Matchers::VectorContains(kImageFormatInvalid));

XrInstance instance = session.GetInstance();
XrSystemId systemId = session.GetSystemId();

SECTION("Swapchain creation test parameters")
{
// At this point, session.viewConfigurationViewVector has the system's set of view configurations,
Expand All @@ -446,8 +449,7 @@ namespace Conformance
for (int64_t imageFormat : imageFormatArray) {

SwapchainCreateTestParameters tp;
REQUIRE(globalData.graphicsPlugin->GetSwapchainCreateTestParameters(session.instance, session, session.systemId,
imageFormat, &tp));
REQUIRE(globalData.graphicsPlugin->GetSwapchainCreateTestParameters(instance, session, systemId, imageFormat, &tp));

// TODO remove this when we can mark it as a stencil-only format.
if (tp.imageFormatName == "VK_FORMAT_S8_UINT") {
Expand Down Expand Up @@ -485,6 +487,8 @@ namespace Conformance

// Set up the session we will use for the testing
AutoBasicSession session(AutoBasicSession::OptionFlags::beginSession);
XrInstance instance = session.GetInstance();
XrSystemId systemId = session.GetSystemId();

// Enumerate formats
std::vector<int64_t> imageFormatArray;
Expand All @@ -498,7 +502,7 @@ namespace Conformance
}
}
const XrSwapchainCreateInfo defaultColorCreateInfo =
FindDefaultColorSwapchainCreateInfo(imageFormatArray, session.instance, session.systemId, session);
FindDefaultColorSwapchainCreateInfo(imageFormatArray, instance, systemId, session);

// In the past, bugs in the CTS have made this fail when called back to back (or called right before graphics shutdown)
// Because it can be hard to debug failures in these tests, try to provoke this particular issue early,
Expand All @@ -509,8 +513,7 @@ namespace Conformance
for (int64_t imageFormat : imageFormatArray) {

SwapchainCreateTestParameters tp;
REQUIRE(
globalData.graphicsPlugin->GetSwapchainCreateTestParameters(session.instance, session, session.systemId, imageFormat, &tp));
REQUIRE(globalData.graphicsPlugin->GetSwapchainCreateTestParameters(instance, session, systemId, imageFormat, &tp));

if (!tp.supportsRendering) {
// skip this format
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], [&](const XrSwapchainImageBaseHeader* swapchainImage) {
GetGlobalData().graphicsPlugin->ClearImageSlice(swapchainImage);
Expand Down
2 changes: 1 addition & 1 deletion src/conformance/conformance_test/test_XR_EXT_palm_pose.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], //
[&](const XrSwapchainImageBaseHeader* swapchainImage) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,7 @@ namespace Conformance
viewState.viewStateFlags & XR_VIEW_STATE_ORIENTATION_VALID_BIT) {
const auto& views = std::get<std::vector<XrView>>(viewData);

// Render into each view port of the wide swapchain using the projection layer view fov and pose.
// Render into each of the separate swapchains using the projection layer view fov and pose.
for (size_t view = 0; view < views.size(); view++) {
compositionHelper.AcquireWaitReleaseImage(swapchains[view], //
[&](const XrSwapchainImageBaseHeader* swapchainImage) {
Expand Down
Loading

0 comments on commit c42343f

Please sign in to comment.