Changeset 263281 in webkit


Ignore:
Timestamp:
Jun 19, 2020 12:59:28 PM (4 years ago)
Author:
commit-queue@webkit.org
Message:

[WebGL2] Uniform Buffer Objects
https://bugs.webkit.org/show_bug.cgi?id=209518

Patch by James Darpinian <James Darpinian> on 2020-06-19
Reviewed by Dean Jackson.

All uniform buffer object conformance tests pass.

Implemented Uniform Buffer Object related functions:
bindBufferBase, bindBufferRange, getUniformIndices, getActiveUniforms, getUniformBlockIndex,
getActiveUniformBlockParameter, getActiveUniformBlockName, uniformBlockBinding

Additionally, fixed many tangentially related issues:
getIntegeri_v and getInteger64i_v were not present.
drawArraysInstances and drawElementsInstanced did not work for WebGL 2.
drawRangeElements was not implemented.
WebGLAny did not support Vector<unsigned>, so Uint32Arrays could not be returned from WebGL functions.
The maximum uniform location length was wrong for WebGL 2.
Transform feedback indexed binding points weren't being tracked.
Some functions in ExtensionsGLANGLE didn't call makeContextCurrent.
New WebGL 2 buffer usage types COPY and READ weren't supported in bufferData.
pause/resumeTransformFeedback were unimplemented.
getParameter(READ_BUFFER) was unimplemented.
readBuffer conformance test was incorrect.

  • bindings/js/JSDOMConvertWebGL.cpp:

(WebCore::convertToJSValue):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::~WebGL2RenderingContext):
(WebCore::WebGL2RenderingContext::initializeNewContext):
(WebCore::WebGL2RenderingContext::drawRangeElements):
(WebCore::WebGL2RenderingContext::setIndexedBufferBinding):
(WebCore::WebGL2RenderingContext::bindBufferBase):
(WebCore::WebGL2RenderingContext::bindBufferRange):
(WebCore::WebGL2RenderingContext::getIndexedParameter):
(WebCore::WebGL2RenderingContext::getUniformIndices):
(WebCore::WebGL2RenderingContext::getActiveUniforms):
(WebCore::WebGL2RenderingContext::getUniformBlockIndex):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
(WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
(WebCore::WebGL2RenderingContext::uniformBlockBinding):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLAny.h:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::validateLocationLength):
(WebCore::WebGLRenderingContextBase::validateBufferDataParameters):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didFinishLoading):

  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:

(WebCore::ExtensionsGLANGLE::getTranslatedShaderSourceANGLE):
(WebCore::ExtensionsGLANGLE::blitFramebuffer):
(WebCore::ExtensionsGLANGLE::renderbufferStorageMultisample):
(WebCore::ExtensionsGLANGLE::drawBuffersEXT):
(WebCore::ExtensionsGLANGLE::getBooleanvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBufferParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getFloatvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getFramebufferAttachmentParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getIntegervRobustANGLE):
(WebCore::ExtensionsGLANGLE::getProgramivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getRenderbufferParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getShaderivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getUniformfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getUniformivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribPointervRobustANGLE):
(WebCore::ExtensionsGLANGLE::readPixelsRobustANGLE):
(WebCore::ExtensionsGLANGLE::texImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::texSubImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexSubImage2DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::compressedTexSubImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::texImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::texSubImage3DRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjectuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBufferPointervRobustANGLE):
(WebCore::ExtensionsGLANGLE::getIntegeri_vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getInternalformativRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getVertexAttribIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getUniformuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getActiveUniformBlockivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getInteger64vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getInteger64i_vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBufferParameteri64vRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getFramebufferParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getProgramInterfaceivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getBooleani_vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getMultisamplefvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexLevelParameterfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getPointervRobustANGLERobustANGLE):
(WebCore::ExtensionsGLANGLE::readnPixelsRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformfvRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getnUniformuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::texParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getTexParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::samplerParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterIivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getSamplerParameterIuivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjectivRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjecti64vRobustANGLE):
(WebCore::ExtensionsGLANGLE::getQueryObjectui64vRobustANGLE):

  • platform/graphics/angle/GraphicsContextGLANGLE.cpp:

(WebCore::GraphicsContextGLOpenGL::getIntegeri_v):
(WebCore::GraphicsContextGLOpenGL::getInteger64v):
(WebCore::GraphicsContextGLOpenGL::getInteger64i_v):
(WebCore::GraphicsContextGLOpenGL::drawArraysInstanced):
(WebCore::GraphicsContextGLOpenGL::drawElementsInstanced):
(WebCore::GraphicsContextGLOpenGL::getUniformBlockIndex):
(WebCore::GraphicsContextGLOpenGL::getActiveUniformBlockiv):
(WebCore::GraphicsContextGLOpenGL::getActiveUniformBlockName):
(WebCore::GraphicsContextGLOpenGL::uniformBlockBinding):
(WebCore::GraphicsContextGLOpenGL::drawRangeElements):
(WebCore::GraphicsContextGLOpenGL::pauseTransformFeedback):
(WebCore::GraphicsContextGLOpenGL::resumeTransformFeedback):
(WebCore::GraphicsContextGLOpenGL::bindBufferRange):
(WebCore::GraphicsContextGLOpenGL::getUniformIndices):

  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:

(WebCore::GraphicsContextGLOpenGL::getIntegeri_v):

  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::getInteger64v):
(WebCore::GraphicsContextGLOpenGL::getInteger64i_v):

Location:
trunk
Files:
33 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/fast/canvas/webgl/webgl2-getActiveUniforms-expected.txt

    r259900 r263281  
    1212PASS gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_ARRAY_STRIDE) is [-1]
    1313PASS gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_MATRIX_STRIDE) is [-1]
    14 PASS gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_IS_ROW_MAJOR) is [0]
     14PASS gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_IS_ROW_MAJOR) is [false]
    1515PASS gl.getError() is gl.NO_ERROR
    1616PASS gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_NAME_LENGTH) is null
  • trunk/LayoutTests/fast/canvas/webgl/webgl2-getActiveUniforms.html

    r221667 r263281  
    2626shouldBe("gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_ARRAY_STRIDE)", "[-1]");
    2727shouldBe("gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_MATRIX_STRIDE)", "[-1]");
    28 shouldBe("gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_IS_ROW_MAJOR)", "[0]");
     28shouldBe("gl.getActiveUniforms(program, [mvpLocation], gl.UNIFORM_IS_ROW_MAJOR)", "[false]");
    2929shouldBe("gl.getError()", "gl.NO_ERROR");
    3030
  • trunk/LayoutTests/webgl/2.0.0/conformance2/buffers/bound-buffer-size-change-test-expected.txt

    r256836 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/buffers/bound-buffer-size-change-test.html
    4 [ 1: PASS ] getError was expected value: NO_ERROR : Calling bindBufferBase on a buffer where no storage is allocated should succeed.
    5 [ 2: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) is buffer1
    6 [ 3: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be [object WebGLBuffer]. Was null.
    7 [ 4: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) should be 0 (of type number). Was null (of type object).
    8 [ 5: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) should be 0 (of type number). Was null (of type object).
    9 [ 6: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be [object WebGLBuffer]. Was null.
    10 [ 7: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) should be 0 (of type number). Was null (of type object).
    11 [ 8: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) should be 0 (of type number). Was null (of type object).
    12 [ 9: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM :
    13 [ 10: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Calling bindBufferBase on a buffer where no storage is allocated should succeed.
    14 [ 11: FAIL ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) should be [object WebGLBuffer]. Was null.
    15 [ 12: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) should be [object WebGLBuffer]. Was null.
    16 [ 13: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) should be 0 (of type number). Was null (of type object).
    17 [ 14: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) should be 0 (of type number). Was null (of type object).
    18 [ 15: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) should be [object WebGLBuffer]. Was null.
    19 [ 16: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) should be 0 (of type number). Was null (of type object).
    20 [ 17: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) should be 0 (of type number). Was null (of type object).
    21 [ 18: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM :
    22 [ 19: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : Calling bindBufferRange on a buffer where no storage is allocated should succeed.
    23 [ 20: FAIL ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) should be [object WebGLBuffer]. Was [object WebGLBuffer].
    24 [ 21: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be [object WebGLBuffer]. Was null.
    25 [ 22: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) should be 8 (of type number). Was null (of type object).
    26 [ 23: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) should be 4 (of type number). Was null (of type object).
    27 [ 24: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be [object WebGLBuffer]. Was null.
    28 [ 25: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) should be 8 (of type number). Was null (of type object).
    29 [ 26: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) should be 4 (of type number). Was null (of type object).
    30 [ 27: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be [object WebGLBuffer]. Was null.
    31 [ 28: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) should be 8 (of type number). Was null (of type object).
    32 [ 29: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) should be 4 (of type number). Was null (of type object).
    33 [ 30: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM :
    34 [ 31: PASS ] getError was expected value: NO_ERROR : Calling bindBufferRange on a buffer where no storage is allocated should succeed.
    35 [ 32: FAIL ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) should be [object WebGLBuffer]. Was null.
    36 [ 33: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) should be [object WebGLBuffer]. Was null.
    37 [ 34: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) should be 12 (of type number). Was null (of type object).
    38 [ 35: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) should be 256 (of type number). Was null (of type object).
    39 [ 36: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) should be [object WebGLBuffer]. Was null.
    40 [ 37: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) should be 12 (of type number). Was null (of type object).
    41 [ 38: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) should be 256 (of type number). Was null (of type object).
    42 [ 39: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) should be [object WebGLBuffer]. Was null.
    43 [ 40: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) should be 12 (of type number). Was null (of type object).
    44 [ 41: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) should be 256 (of type number). Was null (of type object).
    45 [ 42: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM :
    46 [ 43: PASS ] successfullyParsed is true
    47 [ FAIL ] 39 failures reported
     4[ PASS ] All tests passed
    485
  • trunk/LayoutTests/webgl/2.0.0/conformance2/buffers/buffer-overflow-test-expected.txt

    r236236 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/buffers/buffer-overflow-test.html
    4 [ 1: PASS ] getError was expected value: NO_ERROR : Calling bindBufferRange on a buffer where no storage is allocated should succeed.
    5 [ 2: FAIL ] buffer1 should be null. Was [object WebGLBuffer].
    6 [ 3: FAIL ] 4 should be null (of type object). Was 4 (of type number).
    7 [ 4: FAIL ] 0 should be null (of type object). Was 0 (of type number).
    8 [ 5: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Calling bindBufferRange on a buffer where the storage is not big enough should succeed.
    9 [ 6: FAIL ] buffer2 should be null. Was [object WebGLBuffer].
    10 [ 7: FAIL ] 8 should be null (of type object). Was 8 (of type number).
    11 [ 8: FAIL ] 0 should be null (of type object). Was 0 (of type number).
    12 [ 9: PASS ] successfullyParsed is true
    13 [ FAIL ] 7 failures reported
     4[ PASS ] All tests passed
    145
  • trunk/LayoutTests/webgl/2.0.0/conformance2/buffers/buffer-type-restrictions-expected.txt

    r261413 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/buffers/buffer-type-restrictions.html
    4 [ 1: PASS ] getError was expected value: NO_ERROR : Should be no errors from setup.
    5 [ 2: PASS ] getError was expected value: NO_ERROR : bindBuffer(gl.ARRAY_BUFFER, buffer1) should WORK
    6 [ 3: PASS ] getError was expected value: NO_ERROR : bindBufferRange(gl.UNIFORM_BUFFER, 0, buffer2, 0, 4) should WORK
    7 [ 4: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : bindBufferBase(gl.UNIFORM_BUFFER, 0, buffer3) should WORK
    8 [ 5: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    9 [ 6: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    10 [ 7: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    11 [ 8: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    12 [ 9: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    13 [ 10: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    14 [ 11: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    15 [ 12: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    16 [ 13: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    17 [ 14: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    18 [ 15: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    19 [ 16: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.ARRAY_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    20 [ 17: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should FAIL
    21 [ 18: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should WORK
    22 [ 19: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    23 [ 20: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    24 [ 21: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should FAIL
    25 [ 22: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should FAIL
    26 [ 23: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should FAIL
    27 [ 24: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should FAIL
    28 [ 25: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should FAIL
    29 [ 26: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should FAIL
    30 [ 27: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should FAIL
    31 [ 28: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.ELEMENT_ARRAY_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should FAIL
    32 [ 29: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    33 [ 30: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    34 [ 31: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    35 [ 32: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    36 [ 33: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    37 [ 34: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    38 [ 35: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    39 [ 36: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    40 [ 37: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    41 [ 38: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    42 [ 39: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    43 [ 40: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.COPY_READ_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    44 [ 41: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    45 [ 42: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    46 [ 43: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    47 [ 44: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    48 [ 45: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    49 [ 46: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    50 [ 47: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    51 [ 48: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    52 [ 49: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    53 [ 50: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    54 [ 51: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    55 [ 52: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.COPY_WRITE_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    56 [ 53: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    57 [ 54: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    58 [ 55: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    59 [ 56: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    60 [ 57: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    61 [ 58: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    62 [ 59: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    63 [ 60: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    64 [ 61: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    65 [ 62: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    66 [ 63: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    67 [ 64: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.PIXEL_PACK_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    68 [ 65: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    69 [ 66: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    70 [ 67: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    71 [ 68: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    72 [ 69: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    73 [ 70: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    74 [ 71: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    75 [ 72: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    76 [ 73: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    77 [ 74: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    78 [ 75: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    79 [ 76: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.PIXEL_UNPACK_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    80 [ 77: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    81 [ 78: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    82 [ 79: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    83 [ 80: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    84 [ 81: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    85 [ 82: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    86 [ 83: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    87 [ 84: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    88 [ 85: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    89 [ 86: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    90 [ 87: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    91 [ 88: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    92 [ 89: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    93 [ 90: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    94 [ 91: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    95 [ 92: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    96 [ 93: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    97 [ 94: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    98 [ 95: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    99 [ 96: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    100 [ 97: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    101 [ 98: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    102 [ 99: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    103 [ 100: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    104 [ 101: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    105 [ 102: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    106 [ 103: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    107 [ 104: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    108 [ 105: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    109 [ 106: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    110 [ 107: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    111 [ 108: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    112 [ 109: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    113 [ 110: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    114 [ 111: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    115 [ 112: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    116 [ 113: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    117 [ 114: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    118 [ 115: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.ARRAY_BUFFER should WORK
    119 [ 116: PASS ] getError was expected value: INVALID_OPERATION : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    120 [ 117: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    121 [ 118: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.ELEMENT_ARRAY_BUFFER should FAIL
    122 [ 119: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    123 [ 120: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    124 [ 121: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.COPY_READ_BUFFER should WORK
    125 [ 122: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    126 [ 123: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    127 [ 124: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.COPY_WRITE_BUFFER should WORK
    128 [ 125: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    129 [ 126: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    130 [ 127: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_PACK_BUFFER should WORK
    131 [ 128: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    132 [ 129: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    133 [ 130: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.PIXEL_UNPACK_BUFFER should WORK
    134 [ 131: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    135 [ 132: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    136 [ 133: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    137 [ 134: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    138 [ 135: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    139 [ 136: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    140 [ 137: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    141 [ 138: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBufferRange to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    142 [ 139: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBufferBase to gl.TRANSFORM_FEEDBACK_BUFFER should WORK
    143 [ 140: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    144 [ 141: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    145 [ 142: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBuffer to gl.UNIFORM_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    146 [ 143: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    147 [ 144: PASS ] getError was expected value: NO_ERROR : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    148 [ 145: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferRange to gl.UNIFORM_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    149 [ 146: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBuffer to gl.UNIFORM_BUFFER should WORK
    150 [ 147: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBufferRange to gl.UNIFORM_BUFFER should WORK
    151 [ 148: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Binding buffer first with bindBufferBase to gl.UNIFORM_BUFFER and then binding buffer with bindBufferBase to gl.UNIFORM_BUFFER should WORK
    152 [ 149: PASS ] successfullyParsed is true
    153 [ FAIL ] 28 failures reported
     4[ PASS ] All tests passed
    1545
  • trunk/LayoutTests/webgl/2.0.0/conformance2/buffers/one-large-uniform-buffer-expected.txt

    r256836 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/buffers/one-large-uniform-buffer.html
    4 [ 1: PASS ] WebGL context exists
    5 [ 2: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Setting up uniform block should succeed
    6 [ 3: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : Draw with uniform block should succeed
    7 [ 4: FAIL ] canvas should be same as input uniform at (0, 0) expected: 127,191,64,255 was 0,0,0,0
    8 [ 5: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Setting up uniform block should succeed
    9 [ 6: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : Draw with uniform block should succeed
    10 [ 7: FAIL ] canvas should be same as input uniform at (0, 0) expected: 127,191,64,255 was 0,0,0,0
    11 [ 8: PASS ] getError was expected value: NO_ERROR : Readback from uniform block should succeed
    12 [ 9: PASS ] successfullyParsed is true
    13 [ FAIL ] 6 failures reported
     4[ PASS ] All tests passed
    145
  • trunk/LayoutTests/webgl/2.0.0/conformance2/buffers/uniform-buffers-expected.txt

    r261413 r263281  
    1 CONSOLE MESSAGE: TypeError: Value is not a sequence
    21This test runs the WebGL Test listed below in an iframe and reports PASS or FAIL.
    32
    43Test: ../../resources/webgl_test_files/conformance2/buffers/uniform-buffers.html
    5 [ 1: PASS ] WebGL context exists
    6 [ 2: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    7 [ 3: PASS ] getError was expected value: NO_ERROR : UNIFORM_BUFFER_BINDING query should succeed
    8 [ 4: PASS ] getError was expected value: NO_ERROR : createBuffer should not set an error
    9 [ 5: PASS ] b1 is non-null.
    10 [ 6: PASS ] b2 is non-null.
    11 [ 7: PASS ] getError was expected value: NO_ERROR : should be able to bind uniform buffer
    12 [ 8: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is b1
    13 [ 9: PASS ] getError was expected value: NO_ERROR : should be able to update uniform buffer binding
    14 [ 10: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is b2
    15 [ 11: PASS ] getError was expected value: NO_ERROR : should be able to unbind uniform buffer
    16 [ 12: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    17 [ 13: PASS ] getError was expected value: INVALID_OPERATION : binding a deleted buffer should generate INVALID_OPERATION
    18 [ 14: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    19 [ 15: PASS ] To define the same uniform in two uniform blocks should fail
    20 [ 16: PASS ] UNIFORM_BUFFER_OFFSET_ALIGNMENT is divisible by four
    21 [ 17: FAIL ] successfullyParsed should be true (of type boolean). Was undefined (of type undefined).
    22 [ FAIL ] 1 failures reported
     4[ PASS ] All tests passed
    235
  • trunk/LayoutTests/webgl/2.0.0/conformance2/glsl3/attrib-location-length-limits-expected.txt

    r235913 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/glsl3/attrib-location-length-limits.html
    4 [ 1: PASS ] gl.getProgramParameter(program, gl.LINK_STATUS) is true
    5 [ 2: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE :
    6 [ 3: FAIL ] attrib location was -1, should not be
    7 [ 4: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE :
    8 [ 5: PASS ] wtu.loadProgramFromScriptExpectError(gl, "badVertexShader", "fragmentShader") is null
    9 [ 6: PASS ] getError was expected value: NO_ERROR :
    10 [ 7: PASS ] getError was expected value: INVALID_VALUE :
    11 [ 8: PASS ] gl.getAttribLocation(program, attrib1025Name) is -1
    12 [ 9: PASS ] getError was expected value: INVALID_VALUE :
    13 [ 10: PASS ] successfullyParsed is true
    14 [ FAIL ] 3 failures reported
     4[ PASS ] All tests passed
    155
  • trunk/LayoutTests/webgl/2.0.0/conformance2/glsl3/uniform-location-length-limits-expected.txt

    r235913 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/glsl3/uniform-location-length-limits.html
    4 [ 1: PASS ] gl.getProgramParameter(program, gl.LINK_STATUS) is true
    5 [ 2: FAIL ] uniformLoc should be non-null. Was null
    6 [ 3: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE :
    7 [ 4: PASS ] getError was expected value: NO_ERROR :
    8 [ 5: PASS ] gl.getProgramParameter(program, gl.LINK_STATUS) is true
    9 [ 6: PASS ] getError was expected value: INVALID_VALUE :
    10 [ 7: PASS ] uniformLoc is null
    11 [ 8: PASS ] successfullyParsed is true
    12 [ FAIL ] 2 failures reported
     4[ PASS ] All tests passed
    135
  • trunk/LayoutTests/webgl/2.0.0/conformance2/misc/expando-loss-2-expected.txt

    r261413 r263281  
    6868[ 64: PASS ] getParameter(UNIFORM_BUFFER_BINDING): Expect extra expando to survive despite GC.
    6969[ 65: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
    70 [ 66: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) returns instance that was bound.
    71 [ 67: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 1) returns instance that was bound.
    72 [ 68: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 2) returns instance that was bound.
    73 [ 69: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 3) returns instance that was bound.
    74 [ 70: FAIL ] successfullyParsed should be true (of type boolean). Was undefined (of type undefined).
    75 [ FAIL ] 31 failures reported
     70[ 66: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) returns instance that was bound.
     71[ 67: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 1) returns instance that was bound.
     72[ 68: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 2) returns instance that was bound.
     73[ 69: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 3) returns instance that was bound.
     74[ 70: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 0): Expect basic expando to survive despite GC.
     75[ 71: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 0): Expect subobject expando to survive despite GC.
     76[ 72: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 0): Expect extra expando to survive despite GC.
     77[ 73: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     78[ 74: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 1): Expect basic expando to survive despite GC.
     79[ 75: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 1): Expect subobject expando to survive despite GC.
     80[ 76: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 1): Expect extra expando to survive despite GC.
     81[ 77: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     82[ 78: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 2): Expect basic expando to survive despite GC.
     83[ 79: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 2): Expect subobject expando to survive despite GC.
     84[ 80: FAIL ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 2): Expect extra expando to survive despite GC.
     85[ 81: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     86[ 82: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 3): Expect basic expando to survive despite GC.
     87[ 83: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 3): Expect subobject expando to survive despite GC.
     88[ 84: PASS ] getIndexedParameter(TRANSFORM_FEEDBACK_BUFFER_BINDING, 3): Expect extra expando to survive despite GC.
     89[ 85: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     90[ 86: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 0) returns instance that was bound.
     91[ 87: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 1) returns instance that was bound.
     92[ 88: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 2) returns instance that was bound.
     93[ 89: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 3) returns instance that was bound.
     94[ 90: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 4) returns instance that was bound.
     95[ 91: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 5) returns instance that was bound.
     96[ 92: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 6) returns instance that was bound.
     97[ 93: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 7) returns instance that was bound.
     98[ 94: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 8) returns instance that was bound.
     99[ 95: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 9) returns instance that was bound.
     100[ 96: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 10) returns instance that was bound.
     101[ 97: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 11) returns instance that was bound.
     102[ 98: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 12) returns instance that was bound.
     103[ 99: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 13) returns instance that was bound.
     104[ 100: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 14) returns instance that was bound.
     105[ 101: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 15) returns instance that was bound.
     106[ 102: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 16) returns instance that was bound.
     107[ 103: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 17) returns instance that was bound.
     108[ 104: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 18) returns instance that was bound.
     109[ 105: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 19) returns instance that was bound.
     110[ 106: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 20) returns instance that was bound.
     111[ 107: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 21) returns instance that was bound.
     112[ 108: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 22) returns instance that was bound.
     113[ 109: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 23) returns instance that was bound.
     114[ 110: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 24) returns instance that was bound.
     115[ 111: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 25) returns instance that was bound.
     116[ 112: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 26) returns instance that was bound.
     117[ 113: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 27) returns instance that was bound.
     118[ 114: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 28) returns instance that was bound.
     119[ 115: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 29) returns instance that was bound.
     120[ 116: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 30) returns instance that was bound.
     121[ 117: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 31) returns instance that was bound.
     122[ 118: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 32) returns instance that was bound.
     123[ 119: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 33) returns instance that was bound.
     124[ 120: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 34) returns instance that was bound.
     125[ 121: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 35) returns instance that was bound.
     126[ 122: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 36) returns instance that was bound.
     127[ 123: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 37) returns instance that was bound.
     128[ 124: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 38) returns instance that was bound.
     129[ 125: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 39) returns instance that was bound.
     130[ 126: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 40) returns instance that was bound.
     131[ 127: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 41) returns instance that was bound.
     132[ 128: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 42) returns instance that was bound.
     133[ 129: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 43) returns instance that was bound.
     134[ 130: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 44) returns instance that was bound.
     135[ 131: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 45) returns instance that was bound.
     136[ 132: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 46) returns instance that was bound.
     137[ 133: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 47) returns instance that was bound.
     138[ 134: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 0): Expect basic expando to survive despite GC.
     139[ 135: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 0): Expect subobject expando to survive despite GC.
     140[ 136: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 0): Expect extra expando to survive despite GC.
     141[ 137: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     142[ 138: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 1): Expect basic expando to survive despite GC.
     143[ 139: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 1): Expect subobject expando to survive despite GC.
     144[ 140: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 1): Expect extra expando to survive despite GC.
     145[ 141: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     146[ 142: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 2): Expect basic expando to survive despite GC.
     147[ 143: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 2): Expect subobject expando to survive despite GC.
     148[ 144: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 2): Expect extra expando to survive despite GC.
     149[ 145: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     150[ 146: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 3): Expect basic expando to survive despite GC.
     151[ 147: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 3): Expect subobject expando to survive despite GC.
     152[ 148: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 3): Expect extra expando to survive despite GC.
     153[ 149: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     154[ 150: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 4): Expect basic expando to survive despite GC.
     155[ 151: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 4): Expect subobject expando to survive despite GC.
     156[ 152: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 4): Expect extra expando to survive despite GC.
     157[ 153: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     158[ 154: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 5): Expect basic expando to survive despite GC.
     159[ 155: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 5): Expect subobject expando to survive despite GC.
     160[ 156: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 5): Expect extra expando to survive despite GC.
     161[ 157: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     162[ 158: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 6): Expect basic expando to survive despite GC.
     163[ 159: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 6): Expect subobject expando to survive despite GC.
     164[ 160: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 6): Expect extra expando to survive despite GC.
     165[ 161: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     166[ 162: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 7): Expect basic expando to survive despite GC.
     167[ 163: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 7): Expect subobject expando to survive despite GC.
     168[ 164: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 7): Expect extra expando to survive despite GC.
     169[ 165: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     170[ 166: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 8): Expect basic expando to survive despite GC.
     171[ 167: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 8): Expect subobject expando to survive despite GC.
     172[ 168: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 8): Expect extra expando to survive despite GC.
     173[ 169: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     174[ 170: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 9): Expect basic expando to survive despite GC.
     175[ 171: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 9): Expect subobject expando to survive despite GC.
     176[ 172: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 9): Expect extra expando to survive despite GC.
     177[ 173: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     178[ 174: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 10): Expect basic expando to survive despite GC.
     179[ 175: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 10): Expect subobject expando to survive despite GC.
     180[ 176: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 10): Expect extra expando to survive despite GC.
     181[ 177: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     182[ 178: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 11): Expect basic expando to survive despite GC.
     183[ 179: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 11): Expect subobject expando to survive despite GC.
     184[ 180: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 11): Expect extra expando to survive despite GC.
     185[ 181: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     186[ 182: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 12): Expect basic expando to survive despite GC.
     187[ 183: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 12): Expect subobject expando to survive despite GC.
     188[ 184: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 12): Expect extra expando to survive despite GC.
     189[ 185: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     190[ 186: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 13): Expect basic expando to survive despite GC.
     191[ 187: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 13): Expect subobject expando to survive despite GC.
     192[ 188: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 13): Expect extra expando to survive despite GC.
     193[ 189: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     194[ 190: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 14): Expect basic expando to survive despite GC.
     195[ 191: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 14): Expect subobject expando to survive despite GC.
     196[ 192: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 14): Expect extra expando to survive despite GC.
     197[ 193: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     198[ 194: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 15): Expect basic expando to survive despite GC.
     199[ 195: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 15): Expect subobject expando to survive despite GC.
     200[ 196: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 15): Expect extra expando to survive despite GC.
     201[ 197: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     202[ 198: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 16): Expect basic expando to survive despite GC.
     203[ 199: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 16): Expect subobject expando to survive despite GC.
     204[ 200: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 16): Expect extra expando to survive despite GC.
     205[ 201: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     206[ 202: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 17): Expect basic expando to survive despite GC.
     207[ 203: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 17): Expect subobject expando to survive despite GC.
     208[ 204: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 17): Expect extra expando to survive despite GC.
     209[ 205: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     210[ 206: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 18): Expect basic expando to survive despite GC.
     211[ 207: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 18): Expect subobject expando to survive despite GC.
     212[ 208: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 18): Expect extra expando to survive despite GC.
     213[ 209: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     214[ 210: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 19): Expect basic expando to survive despite GC.
     215[ 211: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 19): Expect subobject expando to survive despite GC.
     216[ 212: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 19): Expect extra expando to survive despite GC.
     217[ 213: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     218[ 214: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 20): Expect basic expando to survive despite GC.
     219[ 215: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 20): Expect subobject expando to survive despite GC.
     220[ 216: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 20): Expect extra expando to survive despite GC.
     221[ 217: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     222[ 218: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 21): Expect basic expando to survive despite GC.
     223[ 219: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 21): Expect subobject expando to survive despite GC.
     224[ 220: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 21): Expect extra expando to survive despite GC.
     225[ 221: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     226[ 222: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 22): Expect basic expando to survive despite GC.
     227[ 223: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 22): Expect subobject expando to survive despite GC.
     228[ 224: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 22): Expect extra expando to survive despite GC.
     229[ 225: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     230[ 226: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 23): Expect basic expando to survive despite GC.
     231[ 227: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 23): Expect subobject expando to survive despite GC.
     232[ 228: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 23): Expect extra expando to survive despite GC.
     233[ 229: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     234[ 230: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 24): Expect basic expando to survive despite GC.
     235[ 231: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 24): Expect subobject expando to survive despite GC.
     236[ 232: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 24): Expect extra expando to survive despite GC.
     237[ 233: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     238[ 234: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 25): Expect basic expando to survive despite GC.
     239[ 235: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 25): Expect subobject expando to survive despite GC.
     240[ 236: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 25): Expect extra expando to survive despite GC.
     241[ 237: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     242[ 238: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 26): Expect basic expando to survive despite GC.
     243[ 239: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 26): Expect subobject expando to survive despite GC.
     244[ 240: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 26): Expect extra expando to survive despite GC.
     245[ 241: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     246[ 242: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 27): Expect basic expando to survive despite GC.
     247[ 243: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 27): Expect subobject expando to survive despite GC.
     248[ 244: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 27): Expect extra expando to survive despite GC.
     249[ 245: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     250[ 246: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 28): Expect basic expando to survive despite GC.
     251[ 247: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 28): Expect subobject expando to survive despite GC.
     252[ 248: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 28): Expect extra expando to survive despite GC.
     253[ 249: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     254[ 250: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 29): Expect basic expando to survive despite GC.
     255[ 251: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 29): Expect subobject expando to survive despite GC.
     256[ 252: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 29): Expect extra expando to survive despite GC.
     257[ 253: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     258[ 254: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 30): Expect basic expando to survive despite GC.
     259[ 255: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 30): Expect subobject expando to survive despite GC.
     260[ 256: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 30): Expect extra expando to survive despite GC.
     261[ 257: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     262[ 258: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 31): Expect basic expando to survive despite GC.
     263[ 259: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 31): Expect subobject expando to survive despite GC.
     264[ 260: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 31): Expect extra expando to survive despite GC.
     265[ 261: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     266[ 262: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 32): Expect basic expando to survive despite GC.
     267[ 263: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 32): Expect subobject expando to survive despite GC.
     268[ 264: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 32): Expect extra expando to survive despite GC.
     269[ 265: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     270[ 266: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 33): Expect basic expando to survive despite GC.
     271[ 267: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 33): Expect subobject expando to survive despite GC.
     272[ 268: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 33): Expect extra expando to survive despite GC.
     273[ 269: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     274[ 270: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 34): Expect basic expando to survive despite GC.
     275[ 271: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 34): Expect subobject expando to survive despite GC.
     276[ 272: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 34): Expect extra expando to survive despite GC.
     277[ 273: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     278[ 274: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 35): Expect basic expando to survive despite GC.
     279[ 275: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 35): Expect subobject expando to survive despite GC.
     280[ 276: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 35): Expect extra expando to survive despite GC.
     281[ 277: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     282[ 278: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 36): Expect basic expando to survive despite GC.
     283[ 279: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 36): Expect subobject expando to survive despite GC.
     284[ 280: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 36): Expect extra expando to survive despite GC.
     285[ 281: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     286[ 282: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 37): Expect basic expando to survive despite GC.
     287[ 283: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 37): Expect subobject expando to survive despite GC.
     288[ 284: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 37): Expect extra expando to survive despite GC.
     289[ 285: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     290[ 286: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 38): Expect basic expando to survive despite GC.
     291[ 287: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 38): Expect subobject expando to survive despite GC.
     292[ 288: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 38): Expect extra expando to survive despite GC.
     293[ 289: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     294[ 290: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 39): Expect basic expando to survive despite GC.
     295[ 291: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 39): Expect subobject expando to survive despite GC.
     296[ 292: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 39): Expect extra expando to survive despite GC.
     297[ 293: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     298[ 294: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 40): Expect basic expando to survive despite GC.
     299[ 295: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 40): Expect subobject expando to survive despite GC.
     300[ 296: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 40): Expect extra expando to survive despite GC.
     301[ 297: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     302[ 298: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 41): Expect basic expando to survive despite GC.
     303[ 299: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 41): Expect subobject expando to survive despite GC.
     304[ 300: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 41): Expect extra expando to survive despite GC.
     305[ 301: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     306[ 302: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 42): Expect basic expando to survive despite GC.
     307[ 303: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 42): Expect subobject expando to survive despite GC.
     308[ 304: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 42): Expect extra expando to survive despite GC.
     309[ 305: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     310[ 306: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 43): Expect basic expando to survive despite GC.
     311[ 307: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 43): Expect subobject expando to survive despite GC.
     312[ 308: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 43): Expect extra expando to survive despite GC.
     313[ 309: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     314[ 310: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 44): Expect basic expando to survive despite GC.
     315[ 311: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 44): Expect subobject expando to survive despite GC.
     316[ 312: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 44): Expect extra expando to survive despite GC.
     317[ 313: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     318[ 314: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 45): Expect basic expando to survive despite GC.
     319[ 315: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 45): Expect subobject expando to survive despite GC.
     320[ 316: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 45): Expect extra expando to survive despite GC.
     321[ 317: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     322[ 318: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 46): Expect basic expando to survive despite GC.
     323[ 319: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 46): Expect subobject expando to survive despite GC.
     324[ 320: FAIL ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 46): Expect extra expando to survive despite GC.
     325[ 321: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     326[ 322: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 47): Expect basic expando to survive despite GC.
     327[ 323: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 47): Expect subobject expando to survive despite GC.
     328[ 324: PASS ] getIndexedParameter(UNIFORM_BUFFER_BINDING, 47): Expect extra expando to survive despite GC.
     329[ 325: PASS ] [object WebGLBuffer] is an instance of WebGLBuffer
     330[ 326: FAIL ] CURRENT_QUERY returns instance that was bound.
     331[ 327: FAIL ] CURRENT_QUERY returns instance that was bound.
     332[ 328: FAIL ] successfullyParsed should be true (of type boolean). Was undefined (of type undefined).
     333[ FAIL ] 179 failures reported
    76334
  • trunk/LayoutTests/webgl/2.0.0/conformance2/misc/object-deletion-behaviour-2-expected.txt

    r261413 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/misc/object-deletion-behaviour-2.html
    4 [ 1: PASS ] bufferBaseUniform is non-null.
    5 [ 2: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : after evaluating: gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, bufferBaseUniform)
    6 [ 3: FAIL ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) should be [object WebGLBuffer]. Was null.
    7 [ 4: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteBuffer(bufferBaseUniform)
    8 [ 5: PASS ] gl.isBuffer(bufferBaseUniform) is false
    9 [ 6: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    10 [ 7: PASS ] getError was expected value: INVALID_OPERATION : after evaluating: gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, bufferBaseUniform)
    11 [ 8: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    12 [ 9: PASS ] bufferBaseTransformFeedback is non-null.
    13 [ 10: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, bufferBaseTransformFeedback)
    14 [ 11: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) is bufferBaseTransformFeedback
    15 [ 12: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteBuffer(bufferBaseTransformFeedback)
    16 [ 13: PASS ] gl.isBuffer(bufferBaseTransformFeedback) is false
    17 [ 14: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) is null
    18 [ 15: PASS ] getError was expected value: INVALID_OPERATION : after evaluating: gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, bufferBaseTransformFeedback)
    19 [ 16: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) is null
    20 [ 17: PASS ] bufferRangeUniform is non-null.
    21 [ 18: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.bindBufferRange(gl.UNIFORM_BUFFER, 0, bufferRangeUniform, 0, gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT)
    22 [ 19: FAIL ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) should be [object WebGLBuffer]. Was null.
    23 [ 20: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteBuffer(bufferRangeUniform)
    24 [ 21: PASS ] gl.isBuffer(bufferRangeUniform) is false
    25 [ 22: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    26 [ 23: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: gl.bindBufferRange(gl.UNIFORM_BUFFER, 0, bufferRangeUniform, 0, gl.UNIFORM_BUFFER_OFFSET_ALIGNMENT)
    27 [ 24: PASS ] gl.getParameter(gl.UNIFORM_BUFFER_BINDING) is null
    28 [ 25: PASS ] bufferRangeTransformFeedback is non-null.
    29 [ 26: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, 0, bufferRangeTransformFeedback, 0, 4)
    30 [ 27: FAIL ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) should be [object WebGLBuffer]. Was null.
    31 [ 28: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteBuffer(bufferRangeTransformFeedback)
    32 [ 29: PASS ] gl.isBuffer(bufferRangeTransformFeedback) is false
    33 [ 30: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) is null
    34 [ 31: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, 0, bufferRangeTransformFeedback, 0, 4)
    35 [ 32: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING) is null
    36 [ 33: PASS ] sampler is non-null.
    37 [ 34: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.bindSampler(0, sampler)
    38 [ 35: PASS ] gl.getParameter(gl.SAMPLER_BINDING) is sampler
    39 [ 36: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteSampler(sampler)
    40 [ 37: PASS ] gl.isSampler(sampler) is false
    41 [ 38: PASS ] gl.getParameter(gl.SAMPLER_BINDING) is null
    42 [ 39: PASS ] getError was expected value: INVALID_OPERATION : after evaluating: gl.bindSampler(0, sampler)
    43 [ 40: PASS ] gl.getParameter(gl.SAMPLER_BINDING) is null
    44 [ 41: PASS ] vertexArray is non-null.
    45 [ 42: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.bindVertexArray(vertexArray)
    46 [ 43: PASS ] gl.getParameter(gl.VERTEX_ARRAY_BINDING) is vertexArray
    47 [ 44: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteVertexArray(vertexArray)
    48 [ 45: PASS ] gl.isVertexArray(vertexArray) is false
    49 [ 46: PASS ] gl.getParameter(gl.VERTEX_ARRAY_BINDING) is null
    50 [ 47: PASS ] getError was expected value: INVALID_OPERATION : after evaluating: gl.bindVertexArray(vertexArray)
    51 [ 48: PASS ] gl.getParameter(gl.VERTEX_ARRAY_BINDING) is null
    52 [ 49: PASS ] transformFeedback is non-null.
    53 [ 50: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, transformFeedback)
    54 [ 51: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is transformFeedback
    55 [ 52: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.deleteTransformFeedback(transformFeedback)
    56 [ 53: PASS ] gl.isTransformFeedback(transformFeedback) is false
    57 [ 54: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is null
    58 [ 55: PASS ] getError was expected value: INVALID_OPERATION : after evaluating: gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, transformFeedback)
    59 [ 56: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is null
    60 [ 57: PASS ] successfullyParsed is true
    61 [ FAIL ] 6 failures reported
     4[ PASS ] All tests passed
    625
  • trunk/LayoutTests/webgl/2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug-expected.txt

    r254148 r263281  
    44[ 1: PASS ] context exists
    55[ 2: FAIL ] Expected in pixel 0: [255,0,0,255], got: 0,0,0,0
    6 [ 3: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : Tests should complete without gl errors
     6[ 3: PASS ] getError was expected value: NO_ERROR : Tests should complete without gl errors
    77[ 4: PASS ] successfullyParsed is true
    8 [ FAIL ] 2 failures reported
     8[ FAIL ] 1 failures reported
    99
  • trunk/LayoutTests/webgl/2.0.0/conformance2/renderbuffers/readbuffer-expected.txt

    r259139 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/renderbuffers/readbuffer.html
    4 [ 1: PASS ] context exists
    5 [ 2: PASS ] getError was expected value: NO_ERROR : should be no errors when reading from GL_BACK on the default framebuffer.
    6 [ 3: PASS ] the color should be [0,0,0,255]
    7 [ 4: FAIL ] gl.getParameter(gl.READ_BUFFER) should be 1029 (of type number). Was null (of type object).
    8 [ 5: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : calling readBuffer with GL_NONE on the default framebuffer should succeed.
    9 [ 6: PASS ] getError was expected value: INVALID_OPERATION : should generate INVALID_OPERATION when reading from framebuffer and read buffer is GL_NONE.
    10 [ 7: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : calling readBuffer with GL_BACK on the default framebuffer should succeed.
    11 [ 8: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : calling readBuffer with GL_COLOR_ATTACHMENT0 on the default framebuffer should generate INVALID_OPERATION.
    12 [ 9: PASS ] getError was expected value: NO_ERROR : should be no errors when reading from GL_COLOR_ATTACHMENT0 on fbo.
    13 [ 10: PASS ] the color should be [255,0,0,255]
    14 [ 11: FAIL ] gl.getParameter(gl.READ_BUFFER) should be 36064 (of type number). Was null (of type object).
    15 [ 12: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : calling readBuffer with GL_BACK on fbo should generate INVALID_OPERATION.
    16 [ 13: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : calling readBuffer with GL_NONE on fbo should succeed.
    17 [ 14: PASS ] getError was expected value: INVALID_OPERATION : should generate INVALID_OPERATION when reading from framebuffer and read buffer is GL_NONE.
    18 [ 15: PASS ] getError was expected value: NO_ERROR : calling readBuffer with GL_COLOR_ATTACHMENT0 on fbo should succeed.
    19 [ 16: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : calling readBuffer with GL_COLOR_ATTACHMENTi that exceeds MAX_COLOR_ATTACHMENT on fbo should generate INVALID_ENUM.
    20 [ 17: PASS ] getError was expected value: NO_ERROR : calling readBuffer with GL_COLOR_ATTACHMENT1 on the fbo should succeed.
    21 [ 18: FAIL ] gl.getParameter(gl.READ_BUFFER) should be 36065 (of type number). Was null (of type object).
    22 [ 19: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : should be no error after setup and clear render buffer
    23 [ 20: PASS ] getError was expected value: NO_ERROR : should be no errors when reading from GL_COLOR_ATTACHMENT1 on fbo.
    24 [ 21: PASS ] the color should be [0,255,0,255]
    25 [ 22: FAIL ] gl.getParameter(gl.READ_BUFFER) should be 36065 (of type number). Was null (of type object).
    26 [ 23: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : should generate INVALID_OPERATION when reading from GL_COLOR_ATTACHMENT1 but this attachment has no image currently.
    27 [ 24: FAIL ] gl.getParameter(gl.READ_BUFFER) should be 36064 (of type number). Was null (of type object).
    28 [ 25: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : should be no errors when reading from GL_COLOR_ATTACHMENT0 on another fbo.
    29 [ 26: PASS ] the color should be [0,0,255,255]
    30 [ 27: FAIL ] gl.getParameter(gl.READ_BUFFER) should be 1029 (of type number). Was null (of type object).
    31 [ 28: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : should be no errors when reading from GL_BACK on the default framebuffer.
    32 [ 29: PASS ] the color should be [0,0,0,255]
    33 [ 30: PASS ] successfullyParsed is true
    34 [ FAIL ] 16 failures reported
     4[ PASS ] All tests passed
    355
  • trunk/LayoutTests/webgl/2.0.0/conformance2/rendering/attrib-type-match-expected.txt

    r256836 r263281  
    3939[ 36: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElements succeeds
    4040[ 37: FAIL ] should be 255,0,0,255 at (0, 0) expected: 255,0,0,255 was 0,0,0,0
    41 [ 38: PASS ] getError was expected value: NO_ERROR : drawRangeElements succeeds
     41[ 38: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawRangeElements succeeds
    4242[ 39: FAIL ] should be 255,0,0,255 at (0, 0) expected: 255,0,0,255 was 0,0,0,0
    4343[ 40: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced succeeds
    4444[ 41: FAIL ] should be 255,0,0,255 at (0, 0) expected: 255,0,0,255 was 0,0,0,0
    4545[ 42: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    46 [ 43: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     46[ 43: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    4747[ 44: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    4848[ 45: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    49 [ 46: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     49[ 46: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5050[ 47: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5151[ 48: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    52 [ 49: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     52[ 49: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5353[ 50: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5454[ 51: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    55 [ 52: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     55[ 52: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5656[ 53: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5757[ 54: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    58 [ 55: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     58[ 55: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    5959[ 56: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    6060[ 57: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    61 [ 58: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     61[ 58: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    6262[ 59: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    6363[ 60: PASS ] getError was expected value: NO_ERROR : Setting up succeeds
    6464[ 61: PASS ] getError was expected value: NO_ERROR : drawArrays succeeds
    6565[ 62: PASS ] should be 0,255,0,255
    66 [ 63: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawArraysInstanced succeeds
     66[ 63: PASS ] getError was expected value: NO_ERROR : drawArraysInstanced succeeds
    6767[ 64: PASS ] should be 0,255,0,255
    6868[ 65: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
     
    8383[ 80: PASS ] getError was expected value: NO_ERROR : drawRangeElements succeeds
    8484[ 81: PASS ] should be 0,255,0,255
    85 [ 82: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced succeeds
     85[ 82: PASS ] getError was expected value: NO_ERROR : drawElementsInstanced succeeds
    8686[ 83: PASS ] should be 0,255,0,255
    8787[ 84: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    88 [ 85: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     88[ 85: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    8989[ 86: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9090[ 87: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    91 [ 88: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     91[ 88: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9292[ 89: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9393[ 90: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    94 [ 91: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     94[ 91: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9595[ 92: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9696[ 93: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    97 [ 94: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     97[ 94: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9898[ 95: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    9999[ 96: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    100 [ 97: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     100[ 97: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    101101[ 98: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    102102[ 99: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    103 [ 100: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : type mismatch
     103[ 100: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    104104[ 101: PASS ] getError was expected value: INVALID_OPERATION : type mismatch
    105105[ 102: PASS ] successfullyParsed is true
    106 [ FAIL ] 27 failures reported
     106[ FAIL ] 14 failures reported
    107107
  • trunk/LayoutTests/webgl/2.0.0/conformance2/rendering/instanced-arrays-expected.txt

    r259139 r263281  
    2828[ 25: FAIL ] should be 255,255,0,255 at (25, 0) expected: 255,255,0,255 was 0,0,0,0
    2929[ 26: FAIL ] getError expected: INVALID_VALUE. Was INVALID_OPERATION : drawArraysInstanced cannot have a primcount less than 0
    30 [ 27: FAIL ] getError expected: INVALID_VALUE. Was INVALID_OPERATION : drawArraysInstanced cannot have a count less than 0
     30[ 27: PASS ] getError was expected value: INVALID_VALUE : drawArraysInstanced cannot have a count less than 0
    3131[ 28: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : It's allowed for all vertex attributes to have non-zero divisors when calling drawArraysInstanced
    3232[ 29: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawArraysInstanced with POINTS should succeed
     
    3434[ 31: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawArraysInstanced with LINE_LIST should return succeed
    3535[ 32: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawArraysInstanced with TRI_LIST should succeed
    36 [ 33: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : drawArraysInstanced with QUAD_STRIP should return INVALID_ENUM
    37 [ 34: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : drawArraysInstanced with QUADS should return INVALID_ENUM
    38 [ 35: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : drawArraysInstanced with POLYGON should return INVALID_ENUM
     36[ 33: PASS ] getError was expected value: INVALID_ENUM : drawArraysInstanced with QUAD_STRIP should return INVALID_ENUM
     37[ 34: PASS ] getError was expected value: INVALID_ENUM : drawArraysInstanced with QUADS should return INVALID_ENUM
     38[ 35: PASS ] getError was expected value: INVALID_ENUM : drawArraysInstanced with POLYGON should return INVALID_ENUM
    3939[ 36: FAIL ] should be 255,0,0,255 at (0, 25) expected: 255,0,0,255 was 0,0,0,0
    4040[ 37: FAIL ] should be 0,255,0,255 at (25, 25) expected: 0,255,0,255 was 0,0,0,0
    4141[ 38: FAIL ] should be 0,0,255,255 at (0, 0) expected: 0,0,255,255 was 0,0,0,0
    4242[ 39: FAIL ] should be 255,255,0,255 at (25, 0) expected: 255,255,0,255 was 0,0,0,0
    43 [ 40: FAIL ] getError expected: INVALID_VALUE. Was INVALID_OPERATION : drawElementsInstanced cannot have a primcount less than 0
    44 [ 41: FAIL ] getError expected: INVALID_VALUE. Was INVALID_OPERATION : drawElementsInstanced cannot have a count less than 0
     43[ 40: PASS ] getError was expected value: INVALID_VALUE : drawElementsInstanced cannot have a primcount less than 0
     44[ 41: PASS ] getError was expected value: INVALID_VALUE : drawElementsInstanced cannot have a count less than 0
    4545[ 42: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : It's allowed for all vertex attributes to have non-zero divisors when calling drawElementsInstanced
    4646[ 43: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced with UNSIGNED_BYTE should succeed
    47 [ 44: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced with POINTS should succeed
    48 [ 45: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced with LINES should succeed
    49 [ 46: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced with LINE_LIST should return succeed
    50 [ 47: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : drawElementsInstanced with TRI_LIST should succeed
    51 [ 48: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : drawElementsInstanced with QUAD_STRIP should return INVALID_ENUM
    52 [ 49: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : drawElementsInstanced with QUADS should return INVALID_ENUM
    53 [ 50: FAIL ] getError expected: INVALID_ENUM. Was INVALID_OPERATION : drawElementsInstanced with POLYGON should return INVALID_ENUM
     47[ 44: PASS ] getError was expected value: NO_ERROR : drawElementsInstanced with POINTS should succeed
     48[ 45: PASS ] getError was expected value: NO_ERROR : drawElementsInstanced with LINES should succeed
     49[ 46: PASS ] getError was expected value: NO_ERROR : drawElementsInstanced with LINE_LIST should return succeed
     50[ 47: PASS ] getError was expected value: NO_ERROR : drawElementsInstanced with TRI_LIST should succeed
     51[ 48: PASS ] getError was expected value: INVALID_ENUM : drawElementsInstanced with QUAD_STRIP should return INVALID_ENUM
     52[ 49: PASS ] getError was expected value: INVALID_ENUM : drawElementsInstanced with QUADS should return INVALID_ENUM
     53[ 50: PASS ] getError was expected value: INVALID_ENUM : drawElementsInstanced with POLYGON should return INVALID_ENUM
    5454[ 51: PASS ] getError was expected value: NO_ERROR : there should be no errors
    5555[ 52: PASS ] successfullyParsed is true
    56 [ FAIL ] 30 failures reported
     56[ FAIL ] 17 failures reported
    5757
  • trunk/LayoutTests/webgl/2.0.0/conformance2/rendering/uniform-block-buffer-size-expected.txt

    r259900 r263281  
    1 CONSOLE MESSAGE: TypeError: Value is not a sequence
    21This test runs the WebGL Test listed below in an iframe and reports PASS or FAIL.
    32
    43Test: ../../resources/webgl_test_files/conformance2/rendering/uniform-block-buffer-size.html
    5 [ 1: PASS ] WebGL context exists
    6 [ 2: FAIL ] successfullyParsed should be true (of type boolean). Was undefined (of type undefined).
    7 [ FAIL ] 1 failures reported
     4[ PASS ] All tests passed
    85
  • trunk/LayoutTests/webgl/2.0.0/conformance2/state/gl-enum-tests-expected.txt

    r236236 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/state/gl-enum-tests.html
    4 [ 1: PASS ] context exists
    5 [ 2: PASS ] getError was expected value: NO_ERROR :
    6 [ 3: PASS ] getError was expected value: INVALID_ENUM : gl.disable(desktopGL['CLIP_PLANE0']) should return INVALID_ENUM.
    7 [ 4: PASS ] getError was expected value: INVALID_ENUM : gl.disable(desktopGL['POINT_SPRITE']) should return INVALID_ENUM.
    8 [ 5: PASS ] getError was expected value: INVALID_ENUM : gl.getBufferParameter(gl.ARRAY_BUFFER, desktopGL['PIXEL_PACK_BUFFER']) should return INVALID_ENUM.
    9 [ 6: PASS ] getError was expected value: INVALID_ENUM : gl.hint(desktopGL['PERSPECTIVE_CORRECTION_HINT'], gl.FASTEST) should return INVALID_ENUM.
    10 [ 7: PASS ] getError was expected value: INVALID_ENUM : gl.isEnabled(desktopGL['CLIP_PLANE0']) should return INVALID_ENUM.
    11 [ 8: PASS ] getError was expected value: INVALID_ENUM : gl.isEnabled(desktopGL['POINT_SPRITE']) should return INVALID_ENUM.
    12 [ 9: PASS ] getError was expected value: INVALID_ENUM : gl.pixelStorei(desktopGL['PACK_SWAP_BYTES'], 1) should return INVALID_ENUM.
    13 [ 10: PASS ] getError was expected value: INVALID_ENUM : gl.getParameter(desktopGL['NUM_COMPRESSED_TEXTURE_FORMATS']) should return INVALID_ENUM.
    14 [ 11: PASS ] getError was expected value: INVALID_ENUM : gl.getParameter(desktopGL['EXTENSIONS']) should return INVALID_ENUM.
    15 [ 12: PASS ] getError was expected value: INVALID_ENUM : gl.getParameter(desktopGL['SHADER_COMPILER']) should return INVALID_ENUM.
    16 [ 13: PASS ] getError was expected value: INVALID_ENUM : gl.getParameter(desktopGL['SHADER_BINARY_FORMATS']) should return INVALID_ENUM.
    17 [ 14: PASS ] getError was expected value: INVALID_ENUM : gl.getParameter(desktopGL['NUM_SHADER_BINARY_FORMATS']) should return INVALID_ENUM.
    18 [ 15: PASS ] getError was expected value: INVALID_ENUM : gl.bindTexture(desktopGL['TEXTURE_RECTANGLE_EXT'], tex) should return INVALID_ENUM.
    19 [ 16: PASS ] getError was expected value: INVALID_ENUM : gl.enable(desktopGL['PRIMITIVE_RESTART_FIXED_INDEX']) should return INVALID_ENUM.
    20 [ 17: PASS ] getError was expected value: INVALID_ENUM : gl.getActiveUniforms(program, [0], desktopGL['UNIFORM_NAME_LENGTH']) should return INVALID_ENUM.
    21 [ 18: PASS ] getError was expected value: INVALID_ENUM : gl.getProgramParameter(program, desktopGL['ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH']) should return INVALID_ENUM.
    22 [ 19: PASS ] getError was expected value: INVALID_ENUM : gl.getProgramParameter(program, desktopGL['TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH']) should return INVALID_ENUM.
    23 [ 20: PASS ] getError was expected value: INVALID_ENUM : gl.getProgramParameter(program, desktopGL['PROGRAM_BINARY_RETRIEVABLE_HINT']) should return INVALID_ENUM.
    24 [ 21: PASS ] getError was expected value: INVALID_ENUM : gl.getProgramParameter(program, desktopGL['PROGRAM_BINARY_LENGTH']) should return INVALID_ENUM.
    25 [ 22: PASS ] getError was expected value: INVALID_ENUM : gl.getParameter(program, desktopGL['NUM_PROGRAM_BINARY_FORMATS']) should return INVALID_ENUM.
    26 [ 23: PASS ] getError was expected value: NO_ERROR :
    27 [ 24: PASS ] getError was expected value: INVALID_ENUM : gl.getTexParameter(gl.TEXTURE_2D, desktopGL['GENERATE_MIPMAP']) should return INVALID_ENUM.
    28 [ 25: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(gl.TEXTURE_2D, desktopGL['GENERATE_MIPMAP'], 1) should return INVALID_ENUM.
    29 [ 26: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, desktopGL['CLAMP_TO_BORDER']) should return INVALID_ENUM.
    30 [ 27: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(desktopGL['TEXTURE_2D'], desktopGL['TEXTURE_SWIZZLE_R_EXT'], gl.RED) should return INVALID_ENUM.
    31 [ 28: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(desktopGL['TEXTURE_2D'], desktopGL['TEXTURE_SWIZZLE_G_EXT'], gl.RED) should return INVALID_ENUM.
    32 [ 29: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(desktopGL['TEXTURE_2D'], desktopGL['TEXTURE_SWIZZLE_B_EXT'], gl.RED) should return INVALID_ENUM.
    33 [ 30: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(desktopGL['TEXTURE_2D'], desktopGL['TEXTURE_SWIZZLE_A_EXT'], gl.RED) should return INVALID_ENUM.
    34 [ 31: PASS ] getError was expected value: INVALID_ENUM : gl.texParameteri(desktopGL['TEXTURE_2D'], gl.TEXTURE_WRAP_R, desktopGL['CLAMP_TO_BORDER']) should return INVALID_ENUM.
    35 [ 32: PASS ] gl.getProgramParameter(uniformBlockProgram, gl.LINK_STATUS) is true
    36 [ 33: PASS ] gl.getError() is gl.NO_ERROR
    37 [ 34: FAIL ] gl.getError() should be 1280. Was 0.
    38 [ 35: PASS ] successfullyParsed is true
    39 [ FAIL ] 1 failures reported
     4[ PASS ] All tests passed
    405
  • trunk/LayoutTests/webgl/2.0.0/conformance2/state/gl-get-calls-expected.txt

    r261413 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/state/gl-get-calls.html
    4 [ 1: PASS ] context exists
    5 [ 2: PASS ] context contains getError
    6 [ 3: PASS ] context.getParameter(context.COPY_READ_BUFFER_BINDING) is null
    7 [ 4: PASS ] context.getParameter(context.COPY_WRITE_BUFFER_BINDING) is null
    8 [ 5: PASS ] context.getParameter(context.DRAW_BUFFER0) is context.BACK
    9 [ 6: PASS ] context.getParameter(context.DRAW_FRAMEBUFFER_BINDING) is null
    10 [ 7: PASS ] context.getParameter(context.FRAGMENT_SHADER_DERIVATIVE_HINT) is context.DONT_CARE
    11 [ 8: PASS ] context.getParameter(context.PACK_ROW_LENGTH) is 0
    12 [ 9: PASS ] context.getParameter(context.PACK_SKIP_PIXELS) is 0
    13 [ 10: PASS ] context.getParameter(context.PACK_SKIP_ROWS) is 0
    14 [ 11: PASS ] context.getParameter(context.PIXEL_PACK_BUFFER_BINDING) is null
    15 [ 12: PASS ] context.getParameter(context.PIXEL_UNPACK_BUFFER_BINDING) is null
    16 [ 13: PASS ] context.getParameter(context.RASTERIZER_DISCARD) is false
    17 [ 14: FAIL ] context.getParameter(context.READ_BUFFER) should be 1029 (of type number). Was null (of type object).
    18 [ 15: PASS ] context.getParameter(context.READ_FRAMEBUFFER_BINDING) is null
    19 [ 16: PASS ] context.getParameter(context.SAMPLE_ALPHA_TO_COVERAGE) is false
    20 [ 17: PASS ] context.getParameter(context.SAMPLE_COVERAGE) is false
    21 [ 18: PASS ] context.getParameter(context.SAMPLER_BINDING) is null
    22 [ 19: PASS ] context.getParameter(context.TEXTURE_BINDING_2D_ARRAY) is null
    23 [ 20: PASS ] context.getParameter(context.TEXTURE_BINDING_3D) is null
    24 [ 21: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_ACTIVE) is false
    25 [ 22: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_BINDING) is null
    26 [ 23: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_BUFFER_BINDING) is null
    27 [ 24: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_PAUSED) is false
    28 [ 25: PASS ] context.getParameter(context.UNIFORM_BUFFER_BINDING) is null
    29 [ 26: PASS ] context.getParameter(context.UNPACK_IMAGE_HEIGHT) is 0
    30 [ 27: PASS ] context.getParameter(context.UNPACK_ROW_LENGTH) is 0
    31 [ 28: PASS ] context.getParameter(context.UNPACK_SKIP_IMAGES) is 0
    32 [ 29: PASS ] context.getParameter(context.UNPACK_SKIP_PIXELS) is 0
    33 [ 30: PASS ] context.getParameter(context.UNPACK_SKIP_ROWS) is 0
    34 [ 31: PASS ] context.getParameter(context.VERTEX_ARRAY_BINDING) is null
    35 [ 32: PASS ] context.getParameter(context.MAX_3D_TEXTURE_SIZE) is >= 256
    36 [ 33: PASS ] context.getParameter(context.MAX_3D_TEXTURE_SIZE) is an instance of Number
    37 [ 34: PASS ] context.getParameter(context.MAX_ARRAY_TEXTURE_LAYERS) is >= 256
    38 [ 35: PASS ] context.getParameter(context.MAX_ARRAY_TEXTURE_LAYERS) is an instance of Number
    39 [ 36: PASS ] context.getParameter(context.MAX_CLIENT_WAIT_TIMEOUT_WEBGL) is >= 0
    40 [ 37: PASS ] context.getParameter(context.MAX_CLIENT_WAIT_TIMEOUT_WEBGL) is an instance of Number
    41 [ 38: PASS ] context.getParameter(context.MAX_COLOR_ATTACHMENTS) is >= 4
    42 [ 39: PASS ] context.getParameter(context.MAX_COLOR_ATTACHMENTS) is an instance of Number
    43 [ 40: PASS ] context.getParameter(context.MAX_COMBINED_UNIFORM_BLOCKS) is >= 24
    44 [ 41: PASS ] context.getParameter(context.MAX_COMBINED_UNIFORM_BLOCKS) is an instance of Number
    45 [ 42: PASS ] context.getParameter(context.MAX_DRAW_BUFFERS) is >= 4
    46 [ 43: PASS ] context.getParameter(context.MAX_DRAW_BUFFERS) is an instance of Number
    47 [ 44: FAIL ] context.getParameter(context.MAX_ELEMENT_INDEX) should be >= 16777215. Was 0 (of type number).
    48 [ 45: PASS ] context.getParameter(context.MAX_ELEMENT_INDEX) is an instance of Number
    49 [ 46: PASS ] context.getParameter(context.MAX_ELEMENTS_INDICES) is an instance of Number
    50 [ 47: PASS ] context.getParameter(context.MAX_ELEMENTS_VERTICES) is an instance of Number
    51 [ 48: PASS ] context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS) is >= 60
    52 [ 49: PASS ] context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS) is an instance of Number
    53 [ 50: PASS ] context.getParameter(context.MAX_FRAGMENT_UNIFORM_BLOCKS) is >= 12
    54 [ 51: PASS ] context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS) is an instance of Number
    55 [ 52: PASS ] context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS) is >= 896
    56 [ 53: PASS ] context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS) is an instance of Number
    57 [ 54: PASS ] context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET) is >= 7
    58 [ 55: PASS ] context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET) is an instance of Number
    59 [ 56: PASS ] context.getParameter(context.MAX_SAMPLES) is >= 4
    60 [ 57: PASS ] context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET) is an instance of Number
    61 [ 58: PASS ] context.getParameter(context.MAX_SERVER_WAIT_TIMEOUT) is >= 0
    62 [ 59: PASS ] context.getParameter(context.MAX_SERVER_WAIT_TIMEOUT) is an instance of Number
    63 [ 60: PASS ] context.getParameter(context.MAX_TEXTURE_LOD_BIAS) is >= 2.0
    64 [ 61: PASS ] context.getParameter(context.MAX_TEXTURE_LOD_BIAS) is an instance of Number
    65 [ 62: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS) is >= 64
    66 [ 63: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS) is an instance of Number
    67 [ 64: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) is >= 4
    68 [ 65: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) is an instance of Number
    69 [ 66: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) is >= 4
    70 [ 67: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) is an instance of Number
    71 [ 68: FAIL ] context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE) should be >= 16384. Was 0 (of type number).
    72 [ 69: PASS ] context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE) is an instance of Number
    73 [ 70: PASS ] context.getParameter(context.MAX_UNIFORM_BUFFER_BINDINGS) is >= 24
    74 [ 71: PASS ] context.getParameter(context.MAX_UNIFORM_BUFFER_BINDINGS) is an instance of Number
    75 [ 72: PASS ] context.getParameter(context.MAX_VARYING_COMPONENTS) is >= 60
    76 [ 73: PASS ] context.getParameter(context.MAX_VARYING_COMPONENTS) is an instance of Number
    77 [ 74: PASS ] context.getParameter(context.MAX_VERTEX_OUTPUT_COMPONENTS) is >= 64
    78 [ 75: PASS ] context.getParameter(context.MAX_VERTEX_OUTPUT_COMPONENTS) is an instance of Number
    79 [ 76: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS) is >= 12
    80 [ 77: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS) is an instance of Number
    81 [ 78: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS) is >= 1024
    82 [ 79: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS) is an instance of Number
    83 [ 80: PASS ] context.getParameter(context.MIN_PROGRAM_TEXEL_OFFSET) is <= -8
    84 [ 81: PASS ] context.getParameter(context.MIN_PROGRAM_TEXEL_OFFSET) is an instance of Number
    85 [ 82: PASS ] context.getParameter(context.UNIFORM_BUFFER_OFFSET_ALIGNMENT) is >= 1
    86 [ 83: PASS ] context.getParameter(context.UNIFORM_BUFFER_OFFSET_ALIGNMENT) is an instance of Number
    87 [ 84: FAIL ] context.getParameter(context.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS) should be >= 4096. Was 0 (of type number).
    88 [ 85: PASS ] context.getParameter(context.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS) is an instance of Number
    89 [ 86: FAIL ] context.getParameter(context.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS) should be >= 4096. Was 0 (of type number).
    90 [ 87: PASS ] context.getParameter(context.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS) is an instance of Number
    91 [ 88: FAIL ] context.getError() should be 0. Was 1280.
    92 [ 89: PASS ] successfullyParsed is true
    93 [ FAIL ] 6 failures reported
     4[ PASS ] All tests passed
    945
  • trunk/LayoutTests/webgl/2.0.0/conformance2/state/gl-object-get-calls-expected.txt

    r261413 r263281  
    292292[ 288: PASS ] getInternalformatParameter correctly handled invalid pname enums
    293293[ 289: FAIL ] getInternalformatParameter returned 4,2 instead of null for invalid internalformat enum: 0x81a7
    294 [ 290: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be [object WebGLBuffer]. Was null.
    295 [ 291: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) should be 8 (of type number). Was null (of type object).
    296 [ 292: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) should be 4 (of type number). Was null (of type object).
    297 [ 293: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) should be [object WebGLBuffer]. Was null.
    298 [ 294: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) should be 8 (of type number). Was null (of type object).
    299 [ 295: FAIL ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) should be 256 (of type number). Was null (of type object).
     294[ 290: PASS ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) is buffer
     295[ 291: PASS ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_SIZE, 0) is 8
     296[ 292: PASS ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_START, 0) is 4
     297[ 293: PASS ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) is buffer1
     298[ 294: PASS ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_SIZE, 1) is 8
     299[ 295: PASS ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_START, 1) is offsetUniform
    300300[ 296: PASS ] gl.getIndexedParameter(gl.UNIFORM_BUFFER_BINDING, 1) is null
    301301[ 297: PASS ] getIndexedParameter correctly handled invalid target enums
     
    312312[ 308: FAIL ] gl.getSyncParameter(sync, gl.OBJECT_TYPE) should be 37142. Threw exception TypeError: Argument 1 ('sync') to WebGL2RenderingContext.getSyncParameter must be an instance of WebGLSync
    313313[ 309: FAIL ] successfullyParsed should be true (of type boolean). Was undefined (of type undefined).
    314 [ FAIL ] 64 failures reported
     314[ FAIL ] 58 failures reported
    315315
  • trunk/LayoutTests/webgl/2.0.0/conformance2/transform_feedback/transform_feedback-expected.txt

    r236095 r263281  
    22
    33Test: ../../resources/webgl_test_files/conformance2/transform_feedback/transform_feedback.html
    4 [ PASS ] All tests passed
     4[ 1: PASS ] WebGL context exists
     5[ 2: PASS ] gl.TRANSFORM_FEEDBACK_BINDING is 0x8E25
     6[ 3: PASS ] getError was expected value: NO_ERROR : TRANSFORM_FEEDBACK_BINDING query should succeed
     7[ 4: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is null
     8[ 5: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is null
     9[ 6: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is tf
     10[ 7: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is tf1
     11[ 8: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is null
     12[ 9: PASS ] getError was expected value: INVALID_OPERATION : binding a deleted Transform Feedback object
     13[ 10: PASS ] gl.getParameter(gl.TRANSFORM_FEEDBACK_BINDING) is null
     14[ 11: PASS ] getError was expected value: NO_ERROR : there should be no errors
     15[ 12: FAIL ] gl.getIndexedParameter(gl.TRANSFORM_FEEDBACK_BUFFER_BINDING, 0) should be null. Was [object WebGLBuffer].
     16[ 13: PASS ] getError was expected value: NO_ERROR : binding buffer to ARRAY_BUFFER
     17[ 14: PASS ] getError was expected value: NO_ERROR : createTransformFeedback should not set an error
     18[ 15: PASS ] tf is non-null.
     19[ 16: PASS ] gl.isTransformFeedback(tf) is false
     20[ 17: PASS ] gl.isTransformFeedback(tf) is true
     21[ 18: PASS ] gl.isTransformFeedback(tf) is true
     22[ 19: PASS ] gl.isTransformFeedback(tf) is false
     23[ 20: PASS ] gl.isTransformFeedback(null) is false
     24[ 21: PASS ] getError was expected value: NO_ERROR : linking transform feedback shader should not set an error
     25[ 22: PASS ] program is non-null.
     26[ 23: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.getBufferSubData(gl.TRANSFORM_FEEDBACK_BUFFER, 0, retArray, 0, retArray.length)
     27[ 24: PASS ] getError was expected value: NO_ERROR : after evaluating: gl.getBufferSubData(gl.TRANSFORM_FEEDBACK_BUFFER, 0, retArray, 0, retArray.length)
     28[ 25: PASS ] getError was expected value: INVALID_OPERATION : after evaluating: gl.getBufferSubData(gl.TRANSFORM_FEEDBACK_BUFFER, 0, retArray, 0, retArray.length)
     29[ 26: PASS ] buffer should match expected values
     30[ 27: PASS ] getError was expected value: NO_ERROR : linking transform feedback shader should not set an error
     31[ 28: PASS ] program is non-null.
     32[ 29: PASS ] buffer should match expected values
     33[ 30: PASS ] getError was expected value: NO_ERROR : linking transform feedback shader should not set an error
     34[ 31: PASS ] program is non-null.
     35[ 32: PASS ] buffer should match expected values
     36[ 33: PASS ] buffer should match expected values
     37[ 34: PASS ] TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN query's result didn't become available too early
     38[ 35: PASS ] TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN query returned a correct result (3)
     39[ 36: PASS ] getError was expected value: NO_ERROR : linking transform feedback shader should not set an error
     40[ 37: PASS ] program is non-null.
     41[ 38: PASS ] gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS) is 2
     42[ 39: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     43[ 40: PASS ] activeInfo is non-null.
     44[ 41: PASS ] activeInfo.name is 'out_add'
     45[ 42: PASS ] activeInfo.type is gl.FLOAT_VEC4
     46[ 43: PASS ] activeInfo.size is 1
     47[ 44: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     48[ 45: PASS ] activeInfo is non-null.
     49[ 46: PASS ] activeInfo.name is 'out_mul'
     50[ 47: PASS ] activeInfo.type is gl.FLOAT_VEC4
     51[ 48: PASS ] activeInfo.size is 1
     52[ 49: PASS ] getError was expected value: INVALID_VALUE : Should be INVALID_VALUE when calling getTransformFeedbackVarying with an invalid index.
     53[ 50: PASS ] activeInfo is null
     54[ 51: PASS ] gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS) is 2
     55[ 52: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     56[ 53: PASS ] activeInfo is non-null.
     57[ 54: PASS ] activeInfo.name is 'out_add'
     58[ 55: PASS ] activeInfo.type is gl.FLOAT_VEC4
     59[ 56: PASS ] activeInfo.size is 1
     60[ 57: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     61[ 58: PASS ] activeInfo is non-null.
     62[ 59: PASS ] activeInfo.name is 'out_mul'
     63[ 60: PASS ] activeInfo.type is gl.FLOAT_VEC4
     64[ 61: PASS ] activeInfo.size is 1
     65[ 62: PASS ] getError was expected value: INVALID_VALUE : Should be INVALID_VALUE when calling getTransformFeedbackVarying with an invalid index.
     66[ 63: PASS ] activeInfo is null
     67[ 64: PASS ] getError was expected value: NO_ERROR : linking transform feedback shader should not set an error
     68[ 65: PASS ] gl.getProgramParameter(program, gl.LINK_STATUS) is true
     69[ 66: PASS ] gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS) is 1
     70[ 67: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     71[ 68: PASS ] activeInfo is non-null.
     72[ 69: PASS ] activeInfo.name is 'out_mul'
     73[ 70: PASS ] activeInfo.type is gl.FLOAT_VEC4
     74[ 71: PASS ] activeInfo.size is 1
     75[ 72: PASS ] getError was expected value: INVALID_VALUE : Should be INVALID_VALUE when calling getTransformFeedbackVarying with an invalid index.
     76[ 73: PASS ] activeInfo is null
     77[ 74: PASS ] getError was expected value: INVALID_VALUE : Should be INVALID_VALUE when calling getTransformFeedbackVarying with an invalid index.
     78[ 75: PASS ] activeInfo is null
     79[ 76: PASS ] getError was expected value: NO_ERROR : linking transform feedback shader should not set an error
     80[ 77: PASS ] gl.getProgramParameter(program, gl.LINK_STATUS) is true
     81[ 78: PASS ] gl.getProgramParameter(program, gl.TRANSFORM_FEEDBACK_VARYINGS) is 2
     82[ 79: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     83[ 80: PASS ] activeInfo is non-null.
     84[ 81: PASS ] activeInfo.name is 'out_add'
     85[ 82: PASS ] activeInfo.type is gl.FLOAT_VEC4
     86[ 83: PASS ] activeInfo.size is 1
     87[ 84: PASS ] getError was expected value: NO_ERROR : Should be no errors from valid getTransformFeedbackVarying.
     88[ 85: PASS ] activeInfo is non-null.
     89[ 86: PASS ] activeInfo.name is 'out_mul'
     90[ 87: PASS ] activeInfo.type is gl.FLOAT_VEC4
     91[ 88: PASS ] activeInfo.size is 1
     92[ 89: PASS ] getError was expected value: INVALID_VALUE : Should be INVALID_VALUE when calling getTransformFeedbackVarying with an invalid index.
     93[ 90: PASS ] activeInfo is null
     94[ 91: PASS ] successfullyParsed is true
     95[ FAIL ] 1 failures reported
    596
  • trunk/LayoutTests/webgl/2.0.0/resources/webgl_test_files/conformance2/renderbuffers/readbuffer.html

    r232783 r263281  
    100100  var maxColorAttachments = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS);
    101101  gl.readBuffer(gl.COLOR_ATTACHMENT0 + maxColorAttachments);
    102   wtu.glErrorShouldBe(gl, gl.INVALID_ENUM,
    103       "calling readBuffer with GL_COLOR_ATTACHMENTi that exceeds MAX_COLOR_ATTACHMENT on fbo should generate INVALID_ENUM.");
     102  wtu.glErrorShouldBe(gl, gl.INVALID_OPERATION,
     103      "calling readBuffer with GL_COLOR_ATTACHMENTi that exceeds MAX_COLOR_ATTACHMENT on fbo should generate INVALID_OPERATION.");
    104104  gl.readBuffer(gl.COLOR_ATTACHMENT1);
    105105  wtu.glErrorShouldBe(gl, gl.NO_ERROR,
  • trunk/Source/WebCore/ChangeLog

    r263278 r263281  
     12020-06-19  James Darpinian  <jdarpinian@chromium.org>
     2
     3        [WebGL2] Uniform Buffer Objects
     4        https://bugs.webkit.org/show_bug.cgi?id=209518
     5
     6        Reviewed by Dean Jackson.
     7
     8        All uniform buffer object conformance tests pass.
     9
     10        Implemented Uniform Buffer Object related functions:
     11        bindBufferBase, bindBufferRange, getUniformIndices, getActiveUniforms, getUniformBlockIndex,
     12        getActiveUniformBlockParameter, getActiveUniformBlockName, uniformBlockBinding
     13
     14        Additionally, fixed many tangentially related issues:
     15        getIntegeri_v and getInteger64i_v were not present.
     16        drawArraysInstances and drawElementsInstanced did not work for WebGL 2.
     17        drawRangeElements was not implemented.
     18        WebGLAny did not support Vector<unsigned>, so Uint32Arrays could not be returned from WebGL functions.
     19        The maximum uniform location length was wrong for WebGL 2.
     20        Transform feedback indexed binding points weren't being tracked.
     21        Some functions in ExtensionsGLANGLE didn't call makeContextCurrent.
     22        New WebGL 2 buffer usage types COPY and READ weren't supported in bufferData.
     23        pause/resumeTransformFeedback were unimplemented.
     24        getParameter(READ_BUFFER) was unimplemented.
     25        readBuffer conformance test was incorrect.
     26
     27        * bindings/js/JSDOMConvertWebGL.cpp:
     28        (WebCore::convertToJSValue):
     29        * html/canvas/WebGL2RenderingContext.cpp:
     30        (WebCore::WebGL2RenderingContext::~WebGL2RenderingContext):
     31        (WebCore::WebGL2RenderingContext::initializeNewContext):
     32        (WebCore::WebGL2RenderingContext::drawRangeElements):
     33        (WebCore::WebGL2RenderingContext::setIndexedBufferBinding):
     34        (WebCore::WebGL2RenderingContext::bindBufferBase):
     35        (WebCore::WebGL2RenderingContext::bindBufferRange):
     36        (WebCore::WebGL2RenderingContext::getIndexedParameter):
     37        (WebCore::WebGL2RenderingContext::getUniformIndices):
     38        (WebCore::WebGL2RenderingContext::getActiveUniforms):
     39        (WebCore::WebGL2RenderingContext::getUniformBlockIndex):
     40        (WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter):
     41        (WebCore::WebGL2RenderingContext::getActiveUniformBlockName):
     42        (WebCore::WebGL2RenderingContext::uniformBlockBinding):
     43        * html/canvas/WebGL2RenderingContext.h:
     44        * html/canvas/WebGLAny.h:
     45        * html/canvas/WebGLRenderingContextBase.cpp:
     46        (WebCore::WebGLRenderingContextBase::validateLocationLength):
     47        (WebCore::WebGLRenderingContextBase::validateBufferDataParameters):
     48        * loader/SubresourceLoader.cpp:
     49        (WebCore::SubresourceLoader::didFinishLoading):
     50        * platform/graphics/GraphicsContextGL.h:
     51        * platform/graphics/angle/ExtensionsGLANGLE.cpp:
     52        (WebCore::ExtensionsGLANGLE::getTranslatedShaderSourceANGLE):
     53        (WebCore::ExtensionsGLANGLE::blitFramebuffer):
     54        (WebCore::ExtensionsGLANGLE::renderbufferStorageMultisample):
     55        (WebCore::ExtensionsGLANGLE::drawBuffersEXT):
     56        (WebCore::ExtensionsGLANGLE::getBooleanvRobustANGLE):
     57        (WebCore::ExtensionsGLANGLE::getBufferParameterivRobustANGLE):
     58        (WebCore::ExtensionsGLANGLE::getFloatvRobustANGLE):
     59        (WebCore::ExtensionsGLANGLE::getFramebufferAttachmentParameterivRobustANGLE):
     60        (WebCore::ExtensionsGLANGLE::getIntegervRobustANGLE):
     61        (WebCore::ExtensionsGLANGLE::getProgramivRobustANGLE):
     62        (WebCore::ExtensionsGLANGLE::getRenderbufferParameterivRobustANGLE):
     63        (WebCore::ExtensionsGLANGLE::getShaderivRobustANGLE):
     64        (WebCore::ExtensionsGLANGLE::getTexParameterfvRobustANGLE):
     65        (WebCore::ExtensionsGLANGLE::getTexParameterivRobustANGLE):
     66        (WebCore::ExtensionsGLANGLE::getUniformfvRobustANGLE):
     67        (WebCore::ExtensionsGLANGLE::getUniformivRobustANGLE):
     68        (WebCore::ExtensionsGLANGLE::getVertexAttribfvRobustANGLE):
     69        (WebCore::ExtensionsGLANGLE::getVertexAttribivRobustANGLE):
     70        (WebCore::ExtensionsGLANGLE::getVertexAttribPointervRobustANGLE):
     71        (WebCore::ExtensionsGLANGLE::readPixelsRobustANGLE):
     72        (WebCore::ExtensionsGLANGLE::texImage2DRobustANGLE):
     73        (WebCore::ExtensionsGLANGLE::texParameterfvRobustANGLE):
     74        (WebCore::ExtensionsGLANGLE::texParameterivRobustANGLE):
     75        (WebCore::ExtensionsGLANGLE::texSubImage2DRobustANGLE):
     76        (WebCore::ExtensionsGLANGLE::compressedTexImage2DRobustANGLE):
     77        (WebCore::ExtensionsGLANGLE::compressedTexSubImage2DRobustANGLE):
     78        (WebCore::ExtensionsGLANGLE::compressedTexImage3DRobustANGLE):
     79        (WebCore::ExtensionsGLANGLE::compressedTexSubImage3DRobustANGLE):
     80        (WebCore::ExtensionsGLANGLE::texImage3DRobustANGLE):
     81        (WebCore::ExtensionsGLANGLE::texSubImage3DRobustANGLE):
     82        (WebCore::ExtensionsGLANGLE::getQueryivRobustANGLE):
     83        (WebCore::ExtensionsGLANGLE::getQueryObjectuivRobustANGLE):
     84        (WebCore::ExtensionsGLANGLE::getBufferPointervRobustANGLE):
     85        (WebCore::ExtensionsGLANGLE::getIntegeri_vRobustANGLE):
     86        (WebCore::ExtensionsGLANGLE::getInternalformativRobustANGLE):
     87        (WebCore::ExtensionsGLANGLE::getVertexAttribIivRobustANGLE):
     88        (WebCore::ExtensionsGLANGLE::getVertexAttribIuivRobustANGLE):
     89        (WebCore::ExtensionsGLANGLE::getUniformuivRobustANGLE):
     90        (WebCore::ExtensionsGLANGLE::getActiveUniformBlockivRobustANGLE):
     91        (WebCore::ExtensionsGLANGLE::getInteger64vRobustANGLE):
     92        (WebCore::ExtensionsGLANGLE::getInteger64i_vRobustANGLE):
     93        (WebCore::ExtensionsGLANGLE::getBufferParameteri64vRobustANGLE):
     94        (WebCore::ExtensionsGLANGLE::samplerParameterivRobustANGLE):
     95        (WebCore::ExtensionsGLANGLE::samplerParameterfvRobustANGLE):
     96        (WebCore::ExtensionsGLANGLE::getSamplerParameterivRobustANGLE):
     97        (WebCore::ExtensionsGLANGLE::getSamplerParameterfvRobustANGLE):
     98        (WebCore::ExtensionsGLANGLE::getFramebufferParameterivRobustANGLE):
     99        (WebCore::ExtensionsGLANGLE::getProgramInterfaceivRobustANGLE):
     100        (WebCore::ExtensionsGLANGLE::getBooleani_vRobustANGLE):
     101        (WebCore::ExtensionsGLANGLE::getMultisamplefvRobustANGLE):
     102        (WebCore::ExtensionsGLANGLE::getTexLevelParameterivRobustANGLE):
     103        (WebCore::ExtensionsGLANGLE::getTexLevelParameterfvRobustANGLE):
     104        (WebCore::ExtensionsGLANGLE::getPointervRobustANGLERobustANGLE):
     105        (WebCore::ExtensionsGLANGLE::readnPixelsRobustANGLE):
     106        (WebCore::ExtensionsGLANGLE::getnUniformfvRobustANGLE):
     107        (WebCore::ExtensionsGLANGLE::getnUniformivRobustANGLE):
     108        (WebCore::ExtensionsGLANGLE::getnUniformuivRobustANGLE):
     109        (WebCore::ExtensionsGLANGLE::texParameterIivRobustANGLE):
     110        (WebCore::ExtensionsGLANGLE::texParameterIuivRobustANGLE):
     111        (WebCore::ExtensionsGLANGLE::getTexParameterIivRobustANGLE):
     112        (WebCore::ExtensionsGLANGLE::getTexParameterIuivRobustANGLE):
     113        (WebCore::ExtensionsGLANGLE::samplerParameterIivRobustANGLE):
     114        (WebCore::ExtensionsGLANGLE::samplerParameterIuivRobustANGLE):
     115        (WebCore::ExtensionsGLANGLE::getSamplerParameterIivRobustANGLE):
     116        (WebCore::ExtensionsGLANGLE::getSamplerParameterIuivRobustANGLE):
     117        (WebCore::ExtensionsGLANGLE::getQueryObjectivRobustANGLE):
     118        (WebCore::ExtensionsGLANGLE::getQueryObjecti64vRobustANGLE):
     119        (WebCore::ExtensionsGLANGLE::getQueryObjectui64vRobustANGLE):
     120        * platform/graphics/angle/GraphicsContextGLANGLE.cpp:
     121        (WebCore::GraphicsContextGLOpenGL::getIntegeri_v):
     122        (WebCore::GraphicsContextGLOpenGL::getInteger64v):
     123        (WebCore::GraphicsContextGLOpenGL::getInteger64i_v):
     124        (WebCore::GraphicsContextGLOpenGL::drawArraysInstanced):
     125        (WebCore::GraphicsContextGLOpenGL::drawElementsInstanced):
     126        (WebCore::GraphicsContextGLOpenGL::getUniformBlockIndex):
     127        (WebCore::GraphicsContextGLOpenGL::getActiveUniformBlockiv):
     128        (WebCore::GraphicsContextGLOpenGL::getActiveUniformBlockName):
     129        (WebCore::GraphicsContextGLOpenGL::uniformBlockBinding):
     130        (WebCore::GraphicsContextGLOpenGL::drawRangeElements):
     131        (WebCore::GraphicsContextGLOpenGL::pauseTransformFeedback):
     132        (WebCore::GraphicsContextGLOpenGL::resumeTransformFeedback):
     133        (WebCore::GraphicsContextGLOpenGL::bindBufferRange):
     134        (WebCore::GraphicsContextGLOpenGL::getUniformIndices):
     135        * platform/graphics/opengl/GraphicsContextGLOpenGL.h:
     136        * platform/graphics/opengl/GraphicsContextGLOpenGLBase.cpp:
     137        (WebCore::GraphicsContextGLOpenGL::getIntegeri_v):
     138        * platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:
     139        (WebCore::GraphicsContextGLOpenGL::getInteger64v):
     140        (WebCore::GraphicsContextGLOpenGL::getInteger64i_v):
     141
    11422020-06-19  Chris Dumez  <cdumez@apple.com>
    2143
  • trunk/Source/WebCore/bindings/js/JSDOMConvertWebGL.cpp

    r260908 r263281  
    104104        },
    105105        [&] (const Vector<int>& values) {
     106            MarkedArgumentBuffer list;
     107            for (auto& value : values)
     108                list.append(jsNumber(value));
     109            RELEASE_ASSERT(!list.hasOverflowed());
     110            return constructArray(&globalObject, static_cast<JSC::ArrayAllocationProfile*>(nullptr), list);
     111        },
     112        [&] (const Vector<unsigned>& values) {
    106113            MarkedArgumentBuffer list;
    107114            for (auto& value : values)
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp

    r261413 r263281  
    114114    m_boundTransformFeedback = nullptr;
    115115    m_boundTransformFeedbackBuffers.clear();
     116    m_boundTransformFeedbackBuffer = nullptr;
     117    m_boundUniformBuffer = nullptr;
     118    m_boundIndexedUniformBuffers.clear();
    116119    m_activeQueries.clear();
    117120}
     
    139142    // NEEDS_PORT: set up default transform feedback object
    140143
    141     // NEEDS_PORT: set up bound indexed uniform buffers, max bound uniform buffer index
     144    m_boundIndexedUniformBuffers.resize(getIntParameter(GraphicsContextGL::MAX_UNIFORM_BUFFER_BINDINGS));
     145    m_uniformBufferOffsetAlignment = getIntParameter(GraphicsContextGL::UNIFORM_BUFFER_OFFSET_ALIGNMENT);
    142146
    143147    // NEEDS_PORT: set up pack parameters: row length, skip pixels, skip rows
     
    276280
    277281    return true;
     282}
     283
     284WebGLBuffer* WebGL2RenderingContext::validateBufferDataParameters(const char* functionName, GCGLenum target, GCGLenum usage)
     285{
     286    WebGLBuffer* buffer = validateBufferDataTarget(functionName, target);
     287    if (!buffer)
     288        return nullptr;
     289    switch (usage) {
     290    case GraphicsContextGL::STREAM_DRAW:
     291    case GraphicsContextGL::STATIC_DRAW:
     292    case GraphicsContextGL::DYNAMIC_DRAW:
     293        return buffer;
     294    case GraphicsContextGL::STREAM_COPY:
     295    case GraphicsContextGL::STATIC_COPY:
     296    case GraphicsContextGL::DYNAMIC_COPY:
     297    case GraphicsContextGL::STREAM_READ:
     298    case GraphicsContextGL::STATIC_READ:
     299    case GraphicsContextGL::DYNAMIC_READ:
     300        return buffer;
     301    }
     302    synthesizeGLError(GraphicsContextGL::INVALID_ENUM, functionName, "invalid usage");
     303    return nullptr;
    278304}
    279305
     
    779805void WebGL2RenderingContext::readBuffer(GCGLenum src)
    780806{
     807    if (src == GraphicsContextGL::BACK) {
     808        // Because the backbuffer is simulated on all current WebKit ports, we need to change BACK to COLOR_ATTACHMENT0.
     809        if (m_readFramebufferBinding) {
     810            synthesizeGLError(GraphicsContextGL::INVALID_OPERATION, "readBuffer", "BACK is valid for default framebuffer only");
     811            return;
     812        }
     813        src = GraphicsContextGL::COLOR_ATTACHMENT0;
     814    } else if (!m_readFramebufferBinding && src != GraphicsContextGL::NONE) {
     815        synthesizeGLError(GraphicsContextGL::INVALID_OPERATION, "readBuffer", "default framebuffer only supports NONE or BACK");
     816        return;
     817    }
     818
    781819    m_context->readBuffer(src);
    782820}
     
    13861424}
    13871425
    1388 void WebGL2RenderingContext::drawRangeElements(GCGLenum, GCGLuint, GCGLuint, GCGLsizei, GCGLenum, GCGLint64)
    1389 {
    1390     LOG(WebGL, "[[ NOT IMPLEMENTED ]] drawRangeElements()");
     1426void WebGL2RenderingContext::drawRangeElements(GCGLenum mode, GCGLuint start, GCGLuint end, GCGLsizei count, GCGLenum type, GCGLint64 offset)
     1427{
     1428    if (isContextLostOrPending())
     1429        return;
     1430
     1431    m_context->drawRangeElements(mode, start, end, count, type, offset);
    13911432}
    13921433
     
    18291870}
    18301871
    1831 void WebGL2RenderingContext::bindBufferBase(GCGLenum target, GCGLuint index, WebGLBuffer* buffer)
    1832 {
    1833     if (isContextLostOrPending())
    1834         return;
    1835 
    1836     if (!checkObjectToBeBound("bindBufferBase", buffer))
    1837         return;
     1872bool WebGL2RenderingContext::setIndexedBufferBinding(const char *functionName, GCGLenum target, GCGLuint index, WebGLBuffer* buffer)
     1873{
     1874    if (isContextLostOrPending())
     1875        return false;
     1876
     1877    if (!checkObjectToBeBound(functionName, buffer))
     1878        return false;
    18381879
    18391880    switch (target) {
    18401881    case GraphicsContextGL::TRANSFORM_FEEDBACK_BUFFER:
    18411882        if (index >= m_boundTransformFeedbackBuffers.size()) {
    1842             synthesizeGLError(GraphicsContextGL::INVALID_VALUE, "bindBufferBase", "index out of range");
    1843             return;
     1883            synthesizeGLError(GraphicsContextGL::INVALID_VALUE, functionName, "index out of range");
     1884            return false;
    18441885        }
    18451886        break;
    18461887    case GraphicsContextGL::UNIFORM_BUFFER:
    1847         synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "bindBufferBase", "target not yet supported");
    1848         return;
     1888        if (index >= m_boundIndexedUniformBuffers.size()) {
     1889            synthesizeGLError(GraphicsContextGL::INVALID_VALUE, functionName, "index out of range");
     1890            return false;
     1891        }
     1892        break;
    18491893    default:
    1850         synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "bindBufferBase", "invalid target");
    1851         return;
    1852     }
    1853 
    1854     if (!validateAndCacheBufferBinding("bindBufferBase", target, buffer))
    1855         return;
    1856 
    1857     // FIXME: NEEDS_PORT: store the buffer in the indexed binding point.
    1858 
    1859     m_context->bindBufferBase(target, index, objectOrZero(buffer));
    1860 }
    1861 
    1862 void WebGL2RenderingContext::bindBufferRange(GCGLenum, GCGLuint, WebGLBuffer*, GCGLint64, GCGLint64)
    1863 {
    1864     LOG(WebGL, "[[ NOT IMPLEMENTED ]] bindBufferRange()");
     1894        synthesizeGLError(GraphicsContextGL::INVALID_ENUM, functionName, "invalid target");
     1895        return false;
     1896    }
     1897
     1898    if (!validateAndCacheBufferBinding(functionName, target, buffer))
     1899        return false;
     1900
     1901    switch (target) {
     1902    case GraphicsContextGL::TRANSFORM_FEEDBACK_BUFFER:
     1903        m_boundTransformFeedbackBuffers[index] = buffer;
     1904        break;
     1905    case GraphicsContextGL::UNIFORM_BUFFER:
     1906        m_boundIndexedUniformBuffers[index] = buffer;
     1907        break;
     1908    default:
     1909        synthesizeGLError(GraphicsContextGL::INVALID_ENUM, functionName, "invalid target");
     1910        return false;
     1911    }
     1912    return true;
     1913}
     1914
     1915void WebGL2RenderingContext::bindBufferBase(GCGLenum target, GCGLuint index, WebGLBuffer* buffer)
     1916{
     1917    if (setIndexedBufferBinding("bindBufferBase", target, index, buffer))
     1918        m_context->bindBufferBase(target, index, objectOrZero(buffer));
     1919}
     1920
     1921void WebGL2RenderingContext::bindBufferRange(GCGLenum target, GCGLuint index, WebGLBuffer* buffer, GCGLint64 offset, GCGLint64 size)
     1922{
     1923    if (target == GraphicsContextGL::TRANSFORM_FEEDBACK_BUFFER && (offset % 4 || size % 4)) {
     1924        synthesizeGLError(GraphicsContextGL::INVALID_VALUE, "bindBufferRange", "invalid offset or size");
     1925        return;
     1926    }
     1927    if (target == GraphicsContextGL::UNIFORM_BUFFER && (offset % m_uniformBufferOffsetAlignment)) {
     1928        synthesizeGLError(GraphicsContextGL::INVALID_VALUE, "bindBufferRange", "invalid offset");
     1929        return;
     1930    }
     1931    if (setIndexedBufferBinding("bindBufferRange", target, index, buffer))
     1932        m_context->bindBufferRange(target, index, objectOrZero(buffer), offset, size);
    18651933}
    18661934
     
    18791947    case GraphicsContextGL::TRANSFORM_FEEDBACK_BUFFER_SIZE:
    18801948    case GraphicsContextGL::TRANSFORM_FEEDBACK_BUFFER_START:
     1949    case GraphicsContextGL::UNIFORM_BUFFER_SIZE:
     1950    case GraphicsContextGL::UNIFORM_BUFFER_START: {
     1951        GCGLint64 value = 0;
     1952        m_context->getInteger64i_v(target, index, &value);
     1953        return value;
     1954    }
    18811955    case GraphicsContextGL::UNIFORM_BUFFER_BINDING:
    1882     case GraphicsContextGL::UNIFORM_BUFFER_SIZE:
    1883     case GraphicsContextGL::UNIFORM_BUFFER_START:
    1884         synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "getIndexedParameter", "parameter name not yet supported");
     1956        if (index >= m_boundIndexedUniformBuffers.size()) {
     1957            synthesizeGLError(GraphicsContextGL::INVALID_VALUE, "getIndexedParameter", "index out of range");
     1958            return nullptr;
     1959        }
     1960        return m_boundIndexedUniformBuffers[index];
    18851961        return nullptr;
    18861962    default:
     
    18901966}
    18911967
    1892 Optional<Vector<GCGLuint>> WebGL2RenderingContext::getUniformIndices(WebGLProgram&, const Vector<String>&)
    1893 {
     1968Optional<Vector<GCGLuint>> WebGL2RenderingContext::getUniformIndices(WebGLProgram& program, const Vector<String>& names)
     1969{
     1970#if USE(ANGLE)
     1971    if (isContextLostOrPending() || !validateWebGLObject("getUniformIndices", &program))
     1972        return WTF::nullopt;
     1973    return m_context->getUniformIndices(program.object(), names);
     1974#else
    18941975    LOG(WebGL, "[[ NOT IMPLEMENTED ]] getUniformIndices()");
    18951976    return WTF::nullopt;
     1977#endif
    18961978}
    18971979
     
    19011983        return nullptr;
    19021984
     1985    Vector<GCGLint> result(uniformIndices.size(), 0);
     1986   
    19031987    switch (pname) {
    19041988    case GraphicsContextGL::UNIFORM_TYPE:
     1989        m_context->getActiveUniforms(program.object(), uniformIndices, pname, result);
     1990        return result.map([](auto x) { return static_cast<GCGLenum>(x); });
    19051991    case GraphicsContextGL::UNIFORM_SIZE:
     1992        m_context->getActiveUniforms(program.object(), uniformIndices, pname, result);
     1993        return result.map([](auto x) { return static_cast<GCGLuint>(x); });
    19061994    case GraphicsContextGL::UNIFORM_BLOCK_INDEX:
    19071995    case GraphicsContextGL::UNIFORM_OFFSET:
    19081996    case GraphicsContextGL::UNIFORM_ARRAY_STRIDE:
    19091997    case GraphicsContextGL::UNIFORM_MATRIX_STRIDE:
     1998        m_context->getActiveUniforms(program.object(), uniformIndices, pname, result);
     1999        return WTFMove(result);
    19102000    case GraphicsContextGL::UNIFORM_IS_ROW_MAJOR:
    1911         {
    1912             Vector<GCGLint> params(uniformIndices.size(), 0);
    1913             m_context->getActiveUniforms(program.object(), uniformIndices, pname, params);
    1914             return WTFMove(params);
    1915         }
     2001        m_context->getActiveUniforms(program.object(), uniformIndices, pname, result);
     2002        return result.map([](auto x) { return static_cast<bool>(x); });
    19162003    default:
    19172004        synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "getActiveUniforms", "invalid parameter name");
     
    19202007}
    19212008
    1922 GCGLuint WebGL2RenderingContext::getUniformBlockIndex(WebGLProgram&, const String&)
    1923 {
     2009GCGLuint WebGL2RenderingContext::getUniformBlockIndex(WebGLProgram& program, const String& uniformBlockName)
     2010{
     2011#if USE(ANGLE)
     2012    if (isContextLostOrPending() || !validateWebGLObject("getUniformBlockIndex", &program))
     2013        return 0;
     2014    return m_context->getUniformBlockIndex(program.object(), uniformBlockName);
     2015#else
     2016    UNUSED_PARAM(program);
     2017    UNUSED_PARAM(uniformBlockName);
    19242018    LOG(WebGL, "[[ NOT IMPLEMENTED ]] getUniformBlockIndex()");
    19252019    return 0;
    1926 }
    1927 
    1928 WebGLAny WebGL2RenderingContext::getActiveUniformBlockParameter(WebGLProgram&, GCGLuint, GCGLenum)
    1929 {
     2020#endif
     2021}
     2022
     2023WebGLAny WebGL2RenderingContext::getActiveUniformBlockParameter(WebGLProgram& program, GCGLuint uniformBlockIndex, GCGLenum pname)
     2024{
     2025#if USE(ANGLE)
     2026    if (isContextLostOrPending() || !validateWebGLObject("getActiveUniformBlockParameter", &program))
     2027        return nullptr;
     2028    GLint result = 0;
     2029    switch (pname) {
     2030    case GraphicsContextGL::UNIFORM_BLOCK_BINDING:
     2031    case GraphicsContextGL::UNIFORM_BLOCK_DATA_SIZE:
     2032    case GraphicsContextGL::UNIFORM_BLOCK_ACTIVE_UNIFORMS:
     2033        m_context->getExtensions().getActiveUniformBlockivRobustANGLE(program.object(), uniformBlockIndex, pname, sizeof(result), nullptr, &result);
     2034        return static_cast<GLuint>(result);
     2035    case GraphicsContextGL::UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: {
     2036        GLint size = 0;
     2037        m_context->getExtensions().getActiveUniformBlockivRobustANGLE(program.object(), uniformBlockIndex, GraphicsContextGL::UNIFORM_BLOCK_ACTIVE_UNIFORMS, sizeof(size), nullptr, &size);
     2038        Vector<GCGLint> params(size, 0);
     2039        m_context->getExtensions().getActiveUniformBlockivRobustANGLE(program.object(), uniformBlockIndex, pname, sizeof(params[0]) * params.size(), nullptr, params.data());
     2040        return params.map([](auto x) { return static_cast<GCGLuint>(x); });
     2041    }
     2042    case GraphicsContextGL::UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
     2043    case GraphicsContextGL::UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:
     2044        m_context->getExtensions().getActiveUniformBlockivRobustANGLE(program.object(), uniformBlockIndex, pname, sizeof(result), nullptr, &result);
     2045        return static_cast<bool>(result);
     2046    default:
     2047        synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "getActiveUniformBlockParameter", "invalid parameter name");
     2048        return nullptr;
     2049    }
     2050#else
     2051    UNUSED_PARAM(program);
     2052    UNUSED_PARAM(uniformBlockIndex);
     2053    UNUSED_PARAM(pname);
    19302054    LOG(WebGL, "[[ NOT IMPLEMENTED ]] getActiveUniformBlockParameter()");
    19312055    return nullptr;
    1932 }
    1933 
    1934 WebGLAny WebGL2RenderingContext::getActiveUniformBlockName(WebGLProgram&, GCGLuint)
    1935 {
     2056#endif
     2057}
     2058
     2059WebGLAny WebGL2RenderingContext::getActiveUniformBlockName(WebGLProgram& program, GCGLuint index)
     2060{
     2061#if USE(ANGLE)
     2062    if (isContextLostOrPending() || !validateWebGLObject("getActiveUniformBlockName", &program))
     2063        return String();
     2064    return m_context->getActiveUniformBlockName(program.object(), index);
     2065#else
     2066    UNUSED_PARAM(program);
     2067    UNUSED_PARAM(index);
    19362068    LOG(WebGL, "[[ NOT IMPLEMENTED ]] getActiveUniformBlockName()");
    19372069    return nullptr;
    1938 }
    1939 
    1940 void WebGL2RenderingContext::uniformBlockBinding(WebGLProgram&, GCGLuint, GCGLuint)
    1941 {
     2070#endif
     2071}
     2072
     2073void WebGL2RenderingContext::uniformBlockBinding(WebGLProgram& program, GCGLuint uniformBlockIndex, GCGLuint uniformBlockBinding)
     2074{
     2075#if USE(ANGLE)
     2076    if (isContextLostOrPending() || !validateWebGLObject("uniformBlockBinding", &program))
     2077        return;
     2078    m_context->uniformBlockBinding(program.object(), uniformBlockIndex, uniformBlockBinding);
     2079#else
     2080    UNUSED_PARAM(program);
     2081    UNUSED_PARAM(uniformBlockIndex);
     2082    UNUSED_PARAM(uniformBlockBinding);
    19422083    LOG(WebGL, "[[ NOT IMPLEMENTED ]] uniformBlockBinding()");
     2084#endif
    19432085}
    19442086
     
    25322674    case GraphicsContextGL::RASTERIZER_DISCARD:
    25332675        return getBooleanParameter(pname);
    2534     case GraphicsContextGL::READ_BUFFER:
    2535         // FIXME: NEEDS_PORT
    2536         synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "getParameter", "invalid parameter name, READ_BUFFER not yet supported");
    2537         return nullptr;
     2676    case GraphicsContextGL::READ_BUFFER: {
     2677        GLint value = getIntParameter(pname);
     2678        if (!m_readFramebufferBinding && value != GL_NONE)
     2679            return GL_BACK;
     2680        return value;
     2681    }
    25382682    case GraphicsContextGL::READ_FRAMEBUFFER_BINDING:
    25392683        return m_readFramebufferBinding;
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h

    r261413 r263281  
    269269    bool validateBufferTarget(const char* functionName, GCGLenum target) final;
    270270    bool validateBufferTargetCompatibility(const char*, GCGLenum, WebGLBuffer*);
     271    WebGLBuffer* validateBufferDataParameters(const char* functionName, GCGLenum target, GCGLenum usage) final;
    271272    WebGLBuffer* validateBufferDataTarget(const char* functionName, GCGLenum target) final;
    272273    bool validateAndCacheBufferBinding(const char* functionName, GCGLenum target, WebGLBuffer*) final;
     
    285286    bool isIntegerFormat(GCGLenum internalformat);
    286287    void initializeShaderExtensions();
     288    bool setIndexedBufferBinding(const char *functionName, GCGLenum target, GCGLuint index, WebGLBuffer*);
    287289
    288290    IntRect getTextureSourceSubRectangle(GLsizei width, GLsizei height);
     
    311313    RefPtr<WebGLBuffer> m_boundTransformFeedbackBuffer;
    312314    RefPtr<WebGLBuffer> m_boundUniformBuffer;
     315    Vector<RefPtr<WebGLBuffer>> m_boundIndexedUniformBuffers;
    313316
    314317    HashMap<GCGLenum, RefPtr<WebGLQuery>> m_activeQueries;
     
    321324    GCGLint m_unpackImageHeight { 0 };
    322325    GCGLint m_unpackSkipImages { 0 };
     326    GCGLint m_uniformBufferOffsetAlignment { 0 };
    323327};
    324328
  • trunk/Source/WebCore/html/canvas/WebGLAny.h

    r254869 r263281  
    6161    Vector<bool>,
    6262    Vector<int>,
     63    Vector<unsigned>,
    6364    RefPtr<Float32Array>,
    6465    RefPtr<Int32Array>,
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp

    r262695 r263281  
    62706270bool WebGLRenderingContextBase::validateLocationLength(const char* functionName, const String& string)
    62716271{
    6272     const unsigned maxWebGLLocationLength = 256;
     6272    unsigned maxWebGLLocationLength = isWebGL2() ? 1024 : 256;
    62736273    if (string.length() > maxWebGLLocationLength) {
    6274         synthesizeGLError(GraphicsContextGL::INVALID_VALUE, functionName, "location length > 256");
     6274        synthesizeGLError(GraphicsContextGL::INVALID_VALUE, functionName, "location length is too large");
    62756275        return false;
    62766276    }
     
    68296829    case GraphicsContextGL::DYNAMIC_DRAW:
    68306830        return buffer;
     6831    case GraphicsContextGL::STREAM_COPY:
     6832    case GraphicsContextGL::STATIC_COPY:
     6833    case GraphicsContextGL::DYNAMIC_COPY:
     6834    case GraphicsContextGL::STREAM_READ:
     6835    case GraphicsContextGL::STATIC_READ:
     6836    case GraphicsContextGL::DYNAMIC_READ:
     6837        if (isWebGL2())
     6838            return buffer;
    68316839    }
    68326840    synthesizeGLError(GraphicsContextGL::INVALID_ENUM, functionName, "invalid usage");
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h

    r262366 r263281  
    958958    // Helper function to validate parameters for bufferData.
    959959    // Return the current bound buffer to target, or 0 if parameters are invalid.
    960     WebGLBuffer* validateBufferDataParameters(const char* functionName, GCGLenum target, GCGLenum usage);
     960    virtual WebGLBuffer* validateBufferDataParameters(const char* functionName, GCGLenum target, GCGLenum usage);
    961961
    962962    // Helper function for tex{Sub}Image2D to make sure image is ready.
  • trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h

    r261541 r263281  
    992992    virtual void getFloatv(GCGLenum pname, GCGLfloat* value) = 0;
    993993    virtual void getIntegerv(GCGLenum pname, GCGLint* value) = 0;
     994    virtual void getIntegeri_v(GCGLenum pname, GCGLuint index, GCGLint* value) = 0;
    994995    virtual void getInteger64v(GCGLenum pname, GCGLint64* value) = 0;
     996    virtual void getInteger64i_v(GCGLenum pname, GCGLuint index, GCGLint64* value) = 0;
    995997    virtual void getProgramiv(PlatformGLObject program, GCGLenum pname, GCGLint* value) = 0;
    996998    virtual void getBooleanv(GCGLenum pname, GCGLboolean* value) = 0;
  • trunk/Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.cpp

    r261769 r263281  
    108108String ExtensionsGLANGLE::getTranslatedShaderSourceANGLE(PlatformGLObject shader)
    109109{
     110    m_context->makeContextCurrent();
    110111    int sourceLength = 0;
    111112    m_context->getShaderiv(shader, GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE, &sourceLength);
     
    161162{
    162163    // FIXME: consider adding support for APPLE_framebuffer_multisample.
     164    m_context->makeContextCurrent();
    163165    gl::BlitFramebufferANGLE(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
    164166}
     
    166168void ExtensionsGLANGLE::renderbufferStorageMultisample(unsigned long target, unsigned long samples, unsigned long internalformat, unsigned long width, unsigned long height)
    167169{
     170    m_context->makeContextCurrent();
    168171    gl::RenderbufferStorageMultisampleANGLE(target, samples, internalformat, width, height);
    169172}
     
    226229void ExtensionsGLANGLE::drawBuffersEXT(GCGLsizei n, const GCGLenum* bufs)
    227230{
     231    m_context->makeContextCurrent();
    228232    gl::DrawBuffersEXT(n, bufs);
    229233}
     
    268272void ExtensionsGLANGLE::getBooleanvRobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLboolean *data)
    269273{
     274    m_context->makeContextCurrent();
    270275    gl::GetBooleanvRobustANGLE(pname, bufSize, length, data);
    271276}
     
    273278void ExtensionsGLANGLE::getBufferParameterivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    274279{
     280    m_context->makeContextCurrent();
    275281    gl::GetBufferParameterivRobustANGLE(target, pname, bufSize, length, params);
    276282}
     
    278284void ExtensionsGLANGLE::getFloatvRobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *data)
    279285{
     286    m_context->makeContextCurrent();
    280287    gl::GetFloatvRobustANGLE(pname, bufSize, length, data);
    281288}
     
    283290void ExtensionsGLANGLE::getFramebufferAttachmentParameterivRobustANGLE(GCGLenum target, GCGLenum attachment, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    284291{
     292    m_context->makeContextCurrent();
    285293    gl::GetFramebufferAttachmentParameterivRobustANGLE(target, attachment, pname, bufSize, length, params);
    286294}
     
    288296void ExtensionsGLANGLE::getIntegervRobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *data)
    289297{
     298    m_context->makeContextCurrent();
    290299    gl::GetIntegervRobustANGLE(pname, bufSize, length, data);
    291300}
     
    293302void ExtensionsGLANGLE::getProgramivRobustANGLE(GCGLuint program, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    294303{
     304    m_context->makeContextCurrent();
    295305    gl::GetProgramivRobustANGLE(program, pname, bufSize, length, params);
    296306}
     
    298308void ExtensionsGLANGLE::getRenderbufferParameterivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    299309{
     310    m_context->makeContextCurrent();
    300311    gl::GetRenderbufferParameterivRobustANGLE(target, pname, bufSize, length, params);
    301312}
     
    303314void ExtensionsGLANGLE::getShaderivRobustANGLE(GCGLuint shader, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    304315{
     316    m_context->makeContextCurrent();
    305317    gl::GetShaderivRobustANGLE(shader, pname, bufSize, length, params);
    306318}
     
    308320void ExtensionsGLANGLE::getTexParameterfvRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params)
    309321{
     322    m_context->makeContextCurrent();
    310323    gl::GetTexParameterfvRobustANGLE(target, pname, bufSize, length, params);
    311324}
     
    313326void ExtensionsGLANGLE::getTexParameterivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    314327{
     328    m_context->makeContextCurrent();
    315329    gl::GetTexParameterivRobustANGLE(target, pname, bufSize, length, params);
    316330}
     
    318332void ExtensionsGLANGLE::getUniformfvRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params)
    319333{
     334    m_context->makeContextCurrent();
    320335    gl::GetUniformfvRobustANGLE(program, location, bufSize, length, params);
    321336}
     
    323338void ExtensionsGLANGLE::getUniformivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    324339{
     340    m_context->makeContextCurrent();
    325341    gl::GetUniformivRobustANGLE(program, location, bufSize, length, params);
    326342}
     
    328344void ExtensionsGLANGLE::getVertexAttribfvRobustANGLE(GCGLuint index, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params)
    329345{
     346    m_context->makeContextCurrent();
    330347    gl::GetVertexAttribfvRobustANGLE(index, pname, bufSize, length, params);
    331348}
     
    333350void ExtensionsGLANGLE::getVertexAttribivRobustANGLE(GCGLuint index, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    334351{
     352    m_context->makeContextCurrent();
    335353    gl::GetVertexAttribivRobustANGLE(index, pname, bufSize, length, params);
    336354}
     
    338356void ExtensionsGLANGLE::getVertexAttribPointervRobustANGLE(GCGLuint index, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, void **pointer)
    339357{
     358    m_context->makeContextCurrent();
    340359    gl::GetVertexAttribPointervRobustANGLE(index, pname, bufSize, length, pointer);
    341360}
     
    343362void ExtensionsGLANGLE::readPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *pixels)
    344363{
     364    m_context->makeContextCurrent();
    345365    gl::ReadPixelsRobustANGLE(x, y, width, height, format, type, bufSize, length, columns, rows, pixels);
    346366}
     
    350370    if (!m_context->m_isForWebGL2)
    351371        internalformat = adjustWebGL1TextureInternalFormat(internalformat, format, type);
     372    m_context->makeContextCurrent();
    352373    gl::TexImage2DRobustANGLE(target, level, internalformat, width, height, border, format, type, bufSize, pixels);
    353374}
     
    355376void ExtensionsGLANGLE::texParameterfvRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, const GCGLfloat *params)
    356377{
     378    m_context->makeContextCurrent();
    357379    gl::TexParameterfvRobustANGLE(target, pname, bufSize, params);
    358380}
     
    360382void ExtensionsGLANGLE::texParameterivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, const GCGLint *params)
    361383{
     384    m_context->makeContextCurrent();
    362385    gl::TexParameterivRobustANGLE(target, pname, bufSize, params);
    363386}
     
    365388void ExtensionsGLANGLE::texSubImage2DRobustANGLE(GCGLenum target, int level, int xoffset, int yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, const void *pixels)
    366389{
     390    m_context->makeContextCurrent();
    367391    gl::TexSubImage2DRobustANGLE(target, level, xoffset, yoffset, width, height, format, type, bufSize, pixels);
    368392}
     
    370394void ExtensionsGLANGLE::compressedTexImage2DRobustANGLE(GCGLenum target, int level, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, int border, GCGLsizei imageSize, GCGLsizei bufSize, const void* data)
    371395{
     396    m_context->makeContextCurrent();
    372397    gl::CompressedTexImage2DRobustANGLE(target, level, internalformat, width, height, border, imageSize, bufSize, data);
    373398}
     
    375400void ExtensionsGLANGLE::compressedTexSubImage2DRobustANGLE(GCGLenum target, int level, int xoffset, int yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLsizei imageSize, GCGLsizei bufSize, const void* data)
    376401{
     402    m_context->makeContextCurrent();
    377403    gl::CompressedTexSubImage2DRobustANGLE(target, level, xoffset, yoffset, width, height, format, imageSize, bufSize, data);
    378404}
     
    380406void ExtensionsGLANGLE::compressedTexImage3DRobustANGLE(GCGLenum target, int level, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, int border, GCGLsizei imageSize, GCGLsizei bufSize, const void* data)
    381407{
     408    m_context->makeContextCurrent();
    382409    gl::CompressedTexImage3DRobustANGLE(target, level, internalformat, width, height, depth, border, imageSize, bufSize, data);
    383410}
     
    385412void ExtensionsGLANGLE::compressedTexSubImage3DRobustANGLE(GCGLenum target, int level, int xoffset, int yoffset, int zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLsizei imageSize, GCGLsizei bufSize, const void* data)
    386413{
     414    m_context->makeContextCurrent();
    387415    gl::CompressedTexSubImage3DRobustANGLE(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bufSize, data);
    388416}
     
    391419void ExtensionsGLANGLE::texImage3DRobustANGLE(GCGLenum target, int level, int internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, int border, GCGLenum format, GCGLenum type, GCGLsizei bufSize, const void *pixels)
    392420{
     421    m_context->makeContextCurrent();
    393422    gl::TexImage3DRobustANGLE(target, level, internalformat, width, height, depth, border, format, type, bufSize, pixels);
    394423}
     
    396425void ExtensionsGLANGLE::texSubImage3DRobustANGLE(GCGLenum target, int level, int xoffset, int yoffset, int zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, GCGLsizei bufSize, const void *pixels)
    397426{
     427    m_context->makeContextCurrent();
    398428    gl::TexSubImage3DRobustANGLE(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, bufSize, pixels);
    399429}
     
    401431void ExtensionsGLANGLE::getQueryivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    402432{
     433    m_context->makeContextCurrent();
    403434    gl::GetQueryivRobustANGLE(target, pname, bufSize, length, params);
    404435}
     
    406437void ExtensionsGLANGLE::getQueryObjectuivRobustANGLE(GCGLuint id, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLuint *params)
    407438{
     439    m_context->makeContextCurrent();
    408440    gl::GetQueryObjectuivRobustANGLE(id, pname, bufSize, length, params);
    409441}
     
    411443void ExtensionsGLANGLE::getBufferPointervRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, void **params)
    412444{
     445    m_context->makeContextCurrent();
    413446    gl::GetBufferPointervRobustANGLE(target, pname, bufSize, length, params);
    414447}
     
    416449void ExtensionsGLANGLE::getIntegeri_vRobustANGLE(GCGLenum target, GCGLuint index, GCGLsizei bufSize, GCGLsizei *length, GCGLint *data)
    417450{
     451    m_context->makeContextCurrent();
    418452    gl::GetIntegeri_vRobustANGLE(target, index, bufSize, length, data);
    419453}
     
    421455void ExtensionsGLANGLE::getInternalformativRobustANGLE(GCGLenum target, GCGLenum internalformat, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    422456{
     457    m_context->makeContextCurrent();
    423458    gl::GetInternalformativRobustANGLE(target, internalformat, pname, bufSize, length, params);
    424459}
     
    426461void ExtensionsGLANGLE::getVertexAttribIivRobustANGLE(GCGLuint index, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    427462{
     463    m_context->makeContextCurrent();
    428464    gl::GetVertexAttribIivRobustANGLE(index, pname, bufSize, length, params);
    429465}
     
    431467void ExtensionsGLANGLE::getVertexAttribIuivRobustANGLE(GCGLuint index, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLuint *params)
    432468{
     469    m_context->makeContextCurrent();
    433470    gl::GetVertexAttribIuivRobustANGLE(index, pname, bufSize, length, params);
    434471}
     
    436473void ExtensionsGLANGLE::getUniformuivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLuint *params)
    437474{
     475    m_context->makeContextCurrent();
    438476    gl::GetUniformuivRobustANGLE(program, location, bufSize, length, params);
    439477}
     
    441479void ExtensionsGLANGLE::getActiveUniformBlockivRobustANGLE(GCGLuint program, GCGLuint uniformBlockIndex, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    442480{
     481    m_context->makeContextCurrent();
    443482    gl::GetActiveUniformBlockivRobustANGLE(program, uniformBlockIndex, pname, bufSize, length, params);
    444483}
     
    446485void ExtensionsGLANGLE::getInteger64vRobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint64 *data)
    447486{
     487    m_context->makeContextCurrent();
    448488    gl::GetInteger64vRobustANGLE(pname, bufSize, length, reinterpret_cast<GLint64*>(data));
    449489}
     
    451491void ExtensionsGLANGLE::getInteger64i_vRobustANGLE(GCGLenum target, GCGLuint index, GCGLsizei bufSize, GCGLsizei *length, GCGLint64 *data)
    452492{
     493    m_context->makeContextCurrent();
    453494    gl::GetInteger64i_vRobustANGLE(target, index, bufSize, length, reinterpret_cast<GLint64*>(data));
    454495}
     
    456497void ExtensionsGLANGLE::getBufferParameteri64vRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint64 *params)
    457498{
     499    m_context->makeContextCurrent();
    458500    gl::GetBufferParameteri64vRobustANGLE(target, pname, bufSize, length, reinterpret_cast<GLint64*>(params));
    459501}
     
    461503void ExtensionsGLANGLE::samplerParameterivRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, const GCGLint *param)
    462504{
     505    m_context->makeContextCurrent();
    463506    gl::SamplerParameterivRobustANGLE(sampler, pname, bufSize, param);
    464507}
     
    466509void ExtensionsGLANGLE::samplerParameterfvRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, const GCGLfloat *param)
    467510{
     511    m_context->makeContextCurrent();
    468512    gl::SamplerParameterfvRobustANGLE(sampler, pname, bufSize, param);
    469513}
     
    471515void ExtensionsGLANGLE::getSamplerParameterivRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    472516{
     517    m_context->makeContextCurrent();
    473518    gl::GetSamplerParameterivRobustANGLE(sampler, pname, bufSize, length, params);
    474519}
     
    476521void ExtensionsGLANGLE::getSamplerParameterfvRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params)
    477522{
     523    m_context->makeContextCurrent();
    478524    gl::GetSamplerParameterfvRobustANGLE(sampler, pname, bufSize, length, params);
    479525}
     
    482528void ExtensionsGLANGLE::getFramebufferParameterivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    483529{
     530    m_context->makeContextCurrent();
    484531    gl::GetFramebufferParameterivRobustANGLE(target, pname, bufSize, length, params);
    485532}
     
    487534void ExtensionsGLANGLE::getProgramInterfaceivRobustANGLE(GCGLuint program, GCGLenum programInterface, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    488535{
     536    m_context->makeContextCurrent();
    489537    gl::GetProgramInterfaceivRobustANGLE(program, programInterface, pname, bufSize, length, params);
    490538}
     
    492540void ExtensionsGLANGLE::getBooleani_vRobustANGLE(GCGLenum target, GCGLuint index, GCGLsizei bufSize, GCGLsizei *length, GCGLboolean *data)
    493541{
     542    m_context->makeContextCurrent();
    494543    gl::GetBooleani_vRobustANGLE(target, index, bufSize, length, data);
    495544}
     
    497546void ExtensionsGLANGLE::getMultisamplefvRobustANGLE(GCGLenum pname, GCGLuint index, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *val)
    498547{
     548    m_context->makeContextCurrent();
    499549    gl::GetMultisamplefvRobustANGLE(pname, index, bufSize, length, val);
    500550}
     
    502552void ExtensionsGLANGLE::getTexLevelParameterivRobustANGLE(GCGLenum target, int level, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    503553{
     554    m_context->makeContextCurrent();
    504555    gl::GetTexLevelParameterivRobustANGLE(target, level, pname, bufSize, length, params);
    505556}
     
    507558void ExtensionsGLANGLE::getTexLevelParameterfvRobustANGLE(GCGLenum target, int level, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params)
    508559{
     560    m_context->makeContextCurrent();
    509561    gl::GetTexLevelParameterfvRobustANGLE(target, level, pname, bufSize, length, params);
    510562}
     
    513565void ExtensionsGLANGLE::getPointervRobustANGLERobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, void **params)
    514566{
     567    m_context->makeContextCurrent();
    515568    gl::GetPointervRobustANGLERobustANGLE(pname, bufSize, length, params);
    516569}
     
    529582void ExtensionsGLANGLE::readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data)
    530583{
     584    m_context->makeContextCurrent();
    531585    // FIXME: remove the two glFlush calls when the driver bug is fixed, i.e.,
    532586    // all previous rendering calls should be done before reading pixels.
     
    561615void ExtensionsGLANGLE::getnUniformfvRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params)
    562616{
     617    m_context->makeContextCurrent();
    563618    gl::GetnUniformfvRobustANGLE(program, location, bufSize, length, params);
    564619}
     
    566621void ExtensionsGLANGLE::getnUniformivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    567622{
     623    m_context->makeContextCurrent();
    568624    gl::GetnUniformivRobustANGLE(program, location, bufSize, length, params);
    569625}
     
    571627void ExtensionsGLANGLE::getnUniformuivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLuint *params)
    572628{
     629    m_context->makeContextCurrent();
    573630    gl::GetnUniformuivRobustANGLE(program, location, bufSize, length, params);
    574631}
     
    576633void ExtensionsGLANGLE::texParameterIivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, const GCGLint *params)
    577634{
     635    m_context->makeContextCurrent();
    578636    gl::TexParameterIivRobustANGLE(target, pname, bufSize, params);
    579637}
     
    581639void ExtensionsGLANGLE::texParameterIuivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, const GCGLuint *params)
    582640{
     641    m_context->makeContextCurrent();
    583642    gl::TexParameterIuivRobustANGLE(target, pname, bufSize, params);
    584643}
     
    586645void ExtensionsGLANGLE::getTexParameterIivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    587646{
     647    m_context->makeContextCurrent();
    588648    gl::GetTexParameterIivRobustANGLE(target, pname, bufSize, length, params);
    589649}
     
    591651void ExtensionsGLANGLE::getTexParameterIuivRobustANGLE(GCGLenum target, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLuint *params)
    592652{
     653    m_context->makeContextCurrent();
    593654    gl::GetTexParameterIuivRobustANGLE(target, pname, bufSize, length, params);
    594655}
     
    596657void ExtensionsGLANGLE::samplerParameterIivRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, const GCGLint *param)
    597658{
     659    m_context->makeContextCurrent();
    598660    gl::SamplerParameterIivRobustANGLE(sampler, pname, bufSize, param);
    599661}
     
    601663void ExtensionsGLANGLE::samplerParameterIuivRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, const GCGLuint *param)
    602664{
     665    m_context->makeContextCurrent();
    603666    gl::SamplerParameterIuivRobustANGLE(sampler, pname, bufSize, param);
    604667}
     
    606669void ExtensionsGLANGLE::getSamplerParameterIivRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    607670{
     671    m_context->makeContextCurrent();
    608672    gl::GetSamplerParameterIivRobustANGLE(sampler, pname, bufSize, length, params);
    609673}
     
    611675void ExtensionsGLANGLE::getSamplerParameterIuivRobustANGLE(GCGLuint sampler, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLuint *params)
    612676{
     677    m_context->makeContextCurrent();
    613678    gl::GetSamplerParameterIuivRobustANGLE(sampler, pname, bufSize, length, params);
    614679}
     
    617682void ExtensionsGLANGLE::getQueryObjectivRobustANGLE(GCGLuint id, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params)
    618683{
     684    m_context->makeContextCurrent();
    619685    gl::GetQueryObjectivRobustANGLE(id, pname, bufSize, length, params);
    620686}
     
    622688void ExtensionsGLANGLE::getQueryObjecti64vRobustANGLE(GCGLuint id, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLint64 *params)
    623689{
     690    m_context->makeContextCurrent();
    624691    gl::GetQueryObjecti64vRobustANGLE(id, pname, bufSize, length, reinterpret_cast<GLint64*>(params));
    625692}
     
    627694void ExtensionsGLANGLE::getQueryObjectui64vRobustANGLE(GCGLuint id, GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, GCGLuint64 *params)
    628695{
     696    m_context->makeContextCurrent();
    629697    gl::GetQueryObjectui64vRobustANGLE(id, pname, bufSize, length, reinterpret_cast<GLuint64*>(params));
    630698}
  • trunk/Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp

    r263127 r263281  
    368368}
    369369
     370void GraphicsContextGLOpenGL::getIntegeri_v(GCGLenum pname, GCGLuint index, GCGLint* value)
     371{
     372    makeContextCurrent();
     373    gl::GetIntegeri_v(pname, index, value);
     374}
     375
    370376void GraphicsContextGLOpenGL::getShaderPrecisionFormat(GCGLenum shaderType, GCGLenum precisionType, GCGLint* range, GCGLint* precision)
    371377{
     
    15761582void GraphicsContextGLOpenGL::getInteger64v(GCGLenum pname, GCGLint64* value)
    15771583{
    1578     UNUSED_PARAM(pname);
    15791584    makeContextCurrent();
    15801585    *value = 0;
    1581     // FIXME 141178: Before enabling this we must first switch over to using gl3.h and creating and initialing the WebGL2 context using OpenGL ES 3.0.
    1582     // gl::GetInteger64v(pname, value);
     1586    gl::GetInteger64v(pname, value);
     1587}
     1588
     1589void GraphicsContextGLOpenGL::getInteger64i_v(GCGLenum pname, GCGLuint index, GCGLint64* value)
     1590{
     1591    makeContextCurrent();
     1592    *value = 0;
     1593    gl::GetInteger64i_v(pname, index, value);
    15831594}
    15841595
     
    19011912void GraphicsContextGLOpenGL::drawArraysInstanced(GCGLenum mode, GCGLint first, GCGLsizei count, GCGLsizei primcount)
    19021913{
    1903     getExtensions().drawArraysInstanced(mode, first, count, primcount);
     1914    if (m_isForWebGL2)
     1915        gl::DrawArraysInstanced(mode, first, count, primcount);
     1916    else
     1917        getExtensions().drawArraysInstanced(mode, first, count, primcount);
    19041918    checkGPUStatus();
    19051919}
     
    19071921void GraphicsContextGLOpenGL::drawElementsInstanced(GCGLenum mode, GCGLsizei count, GCGLenum type, GCGLintptr offset, GCGLsizei primcount)
    19081922{
    1909     getExtensions().drawElementsInstanced(mode, count, type, offset, primcount);
     1923    if (m_isForWebGL2)
     1924        gl::DrawElementsInstanced(mode, count, type, reinterpret_cast<void*>(offset), primcount);
     1925    else
     1926        getExtensions().drawElementsInstanced(mode, count, type, offset, primcount);
    19101927    checkGPUStatus();
    19111928}
     
    19181935GCGLuint GraphicsContextGLOpenGL::getUniformBlockIndex(PlatformGLObject program, const String& uniformBlockName)
    19191936{
    1920     UNUSED_PARAM(program);
    1921     UNUSED_PARAM(uniformBlockName);
    1922 
    1923     return 0;
     1937    ASSERT(program);
     1938    makeContextCurrent();
     1939    return gl::GetUniformBlockIndex(program, uniformBlockName.utf8().data());
    19241940}
    19251941
    19261942void GraphicsContextGLOpenGL::getActiveUniformBlockiv(PlatformGLObject program, GCGLuint uniformBlockIndex, GCGLenum pname, GCGLint* params)
    19271943{
     1944    RELEASE_LOG(WebGL, "Use getActiveUniformBlockivRobustANGLE instead.");
     1945    notImplemented();
    19281946    UNUSED_PARAM(program);
    19291947    UNUSED_PARAM(uniformBlockIndex);
     
    19341952String GraphicsContextGLOpenGL::getActiveUniformBlockName(PlatformGLObject program, GCGLuint uniformBlockIndex)
    19351953{
    1936     UNUSED_PARAM(program);
    1937     UNUSED_PARAM(uniformBlockIndex);
    1938 
    1939     return emptyString();
     1954    ASSERT(program);
     1955    makeContextCurrent();
     1956    GLint maxLength = 0;
     1957    gl::GetProgramiv(program, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH, &maxLength);
     1958    Vector<GLchar> buffer(maxLength);
     1959    gl::GetActiveUniformBlockName(program, uniformBlockIndex, buffer.size(), nullptr, buffer.data());
     1960    return String(buffer.data());
    19401961}
    19411962
    19421963void GraphicsContextGLOpenGL::uniformBlockBinding(PlatformGLObject program, GCGLuint uniformBlockIndex, GCGLuint uniformBlockBinding)
    19431964{
    1944     UNUSED_PARAM(program);
    1945     UNUSED_PARAM(uniformBlockIndex);
    1946     UNUSED_PARAM(uniformBlockBinding);
    1947 
     1965    ASSERT(program);
     1966    makeContextCurrent();
     1967    gl::UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
    19481968}
    19491969
     
    24182438void GraphicsContextGLOpenGL::drawRangeElements(GCGLenum mode, GCGLuint start, GCGLuint end, GCGLsizei count, GCGLenum type, GCGLintptr offset)
    24192439{
    2420     UNUSED_PARAM(mode);
    2421     UNUSED_PARAM(start);
    2422     UNUSED_PARAM(end);
    2423     UNUSED_PARAM(count);
    2424     UNUSED_PARAM(type);
    2425     UNUSED_PARAM(offset);
     2440    gl::DrawRangeElements(mode, start, end, count, type, reinterpret_cast<void*>(offset));
    24262441}
    24272442
     
    25792594void GraphicsContextGLOpenGL::pauseTransformFeedback()
    25802595{
     2596    makeContextCurrent();
     2597    gl::PauseTransformFeedback();
    25812598}
    25822599
    25832600void GraphicsContextGLOpenGL::resumeTransformFeedback()
    25842601{
     2602    makeContextCurrent();
     2603    gl::ResumeTransformFeedback();
    25852604}
    25862605
    25872606void GraphicsContextGLOpenGL::bindBufferRange(GCGLenum target, GCGLuint index, PlatformGLObject buffer, GCGLintptr offset, GCGLsizeiptr size)
    25882607{
    2589     UNUSED_PARAM(target);
    2590     UNUSED_PARAM(index);
    2591     UNUSED_PARAM(buffer);
    2592     UNUSED_PARAM(offset);
    2593     UNUSED_PARAM(size);
     2608    makeContextCurrent();
     2609    gl::BindBufferRange(target, index, buffer, offset, size);
    25942610}
    25952611
    25962612Vector<GCGLuint> GraphicsContextGLOpenGL::getUniformIndices(PlatformGLObject program, const Vector<String>& uniformNames)
    25972613{
    2598     UNUSED_PARAM(program);
    2599     UNUSED_PARAM(uniformNames);
    2600 
    2601     return { };
     2614    ASSERT(program);
     2615    makeContextCurrent();
     2616    Vector<CString> utf8 = uniformNames.map([](auto& x) { return x.utf8(); });
     2617    Vector<const char*> cstr = utf8.map([](auto& x) { return x.data(); });
     2618    Vector<GCGLuint> result(cstr.size(), 0);
     2619    gl::GetUniformIndices(program, cstr.size(), cstr.data(), result.data());
     2620    return result;
    26022621}
    26032622
  • trunk/Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h

    r263127 r263281  
    276276    void getFramebufferAttachmentParameteriv(GCGLenum target, GCGLenum attachment, GCGLenum pname, GCGLint* value) final;
    277277    void getIntegerv(GCGLenum pname, GCGLint* value) final;
     278    void getIntegeri_v(GCGLenum pname, GCGLuint index, GCGLint* value) final;
    278279    void getInteger64v(GCGLenum pname, GCGLint64* value) final;
     280    void getInteger64i_v(GCGLenum pname, GCGLuint index, GCGLint64* value) final;
    279281    void getProgramiv(PlatformGLObject program, GCGLenum pname, GCGLint* value) final;
    280282#if !USE(ANGLE)
  • trunk/Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp

    r260301 r263281  
    15731573    ::glGetFloatv(pname, value);
    15741574}
    1575    
     1575
     1576void GraphicsContextGLOpenGL::getIntegeri_v(GCGLenum pname, GCGLuint index, GCGLint* value)
     1577{
     1578    UNUSED_PARAM(pname);
     1579    UNUSED_PARAM(index);
     1580    makeContextCurrent();
     1581    *value = 0;
     1582    // FIXME 141178: Before enabling this we must first switch over to using gl3.h and creating and initialing the WebGL2 context using OpenGL ES 3.0.
     1583    // ::glGetIntegeri_v(pname, index, value);
     1584}
     1585
    15761586void GraphicsContextGLOpenGL::getInteger64v(GCGLenum pname, GCGLint64* value)
    15771587{
     
    15811591    // FIXME 141178: Before enabling this we must first switch over to using gl3.h and creating and initialing the WebGL2 context using OpenGL ES 3.0.
    15821592    // ::glGetInteger64v(pname, value);
     1593}
     1594
     1595void GraphicsContextGLOpenGL::getInteger64i_v(GCGLenum pname, GCGLuint index, GCGLint64* value)
     1596{
     1597    UNUSED_PARAM(pname);
     1598    UNUSED_PARAM(index);
     1599    makeContextCurrent();
     1600    *value = 0;
     1601    // FIXME 141178: Before enabling this we must first switch over to using gl3.h and creating and initialing the WebGL2 context using OpenGL ES 3.0.
     1602    // ::glGetInteger64i_v(pname, index, value);
    15831603}
    15841604
Note: See TracChangeset for help on using the changeset viewer.