File: depth_sensing_cpu_matchDepthViewDepthData.https.html

package info (click to toggle)
thunderbird 1%3A143.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 4,703,968 kB
  • sloc: cpp: 7,770,492; javascript: 5,943,842; ansic: 3,918,754; python: 1,418,263; xml: 653,354; asm: 474,045; java: 183,079; sh: 111,238; makefile: 20,410; perl: 14,359; objc: 13,059; yacc: 4,583; pascal: 3,405; lex: 1,720; ruby: 999; exp: 762; sql: 715; awk: 580; php: 436; lisp: 430; sed: 69; csh: 10
file content (92 lines) | stat: -rw-r--r-- 3,785 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<!DOCTYPE html>
<meta charset=utf-8>
<title>WebXR Depth Sensing Test: XRDepthInformation.data buffer with matchDepthView and offset depth data (CPU)</title>
<link rel="help" href="https://immersive-web.github.io/depth-sensing/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/webxr/resources/webxr_util.js"></script>
<script src="/webxr/resources/webxr_test_constants.js"></script>
<script src="/webxr/resources/webxr_test_constants_fake_depth.js"></script>
<script src="/webxr/resources/webxr_test_asserts.js"></script>

<canvas id="webgl-canvas"></canvas>
<script>

const offsetMatchDepthViewDataTestGenerator = function(matchDepthView) {
  return function(session, controller, t, sessionObjects) {
    return session.requestReferenceSpace('viewer').then((viewerSpace) => new Promise((resolve, reject) => {
      const rafCb = function(time, frame) {
        const pose = frame.getViewerPose(viewerSpace);

        for (const view of pose.views) {
          const depthInformation = frame.getDepthInformation(view);
          t.step(() => {
            assert_not_equals(depthInformation, null, "Depth information should not be null.");
            assert_not_equals(depthInformation.data, null, "Depth information data ArrayBuffer should not be null.");

            // OFFSET_DEPTH_SENSING_DATA.depthData is a Uint8Array.
            // We need its underlying ArrayBuffer for comparison with depthInformation.data.
            const rawDeviceDepthArrayBuffer = OFFSET_DEPTH_SENSING_DATA.depthData.buffer;
            const pageVisibleDepthArrayBuffer = depthInformation.data;

            if (matchDepthView) {
              // When matchDepthView is true, depth data should be reprojected to the XRView.
              // This reprojected data must be different from the raw device data.
              assert_array_buffer_not_equals(
                  pageVisibleDepthArrayBuffer,
                  rawDeviceDepthArrayBuffer,
                  "Page depth data ArrayBuffer SHOULD NOT match raw device depth data ArrayBuffer when matchDepthView is true.");
            } else {
              // When matchDepthView is false, depth data should be the raw device data,
              // without reprojection to the XRView.
              assert_array_buffer_equals(
                  pageVisibleDepthArrayBuffer,
                  rawDeviceDepthArrayBuffer,
                  "Page depth data ArrayBuffer SHOULD match raw device depth data ArrayBuffer when matchDepthView is false.");
            }
          });
        }
        resolve();
      };

      session.requestAnimationFrame(rafCb);
    }));
  };
};

const fakeDeviceInitParams = {
  supportedModes: ["immersive-ar"],
  views: VALID_VIEWS,
  supportedFeatures: ALL_FEATURES,
  depthSensingData: OFFSET_DEPTH_SENSING_DATA,
};

xr_session_promise_test(
  `XRDepthInformation.data matches raw device data when matchDepthView is false with offset depth (CPU)`,
  offsetMatchDepthViewDataTestGenerator(/*matchDepthView=*/false),
  fakeDeviceInitParams,
  'immersive-ar',
  {
    requiredFeatures: ['depth-sensing'],
    depthSensing: {
      usagePreference: ['cpu-optimized'],
      dataFormatPreference: [OFFSET_DEPTH_SENSING_DATA.depthFormat],
      matchDepthView: false
  }
});

xr_session_promise_test(
  `XRDepthInformation.data does NOT match raw device data when matchDepthView is true with offset depth (CPU)`,
  offsetMatchDepthViewDataTestGenerator(/*matchDepthView=*/true),
  fakeDeviceInitParams,
  'immersive-ar',
  {
    requiredFeatures: ['depth-sensing'],
    depthSensing: {
      usagePreference: ['cpu-optimized'],
      dataFormatPreference: [OFFSET_DEPTH_SENSING_DATA.depthFormat],
      matchDepthView: true
    }
  }
);
</script>