Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for some more WebGL2 renderbuffer functions #25904

Merged
merged 2 commits into from Mar 13, 2020

Conversation

@mmatyas
Copy link
Contributor

mmatyas commented Mar 5, 2020

Adds support for the following WebGL2 calls:

  • RenderbufferStorageMultisample
  • GetInternalFormativ

See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.5

The test results depend on #25903.

cc @jdm @zakorgy


  • ./mach build -d does not report any errors
  • ./mach test-tidy does not report any errors
  • There are tests for these changes
@highfive
Copy link

highfive commented Mar 5, 2020

Heads up! This PR modifies the following files:

  • @asajeffrey: components/script/dom/webidls/WebGL2RenderingContext.webidl, components/script/dom/webglframebuffer.rs, components/script/dom/webglrenderingcontext.rs, components/script/dom/webgl2renderingcontext.rs, components/script/dom/webglrenderbuffer.rs
  • @KiChjang: components/script/dom/webidls/WebGL2RenderingContext.webidl, components/script/dom/webglframebuffer.rs, components/script/dom/webglrenderingcontext.rs, components/script/dom/webgl2renderingcontext.rs, components/script/dom/webglrenderbuffer.rs
@highfive
Copy link

highfive commented Mar 5, 2020

warning Warning warning

  • These commits modify unsafe code. Please review it carefully!
@mmatyas mmatyas force-pushed the mmatyas:webgl_fns_framebuf_renderbuf branch from 25acfcc to 807b5d9 Mar 5, 2020
Copy link
Member

jdm left a comment

Good start!

target,
internal_format,
param,
max_count,

This comment has been minimized.

@jdm

jdm Mar 5, 2020

Member

Rather than having the caller pass the size of the parameter array, we should match on the param and calculate how large the array should be.

Additionally, rather than having the script thread send two commands to retrieve the sample count followed by the samples, we should transparently get the number of required samples when handling the request for samples.

@@ -221,24 +223,46 @@ impl WebGLRenderbuffer {
_ => return Err(WebGLError::InvalidEnum),
};

let (sender, receiver) = webgl_channel().unwrap();

This comment has been minimized.

@jdm

jdm Mar 5, 2020

Member

Would it make sense to skip this for webgl1 contexts?

