Commit e8942634 authored by Alex Cooper's avatar Alex Cooper Committed by Commit Bot

Fix WebGLLayer test expectations

The xrWebGLLayer tests didn't have their expectations wrapped in t.step
so their failures were reported as timeouts, rather than the actual
error.

xrWebGLLayer_viewports expected the device init viewport to match the
output viewport, which is not a specced behavior, and contradicts the
webxr-test-api spec which calls this out as unsupported, so that part
has also been reverted.

Bug: 986672
Change-Id: I23713956f6b0bd3d432f0e6e6fdc9d015d509099
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1715237
Commit-Queue: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Klaus Weidner <klausw@chromium.org>
Reviewed-by: default avatarKlaus Weidner <klausw@chromium.org>
Auto-Submit: Alexander Cooper <alcooper@chromium.org>
Cr-Commit-Position: refs/heads/master@{#680125}
parent c3e20500
...@@ -3262,14 +3262,12 @@ crbug.com/968164 external/wpt/css/css-ui/webkit-appearance-menulist-button-001.h ...@@ -3262,14 +3262,12 @@ crbug.com/968164 external/wpt/css/css-ui/webkit-appearance-menulist-button-001.h
# ====== New tests from wpt-importer added here ====== # ====== New tests from wpt-importer added here ======
crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-overline-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-overline-001.html [ Failure ]
crbug.com/626703 external/wpt/webxr/xrWebGLLayer_viewports.https.html [ Timeout ]
crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-vertical-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-vertical-001.html [ Failure ]
crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-scroll-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-scroll-001.html [ Failure ]
crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-linethrough-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-linethrough-001.html [ Failure ]
crbug.com/626703 external/wpt/css/css-text/white-space/break-spaces-tab-004.html [ Failure ] crbug.com/626703 external/wpt/css/css-text/white-space/break-spaces-tab-004.html [ Failure ]
crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-underline-001.html [ Failure ] crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-underline-001.html [ Failure ]
crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-vertical-002.html [ Failure ] crbug.com/626703 external/wpt/css/css-text-decor/text-decoration-thickness-vertical-002.html [ Failure ]
crbug.com/626703 external/wpt/webxr/xrWebGLLayer_framebuffer.https.html [ Timeout ]
crbug.com/626703 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success.https.html [ Timeout ] crbug.com/626703 external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/broadcastchannel-success.https.html [ Timeout ]
crbug.com/626703 [ Win10 ] virtual/omt-worker-fetch/external/wpt/fetch/api/request/destination/fetch-destination-worker.https.html [ Crash ] crbug.com/626703 [ Win10 ] virtual/omt-worker-fetch/external/wpt/fetch/api/request/destination/fetch-destination-worker.https.html [ Crash ]
crbug.com/626703 external/wpt/webauthn/idlharness-manual.https.window.js [ Skip ] crbug.com/626703 external/wpt/webauthn/idlharness-manual.https.window.js [ Skip ]
......
This is a testharness.js-based test.
FAIL XRWebGLLayer reports a valid framebuffer for immersive sessions assert_equals: expected (number) 5890 but got (object) null
FAIL XRWebGLLayer reports a valid framebuffer for inline sessions assert_not_equals: got disallowed value null
Harness: the test ran to completion.
...@@ -20,26 +20,37 @@ let testFunction = function(session, fakeDeviceController, t) { ...@@ -20,26 +20,37 @@ let testFunction = function(session, fakeDeviceController, t) {
let gl = layer.context; let gl = layer.context;
// The layer's framebuffer is a WebGL framebuffer // The layer's framebuffer is a WebGL framebuffer
assert_not_equals(layer.framebuffer, null); t.step(() => {
assert_true(layer.framebuffer instanceof WebGLFramebuffer); assert_not_equals(layer.framebuffer, null);
assert_true(layer.framebuffer instanceof WebGLFramebuffer);
// The XR framebuffer is not bound to the GL context by default. // The XR framebuffer is not bound to the GL context by default.
assert_not_equals(layer.framebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING)); assert_not_equals(layer.framebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING));
});
// The XR framebuffer can be bound to the GL context. // The XR framebuffer can be bound to the GL context.
gl.bindFramebuffer(gl.FRAMEBUFFER, layer.framebuffer); gl.bindFramebuffer(gl.FRAMEBUFFER, layer.framebuffer);
assert_equals(layer.framebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING));
t.step(() => {
assert_equals(layer.framebuffer, gl.getParameter(gl.FRAMEBUFFER_BINDING));
});
// The XR framebuffer has a 2D texture // The XR framebuffer has a 2D texture
let attachment = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE); let attachment = gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE);
assert_equals(attachment, gl.TEXTURE);
t.step(() => {
assert_equals(attachment, gl.TEXTURE);
});
// Check that each viewport fits inside the framebuffer dimensions // Check that each viewport fits inside the framebuffer dimensions
let viewer_pose = xrFrame.getViewerPose(space); let viewer_pose = xrFrame.getViewerPose(space);
for (view of viewer_pose.views) { for (view of viewer_pose.views) {
let viewport = layer.getViewport(view); let viewport = layer.getViewport(view);
assert_less_than_equal(viewport.x + viewport.width, layer.framebufferWidth);
assert_less_than_equal(viewport.y + viewport.height, layer.framebufferHeight); t.step(() => {
assert_less_than_equal(viewport.x + viewport.width, layer.framebufferWidth);
assert_less_than_equal(viewport.y + viewport.height, layer.framebufferHeight);
});
} }
// Finished test. // Finished test.
......
...@@ -22,18 +22,18 @@ let testFunction = function(session, fakeDeviceController, t) { ...@@ -22,18 +22,18 @@ let testFunction = function(session, fakeDeviceController, t) {
let layer = xrFrame.session.renderState.baseLayer; let layer = xrFrame.session.renderState.baseLayer;
for (view of viewer_pose.views) { for (view of viewer_pose.views) {
let viewport = layer.getViewport(view); let viewport = layer.getViewport(view);
let index = (view.eye === "right"? 1: 0);
let params = fakeDeviceInitParams.views[index];
// Ensure the returned object is an XRViewport object t.step(() => {
assert_not_equals(viewport, null); // Ensure the returned object is an XRViewport object
assert_true(viewport instanceof XRViewport); assert_not_equals(viewport, null);
assert_true(viewport instanceof XRViewport);
// Ensure the viewport dimensions are valid // Ensure the viewport dimensions are valid
assert_greater_than_equal(viewport.x, 0); assert_greater_than_equal(viewport.x, 0);
assert_greater_than_equal(viewport.y, 0); assert_greater_than_equal(viewport.y, 0);
assert_equals(viewport.width, params.resolution.width); assert_greater_than_equal(viewport.width, 1);
assert_equals(viewport.height, params.resolution.height); assert_greater_than_equal(viewport.height, 1);
});
// Ensure none of the viewports overlap // Ensure none of the viewports overlap
for (other of viewer_pose.views) { for (other of viewer_pose.views) {
...@@ -43,7 +43,10 @@ let testFunction = function(session, fakeDeviceController, t) { ...@@ -43,7 +43,10 @@ let testFunction = function(session, fakeDeviceController, t) {
(otherport.x + otherport.width <= viewport.x) || (otherport.x + otherport.width <= viewport.x) ||
(viewport.y + viewport.height <= otherport.y) || (viewport.y + viewport.height <= otherport.y) ||
(otherport.y + otherport.height <= viewport.y); (otherport.y + otherport.height <= viewport.y);
assert_true(no_overlap, "Overlap between viewport " + view.eye + " and " + other.eye);
t.step(() => {
assert_true(no_overlap, "Overlap between viewport " + view.eye + " and " + other.eye);
});
} }
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment