tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

xrWebGLLayer_framebuffer_scale.https.html (2297B)


      1 <!DOCTYPE html>
      2 <script src="/resources/testharness.js"></script>
      3 <script src="/resources/testharnessreport.js"></script>
      4 <script src="resources/webxr_util.js"></script>
      5 <script src="resources/webxr_test_constants.js"></script>
      6 
      7 <script>
      8 
      9 let testName = "Ensure framebuffer scaling works as expected.";
     10 
     11 let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
     12 
     13 let testFunction =
     14  (session, fakeDeviceController, t, sessionObjects) => new Promise((resolve, reject) => {
     15  let gl = sessionObjects.gl;
     16  let webglLayer = sessionObjects.glLayer;
     17  let defaultFramebufferWidth = webglLayer.framebufferWidth;
     18  let defaultFramebufferHeight = webglLayer.framebufferHeight;
     19  let nativeScale = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
     20 
     21  t.step(() => {
     22    // Ensure the framebuffer default sizes and native scale are all non-zero.
     23    assert_greater_than(defaultFramebufferWidth, 0);
     24    assert_greater_than(defaultFramebufferHeight, 0);
     25    assert_greater_than(nativeScale, 0);
     26 
     27    // The native scale should be the inverse for the default framebuffer scale.
     28    assert_approx_equals(nativeScale, 1/fakeDeviceController.defaultFramebufferScale_, FLOAT_EPSILON);
     29  });
     30 
     31  webglLayer = new XRWebGLLayer(session, gl, { framebufferScaleFactor: nativeScale });
     32  t.step(() => {
     33    // Ensure that requesting a native scale framebuffer gives the expected result.
     34    assert_approx_equals(webglLayer.framebufferWidth, defaultFramebufferWidth*nativeScale, 2);
     35    assert_approx_equals(webglLayer.framebufferHeight, defaultFramebufferHeight*nativeScale, 2);
     36  });
     37 
     38  webglLayer = new XRWebGLLayer(session, gl, { framebufferScaleFactor: 0 });
     39  t.step(() => {
     40    // Ensure that the framebuffer has a lower bounds clamp.
     41    assert_greater_than(webglLayer.framebufferWidth, 0);
     42    assert_greater_than(webglLayer.framebufferHeight, 0);
     43  });
     44 
     45  webglLayer = new XRWebGLLayer(session, gl, { framebufferScaleFactor: 100 });
     46  t.step(() => {
     47    // Ensure that the framebuffer has a reasonable upper bounds clamp.
     48    assert_less_than(webglLayer.framebufferWidth, defaultFramebufferWidth*100);
     49    assert_less_than(webglLayer.framebufferHeight, defaultFramebufferHeight*100);
     50  });
     51 
     52  resolve();
     53 });
     54 
     55 xr_session_promise_test(
     56  testName, testFunction, fakeDeviceInitParams, 'immersive-vr');
     57 
     58 </script>