.send_command(WebGLCommand::GetInternalFormativ(
constants::RENDERBUFFER,
internal_format,
InternalFormatInt::Samples,

This comment has been minimized.

@jdm

jdm Mar 5, 2020

Member

Was the intention here to pass SampleCount instead?

@jdm jdm assigned jdm and unassigned Manishearth Mar 5, 2020
@mmatyas mmatyas force-pushed the mmatyas:webgl_fns_framebuf_renderbuf branch from 807b5d9 to b8ac3e7 Mar 6, 2020
@mmatyas
Copy link
Contributor Author

mmatyas commented Mar 6, 2020

Thanks! Updated the code, but then I ran into #25908 so couldn't check if it affects the tests yet.

@jdm
jdm approved these changes Mar 6, 2020
@jdm
Copy link
Member

jdm commented Mar 6, 2020

@bors-servo try=wpt

@bors-servo
Copy link
Contributor

bors-servo commented Mar 6, 2020

Trying commit b8ac3e7 with merge 68c0433...

bors-servo added a commit that referenced this pull request Mar 6, 2020
Add support for some more WebGL2 renderbuffer functions

Adds support for the following WebGL2 calls:

- `RenderbufferStorageMultisample`
- `GetInternalFormativ`

See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.5

<!-- Please describe your changes on the following line: -->

The test results depend on #25903.

cc @jdm @zakorgy

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@bors-servo
Copy link
Contributor

bors-servo commented Mar 6, 2020

💔 Test failed - status-taskcluster

@jdm
Copy link
Member

jdm commented Mar 6, 2020

1 unexpected results that are NOT known-intermittents:
  â–¶ CRASH [expected ERROR] /_webgl/conformance2/state/gl-object-get-calls.html
  │ 
  │ 
  │ 
  │ 
  │ DESCRIPTION: Test of get calls against GL objects like getBufferParameter, etc.
  │ 
  │ test getBufferParameter
  │ PASS gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE) is 16
  │ PASS gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ PASS gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_SIZE) is 16
  │ PASS gl.getBufferParameter(gl.ELEMENT_ARRAY_BUFFER, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ FAIL gl.getBufferParameter(gl.COPY_READ_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).
  │ FAIL gl.getBufferParameter(gl.COPY_READ_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ FAIL gl.getBufferParameter(gl.COPY_WRITE_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).
  │ FAIL gl.getBufferParameter(gl.COPY_WRITE_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ FAIL gl.getBufferParameter(gl.PIXEL_PACK_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).
  │ FAIL gl.getBufferParameter(gl.PIXEL_PACK_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ FAIL gl.getBufferParameter(gl.PIXEL_UNPACK_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).
  │ FAIL gl.getBufferParameter(gl.PIXEL_UNPACK_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ FAIL gl.getBufferParameter(gl.TRANSFORM_FEEDBACK_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).
  │ FAIL gl.getBufferParameter(gl.TRANSFORM_FEEDBACK_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ FAIL gl.getBufferParameter(gl.UNIFORM_BUFFER, gl.BUFFER_SIZE) should be 16 (of type number). Was null (of type object).
  │ FAIL gl.getBufferParameter(gl.UNIFORM_BUFFER, gl.BUFFER_USAGE) should be 35048 (of type number). Was null (of type object).
  │ PASS getBufferParameter correctly handled invalid parameter enums
  │ PASS getBufferParameter correctly handled invalid target enums
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ Test getFramebufferAttachmentParameter with stencil true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS getError was expected value: NO_ERROR :
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is texture
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is anotherTexture
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.RENDERBUFFER
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is renderbuffer
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.RENDERBUFFER
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is renderbuffer
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.RENDERBUFFER
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is renderbuffer
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE)
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS getFramebufferAttachmentParameter correctly handled invalid parameter enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid target enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid attachment enums
  │ PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.FRAMEBUFFER_DEFAULT
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.FRAMEBUFFER_DEFAULT
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.FRAMEBUFFER_DEFAULT
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS getError was expected value: NO_ERROR :
  │ PASS getFramebufferAttachmentParameter correctly handled invalid parameter enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid target enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid attachment enums
  │ 
  │ Test getFramebufferAttachmentParameter with stencil false
  │ PASS getError was expected value: NO_ERROR :
  │ PASS getError was expected value: NO_ERROR :
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is texture
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is anotherTexture
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + 7, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER) is 0
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.RENDERBUFFER
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is renderbuffer
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.RENDERBUFFER
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is renderbuffer
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.RENDERBUFFER
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is renderbuffer
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE)
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_STENCIL_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS getFramebufferAttachmentParameter correctly handled invalid parameter enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid target enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid attachment enums
  │ PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.FRAMEBUFFER_DEFAULT
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.FRAMEBUFFER_DEFAULT
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.NONE
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_RED_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.BACK, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) is non-zero.
  │ PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) is non-zero.
  │ PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE)
  │ PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE)
  │ PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING)
  │ PASS getFramebufferAttachmentParameter correctly handled invalid parameter enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid target enums
  │ PASS getFramebufferAttachmentParameter correctly handled invalid attachment enums
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ test getAttachedShaders
  │ PASS shaders.length is 2
  │ PASS shaders[0] == standardVert && shaders[1] == standardFrag || shaders[1] == standardVert && shaders[0] == standardFrag is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getAttachedShaders(null) threw exception TypeError: Value is not an object..
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getAttachedShaders(standardVert) threw exception TypeError: value does not implement interface WebGLProgram..
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ Test getProgramParameter
  │ PASS gl.getProgramParameter(standardProgram, gl.DELETE_STATUS) is false
  │ PASS gl.getProgramParameter(standardProgram, gl.LINK_STATUS) is true
  │ PASS typeof gl.getProgramParameter(standardProgram, gl.VALIDATE_STATUS) is "boolean"
  │ PASS gl.getProgramParameter(standardProgram, gl.ATTACHED_SHADERS) is 2
  │ PASS gl.getProgramParameter(standardProgram, gl.ACTIVE_ATTRIBUTES) is 2
  │ PASS gl.getProgramParameter(standardProgram, gl.ACTIVE_UNIFORMS) is 1
  │ PASS gl.getProgramParameter(uniformBlockProgram, gl.LINK_STATUS) is true
  │ PASS gl.getError() is gl.NO_ERROR
  │ FAIL gl.getProgramParameter(uniformBlockProgram, gl.ACTIVE_UNIFORM_BLOCKS) should be 1 (of type number). Was null (of type object).
  │ PASS gl.getProgramParameter(uniformBlockProgram, gl.TRANSFORM_FEEDBACK_VARYINGS) is 2
  │ PASS gl.getProgramParameter(uniformBlockProgram, gl.TRANSFORM_FEEDBACK_BUFFER_MODE) is gl.INTERLEAVED_ATTRIBS
  │ PASS getProgramParameter correctly handled invalid parameter enums
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ Test getRenderbufferParameter
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH) is 2
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_HEIGHT) is 2
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_INTERNAL_FORMAT) is non-zero.
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_DEPTH_SIZE) is non-zero.
  │ PASS getError was expected value: NO_ERROR :
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_RED_SIZE) is non-zero.
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_GREEN_SIZE) is non-zero.
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_BLUE_SIZE) is non-zero.
  │ PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_ALPHA_SIZE) is non-zero.
  │ FAIL gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_SAMPLES) should be 4 (of type number). Was null (of type object).
  │ FAIL getRenderbufferParameter did not generate INVALID_ENUM for invalid parameter enum: NO_ERROR
  │ PASS getRenderbufferParameter correctly handled invalid target enums
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ Test getShaderParameter
  │ PASS gl.getShaderParameter(standardVert, gl.SHADER_TYPE) is gl.VERTEX_SHADER
  │ PASS gl.getShaderParameter(standardVert, gl.DELETE_STATUS) is false
  │ PASS gl.getShaderParameter(standardVert, gl.COMPILE_STATUS) is true
  │ PASS getShaderParameter correctly handled invalid parameter enums
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ Test getTexParameter
  │ PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER) is gl.NEAREST
  │ PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER) is gl.NEAREST
  │ PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S) is gl.CLAMP_TO_EDGE
  │ PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T) is gl.CLAMP_TO_EDGE
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL) should be 0 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC) should be 515 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE) should be 34894 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL) should be 10 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LOD) should be 10 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MIN_LOD) should be 0 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R) should be 33071 (of type number). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_IMMUTABLE_FORMAT) should be false (of type boolean). Was null (of type object).
  │ FAIL gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_IMMUTABLE_LEVELS) should be 0 (of type number). Was null (of type object).
  │ FAIL getTexParameter returned 1 instead of null for invalid parameter enum: 0x84fe
  │ PASS getTexParameter correctly handled invalid target enums
  │ PASS getError was expected value: NO_ERROR :
  │ 
  │ Test getUniform with all variants of data types
  │ Boolean uniform variables
  │ PASS gl.getProgramParameter(boolProgram, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(boolProgram, bvalLoc) is true
  │ PASS gl.getUniform(boolProgram, bval2Loc) is [true, false]
  │ PASS gl.getUniform(boolProgram, bval3Loc) is [true, false, true]
  │ PASS gl.getUniform(boolProgram, bval4Loc) is [true, false, true, false]
  │ PASS getError was expected value: NO_ERROR :
  │ Integer uniform variables
  │ PASS gl.getProgramParameter(intProgram, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(intProgram, ivalLoc) is 1
  │ PASS gl.getUniform(intProgram, ival2Loc) is [2, 3]
  │ PASS gl.getUniform(intProgram, ival3Loc) is [4, 5, 6]
  │ PASS gl.getUniform(intProgram, ival4Loc) is [7, 8, 9, 10]
  │ PASS getError was expected value: NO_ERROR :
  │ Float uniform variables
  │ PASS gl.getProgramParameter(floatProgram, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(floatProgram, fvalLoc) is 11
  │ PASS gl.getUniform(floatProgram, fval2Loc) is [12, 13]
  │ PASS gl.getUniform(floatProgram, fval3Loc) is [14, 15, 16]
  │ PASS gl.getUniform(floatProgram, fval4Loc) is [17, 18, 19, 20]
  │ PASS getError was expected value: NO_ERROR :
  │ Sampler uniform variables
  │ PASS gl.getProgramParameter(samplerProgram, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(samplerProgram, s2DValLoc) is 0
  │ PASS gl.getUniform(samplerProgram, sCubeValLoc) is 1
  │ PASS getError was expected value: NO_ERROR :
  │ Matrix uniform variables
  │ PASS gl.getProgramParameter(matProgram, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(matProgram, mval2Loc) is [1, 2, 3, 4]
  │ PASS gl.getUniform(matProgram, mval3Loc) is [5, 6, 7, 8, 9, 10, 11, 12, 13]
  │ PASS gl.getUniform(matProgram, mval4Loc) is [14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
  │ PASS getError was expected value: NO_ERROR :
  │ Unsigned Integer uniform variables
  │ PASS gl.getProgramParameter(uintProgram, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(uintProgram, uvalLoc) is 1
  │ PASS gl.getUniform(uintProgram, uval2Loc) is [2, 3]
  │ PASS gl.getUniform(uintProgram, uval3Loc) is [4, 5, 6]
  │ PASS gl.getUniform(uintProgram, uval4Loc) is [7, 8, 9, 10]
  │ PASS getError was expected value: NO_ERROR :
  │ Matrix uniform variables for WebGL 2
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getProgramParameter(matForWebGL2Program, gl.LINK_STATUS) is true
  │ PASS getError was expected value: NO_ERROR :
  │ PASS gl.getUniform(matForWebGL2Program, mval2x3Loc) is [1, 2, 3, 4, 5, 6]
  │ PASS gl.getUniform(matForWebGL2Program, mval2x4Loc) is [7, 8, 9, 10, 11, 12, 13, 14]
  │ PASS gl.getUniform(matForWebGL2Program, mval3x2Loc) is [15, 16, 17, 18, 19, 20]
  │ PASS gl.getUniform(matForWebGL2Program, mval3x4Loc) is [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32]
  │ PASS gl.getUniform(matForWebGL2Program, mval4x2Loc) is [33, 34, 35, 36, 37, 38, 39, 40]
  │ PASS gl.getUniform(matForWebGL2Program, mval4x3Loc) is [41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
  │ PASS getError was expected value: NO_ERROR :
  │ Sampler uniform variables for WebGL2
  │ PASS gl.getProgramParameter(samplerForWebGL2Program, gl.LINK_STATUS) is true
  │ FAIL getError expected: NO_ERROR. Was INVALID_OPERATION :
  │ wrong uniform type (thread ScriptThread PipelineId { namespace_id: PipelineNamespaceId(1), index: PipelineIndex(1) }, at components/script/dom/webglrenderingcontext.rs:3741)
  │ stack backtrace:
  │    0: servo::backtrace::print
  │    1: servo::main::{{closure}}
  │    2: std::panicking::rust_panic_with_hook
  │              at src/libstd/panicking.rs:474
  │    3: std::panicking::begin_panic
  │    4: <script::dom::webglrenderingcontext::WebGLRenderingContext as script::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextBinding::WebGLRenderingContextMethods>::GetUniform
  │    5: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
  │    6: _ZN3std9panicking3try7do_call17h865bd975a3a4764dE.llvm.14630569030709900601
  │    7: __rust_maybe_catch_panic
  │              at src/libpanic_unwind/lib.rs:86
  │    8: script::dom::bindings::codegen::Bindings::WebGL2RenderingContextBinding::WebGL2RenderingContextBinding::getUniform
  │    9: CallJitMethodOp
  │   10: script::dom::bindings::utils::generic_call
  │   11: _Z12CallJSNativeP9JSContextPFbS0_jPN2JS5ValueEEN2js10CallReasonERKNS1_8CallArgsE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/vm/Interpreter.cpp:456
  │       _ZN2js23InternalCallOrConstructEP9JSContextRKN2JS8CallArgsENS_14MaybeConstructENS_10CallReasonE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/vm/Interpreter.cpp:548
  │   12: _ZN2js13CallFromStackEP9JSContextRKN2JS8CallArgsE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/vm/Interpreter.cpp:621
  │       _ZL9InterpretP9JSContextRN2js8RunStateE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/vm/Interpreter.cpp:3117
  │   13: _ZN2js9RunScriptEP9JSContextRNS_8RunStateE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/vm/Interpreter.cpp:423
  │   14: _ZN2js13ExecuteKernelEP9JSContextN2JS6HandleIP8JSScriptEER8JSObjectRKNS2_5ValueENS_16AbstractFramePtrEPS9_
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/vm/Interpreter.cpp:810
  │   15: _ZL10EvalKernelP9JSContextN2JS6HandleINS1_5ValueEEE8EvalTypeN2js16AbstractFramePtrENS2_IP8JSObjectEEPhNS1_13MutableHandleIS3_EE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/builtin/Eval.cpp:341
  │   16: _ZN2js10DirectEvalEP9JSContextN2JS6HandleINS2_5ValueEEENS2_13MutableHandleIS4_EE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/builtin/Eval.cpp:461
  │   17: _ZN2js3jit14DoCallFallbackEP9JSContextPNS0_13BaselineFrameEPNS0_15ICCall_FallbackEjPN2JS5ValueENS7_13MutableHandleIS8_EE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/jit/BaselineIC.cpp:2928
  │   18: <unknown>
  │   19: <unknown>
  │   20: <unknown>
  │   21: _ZL8EnterJitP9JSContextRN2js8RunStateEPh
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/jit/Jit.cpp:109
  │       _ZN2js3jit13MaybeEnterJitEP9JSContextRNS_8RunStateE
  │              at /root/.cargo/git/checkouts/mozjs-fa11ffc7d4f1cc2d/aabcc9b/mozjs/js/src/jit/Jit.cpp:200
  │   22: <script::dom::bindings::root::Root<T> as core::ops::drop::Drop>::drop
  │   23: <unknown>
  │ [2020-03-06T14:38:16Z ERROR servo] wrong uniform type
  â”” Pipeline failed in hard-fail mode.  Crashing!

There are also different /_webgl/conformance2/context/methods-2.html results now.

@bors-servo
Copy link
Contributor

bors-servo commented Mar 9, 2020

The latest upstream changes (presumably #25915) made this pull request unmergeable. Please resolve the merge conflicts.

@mmatyas mmatyas force-pushed the mmatyas:webgl_fns_framebuf_renderbuf branch from b8ac3e7 to ad7a97e Mar 9, 2020
@highfive highfive removed the S-tests-failed label Mar 9, 2020
@mmatyas
Copy link
Contributor Author

mmatyas commented Mar 9, 2020

Rebased and run the tests again. I don't encounter crashes locally, hopefully the CI will now pass too.

@jdm
Copy link
Member

jdm commented Mar 9, 2020

@bors-servo try=wpt

@bors-servo
Copy link
Contributor

bors-servo commented Mar 9, 2020

Trying commit ad7a97e with merge ba652e1...

bors-servo added a commit that referenced this pull request Mar 9, 2020
Add support for some more WebGL2 renderbuffer functions

Adds support for the following WebGL2 calls:

- `RenderbufferStorageMultisample`
- `GetInternalFormativ`

See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.5

<!-- Please describe your changes on the following line: -->

The test results depend on #25903.

cc @jdm @zakorgy

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@jdm jdm force-pushed the mmatyas:webgl_fns_framebuf_renderbuf branch from b6aa8c4 to 6cdbab5 Mar 13, 2020
@jdm
Copy link
Member

jdm commented Mar 13, 2020

@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

📌 Commit 6cdbab5 has been approved by jdm

@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

Testing commit 6cdbab5 with merge 4a74024...

bors-servo added a commit that referenced this pull request Mar 13, 2020
Add support for some more WebGL2 renderbuffer functions

Adds support for the following WebGL2 calls:

- `RenderbufferStorageMultisample`
- `GetInternalFormativ`

See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.5

<!-- Please describe your changes on the following line: -->

The test results depend on #25903.

cc @jdm @zakorgy

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

💔 Test failed - status-taskcluster

@jdm
Copy link
Member

jdm commented Mar 13, 2020

@bors-servo retry

@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

Testing commit 6cdbab5 with merge 1a410bf...

bors-servo added a commit that referenced this pull request Mar 13, 2020
Add support for some more WebGL2 renderbuffer functions

Adds support for the following WebGL2 calls:

- `RenderbufferStorageMultisample`
- `GetInternalFormativ`

See: https://www.khronos.org/registry/webgl/specs/latest/2.0/#3.7.5

<!-- Please describe your changes on the following line: -->

The test results depend on #25903.

cc @jdm @zakorgy

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

💔 Test failed - status-taskcluster

@jdm
Copy link
Member

jdm commented Mar 13, 2020

@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

Testing commit 6cdbab5 with merge a6736de...

@bors-servo
Copy link
Contributor

bors-servo commented Mar 13, 2020

☀️ Test successful - status-taskcluster
Approved by: jdm
Pushing a6736de to master...

@bors-servo bors-servo merged commit a6736de into servo:master Mar 13, 2020
2 checks passed
2 checks passed
Community-TC (pull_request) TaskGroup: success
Details
homu Test successful
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

5 participants
You can’t perform that action at this time.