KhronosGroup / OpenXR-CTS

Conformance test suite for OpenXR

Home Page:https://www.khronos.org/conformance/adopters/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Some test case questions about enabled API layers and interactive behavior

warner-Yang opened this issue · comments

Dear Sirs,

We are trying to pass the CTS test in OpenXR project and we have faced some problems in some test cases while running CTS.
The version we used is OpenXR CTS 1.0.22.1.

(1)
The test case "Validate Environment" ask us to check if "XR_APILAYER_KHRONOS_runtime_conformance" is an enabled API layer.
The function GlobalData::IsAPILayerEnabled will search the strings in enabledAPILayerNames.
However, there is no enabled API layer in enabledAPILayerNames.
The vector enabledAPILayerNames is derived from availableAPILayers.
It seems like that the only way to add element to enabledAPILayerNames is to call GetAvailableAPILayers in conformance_utils.cpp, but no one calls this API.
Therefore we cannot find the api layer "XR_APILAYER_KHRONOS_runtime_conformance" in this test case.

Should the function GetAvailableAPILayers be called somewhere in this test case before checking the enabled API layer?
Besides, should we push the api layer "XR_APILAYER_KHRONOS_runtime_conformance" in oxr_xrEnumerateApiLayerProperties?

(2)
There are some confusing steps in "State query functions and haptics."
Sometimes the test case ask us to "Release all inputs", however, after we releasing all inputs, the test case immediately the floatState.isActive.
This seems very unreasonable.
This phenomenon happened in the following parts:

INFO("Pose state query");
and
INFO("Float->Boolean");

The first checking of isActive is always return false in these parts because all inputs are just turned off.
Are those checking in expected?

(3)
The part "Repeated state query calls return the same value" in the test case "xrSyncActions" calls SetButtonStateBool for leftHandInputDevice.
The function SetButtonStateBool(leftHandSelectPath, true) means to ask the user to press the left select button within 30 s.
Only if the user press the left select button within 30 s, the remaining part of the test case can be performed.
However, the check REQUIRE(actionStateBoolean.currentState); will return false because after the left select button was clicked. the boolean value of the left select button is no more be true.
As for our opinion, only the boolean value of a button can be true is the moment the button to be clicked.
Besides, we think the function SetButtonStateBool is enough to check the button is clicked or not.

Is this means that the user have to press the left select button (for how long?) until the REQUIRE(actionStateBoolean.currentState) check is passed?

Many thanks four your reply.

An issue (number 1683) has been filed to correspond to this issue in the internal Khronos GitLab (Khronos members only: KHR:openxr/openxr#1683 ), to facilitate working group processes.

This GitHub issue will continue to be the main site of discussion.

Part 1 has been solved with 1.0.25 which includes the layer in the conformance APK.

I don't understand your question for 2, are you still having it?

3: currentState for a boolean should be true for as long as the button is held down. Detecting whether it was "just pressed" is the purpose of "changedSinceLastSync".

@rpavlik Will there be a update for approved branch with 1.0.25 updates for part 1? Looks like approved branch is not updated now.

The working group has to vote to do so first. There's still one or two more Android fixes pending internally I think so I'll probably propose approving 1.0.26. in the meantime these changes can be used in submission by manually "cherry picking" them, as a "porting" change which is allowed.

1.0.26.0 has been approved and released, which addresses your point number 1, so I will close this. Note that 1.0.26.0 also has some pre-made APKs built ready to use.

I think your questions 2 and 3 are related to a misunderstanding of what the action states mean (as I mentioned earlier) and when they can change (xrSyncActions basically updates a "cache" of state). If you have more questions there, you can post them to the OpenXR adopters mailing list or open a new issue.

Thanks!