WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
223352
webgl/2.0.1/conformance2/state/gl-object-get-calls.html fails or is flaky
https://bugs.webkit.org/show_bug.cgi?id=223352
Summary
webgl/2.0.1/conformance2/state/gl-object-get-calls.html fails or is flaky
Kimmo Kinnunen
Reported
2021-03-17 00:39:58 PDT
webgl/2.0.1/conformance2/state/gl-object-get-calls.html fails or is flaky Constant failure in normal operation Flakiness enters when we have the gpup patch which cleans up the ANGLE after last context. Maybe OpenGL driver bug wrt using the context? (E.g. a context that has done a lot of stuff / some important buggy thing gets broken.)
Attachments
Add attachment
proposed patch, testcase, etc.
Kimmo Kinnunen
Comment 1
2021-03-17 00:59:01 PDT
https://www.khronos.org/registry/webgl/sdk/tests/conformance2/state/gl-object-get-calls.html?webglVersion=2&quiet=0&quick=1
Test of get calls against GL objects like getBufferParameter, etc. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". test getBufferParameter PASS gl.getBufferParameter(34962, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(34962, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(34963, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(34963, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(36662, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(36662, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(36663, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(36663, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(35051, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(35051, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(35052, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(35052, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(35982, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(35982, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW PASS getBufferParameter correctly handled invalid parameter enums PASS gl.getBufferParameter(35345, gl.BUFFER_SIZE) is 16 PASS gl.getBufferParameter(35345, gl.BUFFER_USAGE) is gl.DYNAMIC_DRAW 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. FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) should be non-zero. Was 0 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. FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) should be non-zero. Was 0 FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) should be non-zero. Was 0 FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE) should be non-zero. Was 0 FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) should be non-zero. Was 0 FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.STENCIL, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) should be non-zero. Was 0 FAIL getError expected: NO_ERROR. Was INVALID_OPERATION : FAIL getFramebufferAttachmentParameter returned 0 instead of null for invalid parameter enum: POINTS/ZERO/NO_ERROR/NONE 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. FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE) should be non-zero. Was 0 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. FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE) should be non-zero. Was 0 FAIL gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH, gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING) should be non-zero. Was 0 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) FAIL getFramebufferAttachmentParameter returned 0 instead of null for invalid parameter enum: POINTS/ZERO/NO_ERROR/NONE 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: Argument 1 ('program') to WebGL2RenderingContext.getAttachedShaders must be an instance of WebGLProgram. PASS getError was expected value: NO_ERROR : PASS gl.getAttachedShaders(standardVert) threw exception TypeError: Argument 1 ('program') to WebGL2RenderingContext.getAttachedShaders must be an instance of 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 PASS gl.getProgramParameter(uniformBlockProgram, gl.ACTIVE_UNIFORM_BLOCKS) is 1 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. Was 0. PASS getRenderbufferParameter correctly handled invalid parameter enums 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 PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_BASE_LEVEL) is 0 PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_FUNC) is gl.LEQUAL PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_COMPARE_MODE) is gl.COMPARE_REF_TO_TEXTURE PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LEVEL) is 10 PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MAX_LOD) is 10 PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_MIN_LOD) is 0 PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_R) is gl.CLAMP_TO_EDGE PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_IMMUTABLE_FORMAT) is false PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_IMMUTABLE_LEVELS) is 0 PASS getTexParameter correctly handled invalid parameter enums 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 PASS getError was expected value: NO_ERROR : PASS gl.getUniform(samplerForWebGL2Program, s3DValLoc) is 0 PASS gl.getUniform(samplerForWebGL2Program, s2DArrayValLoc) is 1 PASS getError was expected value: NO_ERROR : test getVertexAttrib PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is buffer PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED) is true PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_SIZE) is 4 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_STRIDE) is 0 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_TYPE) is gl.FLOAT PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_NORMALIZED) is false PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_DIVISOR) is 0 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_INTEGER) is false PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_DIVISOR) is 2 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_STRIDE) is 36 PASS gl.getVertexAttribOffset(1, gl.VERTEX_ATTRIB_ARRAY_POINTER) is 12 PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_ENABLED) is false PASS gl.getVertexAttrib(1, gl.CURRENT_VERTEX_ATTRIB) is [5, 6, 7, 8] PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_TYPE) is gl.INT PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_INTEGER) is true PASS getError was expected value: NO_ERROR : PASS getVertexAttrib correctly handled invalid parameter enums PASS getError was expected value: INVALID_VALUE : after evaluating: gl.getVertexAttrib(16, gl.CURRENT_VERTEX_ATTRIB) Test cases where name == 0 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.NONE PASS getError was expected value: INVALID_OPERATION : PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.NONE PASS gl.getVertexAttrib(1, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is null PASS getError was expected value: NO_ERROR : Test getInternalformatParameter PASS gl.getInternalformatParameter(gl.RENDERBUFFER, gl.R32I, gl.SAMPLES) is non-null. PASS getError was expected value: NO_ERROR : PASS getInternalformatParameter correctly handled invalid target enums PASS getInternalformatParameter correctly handled invalid pname enums FAIL getInternalformatParameter returned 4,2 instead of null for invalid internalformat enum: 0x81a7 Test getIndexedParameter PASS gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) is buffer PASS gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) is 8 PASS gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) is 4 PASS gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) is buffer1 PASS gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) is 8 PASS gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) is offsetUniform PASS gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) is null PASS getIndexedParameter correctly handled invalid target enums Test getSamplerParameter PASS gl.getSamplerParameter(sampler, gl.TEXTURE_COMPARE_FUNC) is gl.LEQUAL PASS gl.getSamplerParameter(sampler, gl.TEXTURE_COMPARE_MODE) is gl.COMPARE_REF_TO_TEXTURE PASS gl.getSamplerParameter(sampler, gl.TEXTURE_MAG_FILTER) is gl.NEAREST PASS gl.getSamplerParameter(sampler, gl.TEXTURE_MAX_LOD) is 10 PASS gl.getSamplerParameter(sampler, gl.TEXTURE_MIN_FILTER) is gl.NEAREST PASS gl.getSamplerParameter(sampler, gl.TEXTURE_MIN_LOD) is 0 PASS gl.getSamplerParameter(sampler, gl.TEXTURE_WRAP_R) is gl.CLAMP_TO_EDGE PASS gl.getSamplerParameter(sampler, gl.TEXTURE_WRAP_S) is gl.CLAMP_TO_EDGE PASS gl.getSamplerParameter(sampler, gl.TEXTURE_WRAP_T) is gl.CLAMP_TO_EDGE PASS getSamplerParameter correctly handled invalid pname enums Test getSyncParameter PASS gl.getSyncParameter(sync, gl.OBJECT_TYPE) is gl.SYNC_FENCE PASS gl.getSyncParameter(sync, gl.SYNC_CONDITION) is gl.UNSIGNALED PASS gl.getSyncParameter(sync, gl.SYNC_CONDITION) is gl.SYNC_GPU_COMMANDS_COMPLETE PASS gl.getSyncParameter(sync, gl.SYNC_FLAGS) is 0 PASS getSyncParameter correctly handled invalid pname enums Test getQueryParameter PASS gl.getQueryParameter(query, gl.QUERY_RESULT_AVAILABLE) is false PASS getQueryParameter correctly handled invalid pname enums Test getFragDataLocation PASS gl.getShaderParameter(vertShader, gl.COMPILE_STATUS) is true PASS gl.getShaderParameter(fragShader, gl.COMPILE_STATUS) is true PASS gl.getProgramParameter(program, gl.LINK_STATUS) is true PASS gl.getFragDataLocation(program, "vertexColor") is -1 PASS gl.getFragDataLocation(program, "modelViewMatrix") is -1 PASS gl.getFragDataLocation(program, "projectionMatrix") is -1 PASS gl.getFragDataLocation(program, "position") is -1 PASS gl.getFragDataLocation(program, "fragColor") is 0 Test getActiveUniforms PASS gl.getProgramParameter(program, gl.LINK_STATUS) is true PASS gl.getError() is gl.NO_ERROR PASS typeof rowMajors[i] is "boolean" PASS typeof rowMajors[i] is "boolean" PASS typeof rowMajors[i] is "boolean" PASS getActiveUniforms correctly handled invalid pname enums Test getUniformBlockIndex PASS gl.getProgramParameter(program, gl.LINK_STATUS) is true PASS gl.getUniformBlockIndex(program, "Transform") is 0 PASS gl.getUniformBlockIndex(program, "u_modelViewMatrix") is gl.INVALID_INDEX PASS gl.getUniformBlockIndex(program, "normal") is gl.INVALID_INDEX PASS gl.getUniformBlockIndex(program, "u_normal") is gl.INVALID_INDEX PASS gl.getProgramParameter(noUniformProgram, gl.LINK_STATUS) is true PASS gl.getUniformBlockIndex(noUniformProgram, "u_modelViewProjMatrix") is gl.INVALID_INDEX PASS gl.getUniformBlockIndex(noUniformProgram, "u_normal") is gl.INVALID_INDEX Test getActiveUniformBlockName PASS gl.getProgramParameter(program, gl.LINK_STATUS) is true PASS gl.getActiveUniformBlockName(program, 0) is "Transform" PASS gl.getActiveUniformBlockName(program, -1) is null PASS getError was expected value: INVALID_VALUE : PASS gl.getActiveUniformBlockName(program, 1) is null PASS getError was expected value: INVALID_VALUE : PASS gl.getActiveUniformBlockName(program, gl.INVALID_INDEX) is null PASS getError was expected value: INVALID_VALUE : PASS gl.getProgramParameter(noLinkProgram, gl.LINK_STATUS) is false PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.getActiveUniformBlockName(noLinkProgram, 0) PASS gl.getProgramParameter(noUniformProgram, gl.LINK_STATUS) is true PASS gl.getActiveUniformBlockName(noUniformProgram, -1) is null PASS getError was expected value: INVALID_VALUE : PASS gl.getActiveUniformBlockName(noUniformProgram, 0) is null PASS getError was expected value: INVALID_VALUE : PASS gl.getActiveUniformBlockName(noUniformProgram, gl.INVALID_INDEX) is null PASS getError was expected value: INVALID_VALUE : Test getActiveUniformBlockParameter PASS gl.getProgramParameter(program, gl.LINK_STATUS) is true PASS gl.getActiveUniformBlockParameter(program, 0, gl.UNIFORM_BLOCK_BINDING) is 0 PASS gl.getActiveUniformBlockParameter(program, 0, gl.UNIFORM_BLOCK_BINDING) is 1 PASS gl.getActiveUniformBlockParameter(program, 0, gl.UNIFORM_BLOCK_DATA_SIZE) >= 164 is true PASS gl.getActiveUniformBlockParameter(program, 0, gl.UNIFORM_BLOCK_ACTIVE_UNIFORMS) is 3 PASS gl.getActiveUniformBlockParameter(program, 0, gl.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER) is true PASS gl.getActiveUniformBlockParameter(program, 0, gl.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER) is false PASS getActiveUniformBlockParameter correctly handled invalid pname enums PASS getError was expected value: NO_ERROR : PASS successfullyParsed is true TEST COMPLETE
Kimmo Kinnunen
Comment 2
2021-03-17 01:45:53 PDT
At least macOS 11.3, iMacPro1,1, Radeon Pro Vega 56
Radar WebKit Bug Importer
Comment 3
2021-03-24 00:40:14 PDT
<
rdar://problem/75774327
>
EWS
Comment 4
2022-08-10 02:13:24 PDT
Committed
253286@main
(3728a98461ce): <
https://commits.webkit.org/253286@main
> Reviewed commits have been landed. Closing PR #3141 and removing active labels.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug