Changeset 264536 in webkit


Ignore:
Timestamp:
Jul 17, 2020 3:01:45 PM (4 years ago)
Author:
commit-queue@webkit.org
Message:

[WebGL2] ReadPixels updates
https://bugs.webkit.org/show_bug.cgi?id=209516

Patch by Kenneth Russell <kbr@chromium.org> on 2020-07-17
Reviewed by Dean Jackson.

Source/ThirdParty/ANGLE:

Add workaround for OpenGL driver bug on macOS where
GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored.

Add WebGL 2.0-specific validation constraints for pixel pack and
unpack parameters.

These changes are being upstreamed to ANGLE in
http://crbug.com/angleproject/4849 .

  • include/platform/FeaturesGL.h:
  • src/libANGLE/ErrorStrings.h:
  • src/libANGLE/renderer/gl/FramebufferGL.cpp:

(rx::FramebufferGL::readPixels):

  • src/libANGLE/renderer/gl/renderergl_utils.cpp:

(rx::nativegl_gl::InitializeFeatures):

  • src/libANGLE/validationES.cpp:

(gl::ValidatePixelPack):

  • src/libANGLE/validationES3.cpp:

(gl::ValidateES3TexImageParametersBase):

Source/WebCore:

Upgrade readPixels to WebGL 2.0 functionality.

Handle both WebGL 2.0 pack/unpack parameters correctly. Fix
preexisting bugs in texture uploads from pixel unpack buffers.
Remove entry points from GraphicsContextGL that will never be used
by the WebGL 2.0 implementation.

Covered by existing WebGL 2.0 conformance tests.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::initializeNewContext):
(WebCore::WebGL2RenderingContext::sliceArrayBufferView):
(WebCore::WebGL2RenderingContext::pixelStorei):
(WebCore::WebGL2RenderingContext::texImage2D):
(WebCore::WebGL2RenderingContext::texImage3D):
(WebCore::WebGL2RenderingContext::texSubImage2D):
(WebCore::WebGL2RenderingContext::texSubImage3D):
(WebCore::WebGL2RenderingContext::getPackPixelStoreParams const):
(WebCore::WebGL2RenderingContext::getUnpackPixelStoreParams const):
(WebCore::WebGL2RenderingContext::readPixels):

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

(WebCore::WebGLRenderingContextBase::readPixels):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/ExtensionsGL.h:
  • platform/graphics/GraphicsContextGL.h:
  • platform/graphics/angle/ExtensionsGLANGLE.cpp:

(WebCore::ExtensionsGLANGLE::readnPixelsRobustANGLE):

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

(WebCore::GraphicsContextGLOpenGL::readRenderingResults):
(WebCore::GraphicsContextGLOpenGL::texImage3D): Deleted.
(WebCore::GraphicsContextGLOpenGL::texSubImage3D): Deleted.

  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:

(WebCore::ExtensionsGLOpenGLCommon::readnPixelsRobustANGLE):

  • platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGL.h:
  • platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:

(WebCore::GraphicsContextGLOpenGL::texImage3D): Deleted.
(WebCore::GraphicsContextGLOpenGL::texSubImage3D): Deleted.

LayoutTests:

Rebaseline three tests under conformance2/reading/, which are now
fully passing. One more driver bug workaround is needed in ANGLE
in order to make the remaining tests in this directory fully pass.

Rebaseline two other layout tests which progress with these
changes. (One gets farther and signals more errors than before.)

  • webgl/2.0.0/conformance2/misc/views-with-offsets-expected.txt:
  • webgl/2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug-expected.txt:
  • webgl/2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer-expected.txt:
  • webgl/2.0.0/conformance2/reading/read-pixels-pack-parameters-expected.txt:
  • webgl/2.0.0/conformance2/textures/misc/tex-unpack-params-expected.txt:
Location:
trunk
Files:
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r264535 r264536  
     12020-07-17  Kenneth Russell  <kbr@chromium.org>
     2
     3        [WebGL2] ReadPixels updates
     4        https://bugs.webkit.org/show_bug.cgi?id=209516
     5
     6        Reviewed by Dean Jackson.
     7
     8        Rebaseline three tests under conformance2/reading/, which are now
     9        fully passing. One more driver bug workaround is needed in ANGLE
     10        in order to make the remaining tests in this directory fully pass.
     11
     12        Rebaseline two other layout tests which progress with these
     13        changes. (One gets farther and signals more errors than before.)
     14
     15        * webgl/2.0.0/conformance2/misc/views-with-offsets-expected.txt:
     16        * webgl/2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug-expected.txt:
     17        * webgl/2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer-expected.txt:
     18        * webgl/2.0.0/conformance2/reading/read-pixels-pack-parameters-expected.txt:
     19        * webgl/2.0.0/conformance2/textures/misc/tex-unpack-params-expected.txt:
     20
    1212020-07-17  James Darpinian  <jdarpinian@chromium.org>
    222
  • trunk/LayoutTests/webgl/2.0.0/conformance2/misc/views-with-offsets-expected.txt

    r264377 r264536  
    230230[ 227: PASS ] getError was expected value: INVALID_VALUE :
    231231[ 228: PASS ] getError was expected value: INVALID_VALUE :
    232 [ 229: FAIL ] Does not support doReadPixels with offsets into views.
    233 [ 230: PASS ] successfullyParsed is true
    234 [ FAIL ] 27 failures reported
     232[ 229: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION :
     233[ 230: FAIL ] Should be [10, 20, 30, 40], was [0, 0, 0, 0].
     234[ 231: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION :
     235[ 232: FAIL ] Should be [10, 20, 30, 40], was [0, 0, 0, 0].
     236[ 233: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION :
     237[ 234: FAIL ] Should be [10, 20, 30, 40], was [0, 0, 0, 0].
     238[ 235: PASS ] getError was expected value: INVALID_OPERATION :
     239[ 236: PASS ] getError was expected value: INVALID_OPERATION :
     240[ 237: PASS ] getError was expected value: INVALID_OPERATION :
     241[ 238: PASS ] getError was expected value: INVALID_OPERATION :
     242[ 239: PASS ] getError was expected value: INVALID_VALUE :
     243[ 240: PASS ] successfullyParsed is true
     244[ FAIL ] 32 failures reported
    235245
  • trunk/LayoutTests/webgl/2.0.0/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug-expected.txt

    r263281 r264536  
    22
    33Test: ../../resources/webgl_test_files/conformance2/reading/read-pixels-from-rgb8-into-pbo-bug.html
    4 [ 1: PASS ] context exists
    5 [ 2: FAIL ] Expected in pixel 0: [255,0,0,255], got: 0,0,0,0
    6 [ 3: PASS ] getError was expected value: NO_ERROR : Tests should complete without gl errors
    7 [ 4: PASS ] successfullyParsed is true
    8 [ FAIL ] 1 failures reported
     4[ PASS ] All tests passed
    95
  • trunk/LayoutTests/webgl/2.0.0/conformance2/reading/read-pixels-into-pixel-pack-buffer-expected.txt

    r254148 r264536  
    22
    33Test: ../../resources/webgl_test_files/conformance2/reading/read-pixels-into-pixel-pack-buffer.html
    4 [ 1: PASS ] context exists
    5 [ 2: PASS ] getError was expected value: INVALID_OPERATION : should generate INVALID_OPERATION if pixel pack buffer is bound
    6 [ 3: PASS ] getError was expected value: NO_ERROR :
    7 [ 4: FAIL ] getError expected: INVALID_VALUE. Was NO_ERROR : offset < 0
    8 [ 5: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : offset > buffer size
    9 [ 6: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : pixel pack buffer is not large enough
    10 [ 7: PASS ] getError was expected value: NO_ERROR : reading pixels outside of the framebuffer should succeed.
    11 [ 8: PASS ] getError was expected value: NO_ERROR : reading pixels outside of the framebuffer should succeed.
    12 [ 9: FAIL ] getError expected: INVALID_VALUE. Was NO_ERROR : reading pixels with negative width / height should generate INVALID_VALUE.
    13 [ 10: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Format should not be able to read as DEPTH_COMPONENT
    14 [ 11: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Format should not be able to read as DEPTH_STENCIL
    15 [ 12: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Format should not be able to read as R8
    16 [ 13: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Format should not be able to read as RGBA4
    17 [ 14: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Format should not be able to read as LUMINANCE
    18 [ 15: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Format should not be able to read as LUMINANCE_ALPHA
    19 [ 16: FAIL ] getError expected: INVALID_ENUM. Was NO_ERROR : Type should not be able to read as UNSIGNED_INT_24_8
    20 [ 17: PASS ] getError was expected value: NO_ERROR : The combination of format/type should be able to read as RGBA / UNSIGNED_BYTE
    21 [ 18: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RGB / UNSIGNED_BYTE
    22 [ 19: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RGB / UNSIGNED_SHORT_5_6_5
    23 [ 20: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RGBA / UNSIGNED_SHORT_5_5_5_1
    24 [ 21: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RGBA / UNSIGNED_SHORT_4_4_4_4
    25 [ 22: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as ALPHA / UNSIGNED_BYTE
    26 [ 23: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RED / UNSIGNED_BYTE
    27 [ 24: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RGBA_INTEGER / UNSIGNED_INT
    28 [ 25: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : The combination of format/type should not be able to read as RGBA_INTEGER / INT
    29 [ 26: PASS ] getError was expected value: NO_ERROR :
    30 [ 27: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : no pixel pack buffer bound
    31 [ 28: PASS ] successfullyParsed is true
    32 [ FAIL ] 20 failures reported
     4[ PASS ] All tests passed
    335
  • trunk/LayoutTests/webgl/2.0.0/conformance2/reading/read-pixels-pack-parameters-expected.txt

    r256836 r264536  
    22
    33Test: ../../resources/webgl_test_files/conformance2/reading/read-pixels-pack-parameters.html
    4 [ 1: PASS ] context exists
    5 [ 2: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    6 [ 3: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    7 [ 4: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    8 [ 5: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    9 [ 6: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    10 [ 7: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    11 [ 8: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    12 [ 9: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    13 [ 10: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    14 [ 11: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    15 [ 12: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    16 [ 13: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    17 [ 14: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    18 [ 15: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    19 [ 16: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    20 [ 17: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    21 [ 18: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : readPixels should succeed
    22 [ 19: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    23 [ 20: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    24 [ 21: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    25 [ 22: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    26 [ 23: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    27 [ 24: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    28 [ 25: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    29 [ 26: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    30 [ 27: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    31 [ 28: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    32 [ 29: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    33 [ 30: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    34 [ 31: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    35 [ 32: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    36 [ 33: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    37 [ 34: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    38 [ 35: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    39 [ 36: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    40 [ 37: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    41 [ 38: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    42 [ 39: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    43 [ 40: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    44 [ 41: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    45 [ 42: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    46 [ 43: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    47 [ 44: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    48 [ 45: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    49 [ 46: PASS ] getError was expected value: INVALID_OPERATION : Invalid pack params combination
    50 [ 47: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    51 [ 48: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    52 [ 49: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    53 [ 50: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    54 [ 51: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    55 [ 52: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    56 [ 53: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    57 [ 54: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    58 [ 55: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    59 [ 56: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    60 [ 57: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    61 [ 58: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    62 [ 59: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    63 [ 60: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    64 [ 61: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    65 [ 62: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    66 [ 63: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    67 [ 64: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    68 [ 65: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    69 [ 66: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    70 [ 67: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    71 [ 68: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    72 [ 69: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    73 [ 70: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    74 [ 71: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    75 [ 72: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    76 [ 73: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    77 [ 74: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    78 [ 75: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    79 [ 76: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    80 [ 77: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    81 [ 78: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    82 [ 79: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    83 [ 80: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    84 [ 81: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    85 [ 82: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    86 [ 83: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    87 [ 84: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    88 [ 85: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    89 [ 86: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    90 [ 87: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    91 [ 88: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    92 [ 89: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    93 [ 90: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : readPixels should succeed
    94 [ 91: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    95 [ 92: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    96 [ 93: FAIL ] Padding byte 4 of row 0 changed: expected 1, got 2
    97 [ 94: FAIL ] last pixel of row 1: expected [2,200,102,255], got [134,87,234,255]
    98 [ 95: FAIL ] Padding byte 0 of row 1 changed: expected 1, got 134
    99 [ 96: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    100 [ 97: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    101 [ 98: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    102 [ 99: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    103 [ 100: FAIL ] Padding byte 8 of row 0 changed: expected 1, got 2
    104 [ 101: FAIL ] first pixel of row 1: expected [1,2,3,4], got [2,200,102,255]
    105 [ 102: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    106 [ 103: FAIL ] Padding byte 0 of row 1 changed: expected 1, got 134
    107 [ 104: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    108 [ 105: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    109 [ 106: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    110 [ 107: FAIL ] Padding byte 4 of row 0 changed: expected 1, got 249
    111 [ 108: FAIL ] last pixel of row 1: expected [249,102,0,255], got [2,200,102,255]
    112 [ 109: FAIL ] Padding byte 0 of row 1 changed: expected 1, got 2
    113 [ 110: FAIL ] first pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    114 [ 111: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    115 [ 112: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    116 [ 113: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    117 [ 114: FAIL ] Padding byte 8 of row 0 changed: expected 1, got 249
    118 [ 115: FAIL ] first pixel of row 1: expected [1,2,3,4], got [249,102,0,255]
    119 [ 116: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    120 [ 117: FAIL ] Padding byte 0 of row 1 changed: expected 1, got 2
    121 [ 118: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    122 [ 119: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    123 [ 120: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    124 [ 121: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    125 [ 122: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    126 [ 123: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    127 [ 124: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    128 [ 125: FAIL ] Padding byte 4 of row 0 changed: expected 1, got 2
    129 [ 126: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    130 [ 127: FAIL ] last pixel of row 1: expected [1,2,3,4], got [134,87,234,255]
    131 [ 128: FAIL ] Padding byte 0 of row 1 changed: expected 1, got 134
    132 [ 129: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    133 [ 130: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    134 [ 131: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    135 [ 132: FAIL ] Padding byte 4 of row 0 changed: expected 1, got 99
    136 [ 133: FAIL ] last pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    137 [ 134: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    138 [ 135: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    139 [ 136: FAIL ] Padding byte 4 of row 0 changed: expected 1, got 99
    140 [ 137: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    141 [ 138: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    142 [ 139: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    143 [ 140: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    144 [ 141: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    145 [ 142: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    146 [ 143: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    147 [ 144: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    148 [ 145: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    149 [ 146: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    150 [ 147: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    151 [ 148: FAIL ] skipped bytes changed at index 0: expected 1 got 249
    152 [ 149: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    153 [ 150: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    154 [ 151: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    155 [ 152: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    156 [ 153: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    157 [ 154: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    158 [ 155: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    159 [ 156: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    160 [ 157: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    161 [ 158: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    162 [ 159: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    163 [ 160: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    164 [ 161: FAIL ] skipped bytes changed at index 0: expected 1 got 249
    165 [ 162: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    166 [ 163: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    167 [ 164: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    168 [ 165: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    169 [ 166: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    170 [ 167: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    171 [ 168: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    172 [ 169: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    173 [ 170: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    174 [ 171: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    175 [ 172: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    176 [ 173: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    177 [ 174: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    178 [ 175: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    179 [ 176: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    180 [ 177: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    181 [ 178: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    182 [ 179: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    183 [ 180: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    184 [ 181: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    185 [ 182: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    186 [ 183: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    187 [ 184: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    188 [ 185: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    189 [ 186: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    190 [ 187: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    191 [ 188: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    192 [ 189: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    193 [ 190: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    194 [ 191: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    195 [ 192: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    196 [ 193: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    197 [ 194: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    198 [ 195: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    199 [ 196: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    200 [ 197: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    201 [ 198: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    202 [ 199: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    203 [ 200: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    204 [ 201: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    205 [ 202: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    206 [ 203: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    207 [ 204: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    208 [ 205: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    209 [ 206: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    210 [ 207: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    211 [ 208: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    212 [ 209: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    213 [ 210: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    214 [ 211: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    215 [ 212: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    216 [ 213: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    217 [ 214: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    218 [ 215: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    219 [ 216: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    220 [ 217: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    221 [ 218: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    222 [ 219: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    223 [ 220: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    224 [ 221: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    225 [ 222: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    226 [ 223: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    227 [ 224: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    228 [ 225: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    229 [ 226: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    230 [ 227: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    231 [ 228: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    232 [ 229: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    233 [ 230: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    234 [ 231: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    235 [ 232: FAIL ] getError expected: NO_ERROR. Was INVALID_ENUM : readPixels should succeed
    236 [ 233: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    237 [ 234: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    238 [ 235: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    239 [ 236: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    240 [ 237: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    241 [ 238: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    242 [ 239: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    243 [ 240: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    244 [ 241: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    245 [ 242: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    246 [ 243: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    247 [ 244: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    248 [ 245: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    249 [ 246: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    250 [ 247: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    251 [ 248: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    252 [ 249: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    253 [ 250: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    254 [ 251: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    255 [ 252: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    256 [ 253: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    257 [ 254: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    258 [ 255: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    259 [ 256: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    260 [ 257: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    261 [ 258: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    262 [ 259: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    263 [ 260: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    264 [ 261: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    265 [ 262: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    266 [ 263: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    267 [ 264: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    268 [ 265: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    269 [ 266: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    270 [ 267: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    271 [ 268: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    272 [ 269: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    273 [ 270: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    274 [ 271: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    275 [ 272: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    276 [ 273: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    277 [ 274: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    278 [ 275: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    279 [ 276: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    280 [ 277: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    281 [ 278: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    282 [ 279: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    283 [ 280: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    284 [ 281: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    285 [ 282: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    286 [ 283: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    287 [ 284: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    288 [ 285: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    289 [ 286: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    290 [ 287: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    291 [ 288: FAIL ] first pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    292 [ 289: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    293 [ 290: FAIL ] first pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    294 [ 291: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    295 [ 292: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    296 [ 293: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    297 [ 294: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    298 [ 295: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    299 [ 296: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    300 [ 297: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    301 [ 298: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    302 [ 299: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    303 [ 300: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    304 [ 301: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    305 [ 302: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    306 [ 303: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    307 [ 304: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    308 [ 305: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    309 [ 306: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    310 [ 307: FAIL ] first pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    311 [ 308: FAIL ] last pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    312 [ 309: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    313 [ 310: FAIL ] last pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    314 [ 311: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    315 [ 312: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    316 [ 313: FAIL ] first pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    317 [ 314: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    318 [ 315: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    319 [ 316: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    320 [ 317: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    321 [ 318: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    322 [ 319: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    323 [ 320: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    324 [ 321: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    325 [ 322: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    326 [ 323: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    327 [ 324: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    328 [ 325: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    329 [ 326: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    330 [ 327: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    331 [ 328: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    332 [ 329: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    333 [ 330: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    334 [ 331: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    335 [ 332: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    336 [ 333: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    337 [ 334: FAIL ] first pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    338 [ 335: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    339 [ 336: FAIL ] first pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    340 [ 337: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    341 [ 338: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    342 [ 339: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    343 [ 340: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    344 [ 341: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    345 [ 342: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    346 [ 343: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    347 [ 344: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    348 [ 345: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    349 [ 346: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    350 [ 347: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    351 [ 348: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    352 [ 349: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    353 [ 350: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    354 [ 351: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    355 [ 352: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    356 [ 353: FAIL ] first pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    357 [ 354: FAIL ] last pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    358 [ 355: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    359 [ 356: FAIL ] last pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    360 [ 357: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    361 [ 358: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    362 [ 359: FAIL ] first pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    363 [ 360: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    364 [ 361: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    365 [ 362: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    366 [ 363: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    367 [ 364: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    368 [ 365: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    369 [ 366: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    370 [ 367: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    371 [ 368: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    372 [ 369: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    373 [ 370: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    374 [ 371: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    375 [ 372: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    376 [ 373: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    377 [ 374: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    378 [ 375: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    379 [ 376: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    380 [ 377: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    381 [ 378: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    382 [ 379: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    383 [ 380: FAIL ] first pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    384 [ 381: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    385 [ 382: FAIL ] first pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    386 [ 383: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    387 [ 384: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    388 [ 385: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    389 [ 386: FAIL ] last pixel of row 1: expected [249,102,0,255], got [1,2,3,4]
    390 [ 387: FAIL ] last pixel of row 2: expected [2,200,102,255], got [1,2,3,4]
    391 [ 388: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    392 [ 389: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    393 [ 390: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    394 [ 391: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    395 [ 392: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    396 [ 393: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    397 [ 394: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    398 [ 395: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    399 [ 396: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    400 [ 397: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    401 [ 398: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    402 [ 399: FAIL ] first pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    403 [ 400: FAIL ] last pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    404 [ 401: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    405 [ 402: FAIL ] last pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    406 [ 403: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    407 [ 404: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    408 [ 405: FAIL ] first pixel of row 0: expected [134,87,234,255], got [1,2,3,4]
    409 [ 406: FAIL ] first pixel of row 1: expected [99,5,76,255], got [1,2,3,4]
    410 [ 407: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    411 [ 408: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    412 [ 409: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    413 [ 410: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    414 [ 411: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    415 [ 412: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    416 [ 413: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    417 [ 414: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    418 [ 415: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    419 [ 416: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    420 [ 417: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    421 [ 418: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    422 [ 419: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    423 [ 420: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    424 [ 421: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    425 [ 422: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    426 [ 423: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    427 [ 424: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    428 [ 425: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    429 [ 426: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : Invalid pack params combination
    430 [ 427: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_ENUM : buffer too small
    431 [ 428: PASS ] getError was expected value: NO_ERROR : readPixels should succeed
    432 [ 429: FAIL ] first pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    433 [ 430: FAIL ] last pixel of row 0: expected [249,102,0,255], got [1,2,3,4]
    434 [ 431: FAIL ] first pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    435 [ 432: FAIL ] last pixel of row 1: expected [2,200,102,255], got [1,2,3,4]
    436 [ 433: FAIL ] first pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    437 [ 434: FAIL ] last pixel of row 2: expected [134,87,234,255], got [1,2,3,4]
    438 [ 435: PASS ] successfullyParsed is true
    439 [ FAIL ] 363 failures reported
     4[ PASS ] All tests passed
    4405
  • trunk/LayoutTests/webgl/2.0.0/conformance2/textures/misc/tex-unpack-params-expected.txt

    r261413 r264536  
    143143[ 140: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    144144[ 141: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    145 [ 142: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     145[ 142: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    146146[ 143: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    147147[ 144: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    148148[ 145: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    149 [ 146: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     149[ 146: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    150150[ 147: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    151151[ 148: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
     
    419419[ 416: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    420420[ 417: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    421 [ 418: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     421[ 418: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    422422[ 419: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    423423[ 420: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    424424[ 421: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    425 [ 422: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     425[ 422: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    426426[ 423: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    427427[ 424: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    428428[ 425: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    429 [ 426: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     429[ 426: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    430430[ 427: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    431431[ 428: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    432432[ 429: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    433 [ 430: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     433[ 430: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    434434[ 431: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    435435[ 432: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    436436[ 433: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    437 [ 434: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     437[ 434: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    438438[ 435: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    439439[ 436: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    440440[ 437: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    441 [ 438: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     441[ 438: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    442442[ 439: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    443443[ 440: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    444444[ 441: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    445 [ 442: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     445[ 442: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    446446[ 443: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    447447[ 444: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    448448[ 445: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    449 [ 446: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     449[ 446: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    450450[ 447: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    451451[ 448: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    452452[ 449: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    453 [ 450: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     453[ 450: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    454454[ 451: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    455455[ 452: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    456456[ 453: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    457 [ 454: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     457[ 454: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    458458[ 455: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    459459[ 456: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    460460[ 457: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    461 [ 458: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     461[ 458: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    462462[ 459: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    463463[ 460: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    464464[ 461: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    465 [ 462: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     465[ 462: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    466466[ 463: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    467467[ 464: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
     
    477477[ 474: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    478478[ 475: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    479 [ 476: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     479[ 476: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    480480[ 477: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    481481[ 478: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    482482[ 479: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    483 [ 480: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     483[ 480: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    484484[ 481: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    485485[ 482: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    486486[ 483: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    487 [ 484: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     487[ 484: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    488488[ 485: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    489489[ 486: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
     
    510510[ 507: PASS ] getError was expected value: NO_ERROR : unpack param constraints do not apply if no data are uploaded.
    511511[ 508: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    512 [ 509: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    513 [ 510: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    514 [ 511: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    515 [ 512: FAIL ] compare pixels: 35 pixels differ
     512[ 509: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     513[ 510: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     514[ 511: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     515[ 512: PASS ] compare pixels: as expected
    516516[ 513: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    517 [ 514: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    518 [ 515: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    519 [ 516: FAIL ] compare pixels: 12 pixels differ
     517[ 514: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     518[ 515: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     519[ 516: PASS ] compare pixels: as expected
    520520[ 517: PASS ] getError was expected value: NO_ERROR : no error
    521521[ 518: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    522 [ 519: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     522[ 519: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    523523[ 520: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    524524[ 521: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    526526[ 523: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    527527[ 524: FAIL ] compare pixels: 105 pixels differ
    528 [ 525: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     528[ 525: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    529529[ 526: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    530530[ 527: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    533533[ 530: PASS ] getError was expected value: NO_ERROR : no error
    534534[ 531: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    535 [ 532: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    536 [ 533: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    537 [ 534: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    538 [ 535: FAIL ] compare pixels: 35 pixels differ
     535[ 532: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     536[ 533: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     537[ 534: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     538[ 535: PASS ] compare pixels: as expected
    539539[ 536: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    540 [ 537: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    541 [ 538: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    542 [ 539: FAIL ] compare pixels: 12 pixels differ
     540[ 537: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     541[ 538: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     542[ 539: PASS ] compare pixels: as expected
    543543[ 540: PASS ] getError was expected value: NO_ERROR : no error
    544544[ 541: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    545 [ 542: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     545[ 542: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    546546[ 543: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    547547[ 544: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    550550[ 547: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    551551[ 548: FAIL ] compare pixels: 140 pixels differ
    552 [ 549: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     552[ 549: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    553553[ 550: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    554554[ 551: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    558558[ 555: PASS ] getError was expected value: NO_ERROR : no error
    559559[ 556: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    560 [ 557: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    561 [ 558: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    562 [ 559: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    563 [ 560: FAIL ] compare pixels: 42 pixels differ
     560[ 557: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     561[ 558: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     562[ 559: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     563[ 560: PASS ] compare pixels: as expected
    564564[ 561: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    565 [ 562: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    566 [ 563: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    567 [ 564: FAIL ] compare pixels: 16 pixels differ
     565[ 562: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     566[ 563: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     567[ 564: PASS ] compare pixels: as expected
    568568[ 565: PASS ] getError was expected value: NO_ERROR : no error
    569569[ 566: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    570 [ 567: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     570[ 567: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    571571[ 568: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    572572[ 569: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    574574[ 571: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    575575[ 572: FAIL ] compare pixels: 126 pixels differ
    576 [ 573: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     576[ 573: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    577577[ 574: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    578578[ 575: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    581581[ 578: PASS ] getError was expected value: NO_ERROR : no error
    582582[ 579: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    583 [ 580: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    584 [ 581: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    585 [ 582: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    586 [ 583: FAIL ] compare pixels: 40 pixels differ
     583[ 580: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     584[ 581: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     585[ 582: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     586[ 583: PASS ] compare pixels: as expected
    587587[ 584: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    588 [ 585: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    589 [ 586: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    590 [ 587: FAIL ] compare pixels: 15 pixels differ
     588[ 585: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     589[ 586: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     590[ 587: PASS ] compare pixels: as expected
    591591[ 588: PASS ] getError was expected value: NO_ERROR : no error
    592592[ 589: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    593 [ 590: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     593[ 590: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    594594[ 591: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    595595[ 592: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    597597[ 594: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    598598[ 595: FAIL ] compare pixels: 120 pixels differ
    599 [ 596: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     599[ 596: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    600600[ 597: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    601601[ 598: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    604604[ 601: PASS ] getError was expected value: NO_ERROR : no error
    605605[ 602: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    606 [ 603: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    607 [ 604: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    608 [ 605: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    609 [ 606: FAIL ] compare pixels: 90 pixels differ
     606[ 603: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     607[ 604: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     608[ 605: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     609[ 606: PASS ] compare pixels: as expected
    610610[ 607: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    611 [ 608: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    612 [ 609: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    613 [ 610: FAIL ] compare pixels: 48 pixels differ
     611[ 608: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     612[ 609: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     613[ 610: PASS ] compare pixels: as expected
    614614[ 611: PASS ] getError was expected value: NO_ERROR : no error
    615615[ 612: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    616 [ 613: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     616[ 613: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    617617[ 614: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    618618[ 615: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    619619[ 616: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    620620[ 617: FAIL ] compare pixels: 180 pixels differ
    621 [ 618: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     621[ 618: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    622622[ 619: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    623623[ 620: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    625625[ 622: PASS ] getError was expected value: NO_ERROR : no error
    626626[ 623: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    627 [ 624: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    628 [ 625: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     627[ 624: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     628[ 625: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    629629[ 626: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    630 [ 627: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    631 [ 628: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     630[ 627: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     631[ 628: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    632632[ 629: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    633 [ 630: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    634 [ 631: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     633[ 630: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     634[ 631: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    635635[ 632: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    636 [ 633: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    637 [ 634: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     636[ 633: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     637[ 634: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    638638[ 635: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    639 [ 636: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    640 [ 637: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     639[ 636: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     640[ 637: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    641641[ 638: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    642 [ 639: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    643 [ 640: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     642[ 639: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     643[ 640: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    644644[ 641: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    645 [ 642: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    646 [ 643: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     645[ 642: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     646[ 643: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    647647[ 644: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    648 [ 645: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    649 [ 646: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     648[ 645: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     649[ 646: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    650650[ 647: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    651 [ 648: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    652 [ 649: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    653 [ 650: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    654 [ 651: FAIL ] compare pixels: 35 pixels differ
     651[ 648: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     652[ 649: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     653[ 650: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     654[ 651: PASS ] compare pixels: as expected
    655655[ 652: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    656 [ 653: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    657 [ 654: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    658 [ 655: FAIL ] compare pixels: 12 pixels differ
     656[ 653: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     657[ 654: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     658[ 655: PASS ] compare pixels: as expected
    659659[ 656: PASS ] getError was expected value: NO_ERROR : no error
    660660[ 657: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    661 [ 658: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     661[ 658: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    662662[ 659: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    663663[ 660: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    665665[ 662: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    666666[ 663: FAIL ] compare pixels: 105 pixels differ
    667 [ 664: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     667[ 664: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    668668[ 665: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    669669[ 666: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    672672[ 669: PASS ] getError was expected value: NO_ERROR : no error
    673673[ 670: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    674 [ 671: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    675 [ 672: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    676 [ 673: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    677 [ 674: FAIL ] compare pixels: 35 pixels differ
     674[ 671: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     675[ 672: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     676[ 673: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     677[ 674: PASS ] compare pixels: as expected
    678678[ 675: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    679 [ 676: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    680 [ 677: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    681 [ 678: FAIL ] compare pixels: 12 pixels differ
     679[ 676: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     680[ 677: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     681[ 678: PASS ] compare pixels: as expected
    682682[ 679: PASS ] getError was expected value: NO_ERROR : no error
    683683[ 680: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    684 [ 681: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     684[ 681: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    685685[ 682: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    686686[ 683: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    688688[ 685: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    689689[ 686: FAIL ] compare pixels: 105 pixels differ
    690 [ 687: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     690[ 687: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    691691[ 688: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    692692[ 689: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    695695[ 692: PASS ] getError was expected value: NO_ERROR : no error
    696696[ 693: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    697 [ 694: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    698 [ 695: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    699 [ 696: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    700 [ 697: FAIL ] compare pixels: 35 pixels differ
     697[ 694: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     698[ 695: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     699[ 696: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     700[ 697: PASS ] compare pixels: as expected
    701701[ 698: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    702 [ 699: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    703 [ 700: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    704 [ 701: FAIL ] compare pixels: 12 pixels differ
     702[ 699: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     703[ 700: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     704[ 701: PASS ] compare pixels: as expected
    705705[ 702: PASS ] getError was expected value: NO_ERROR : no error
    706706[ 703: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    707 [ 704: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     707[ 704: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    708708[ 705: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    709709[ 706: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    711711[ 708: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    712712[ 709: FAIL ] compare pixels: 105 pixels differ
    713 [ 710: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     713[ 710: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    714714[ 711: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    715715[ 712: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    718718[ 715: PASS ] getError was expected value: NO_ERROR : no error
    719719[ 716: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    720 [ 717: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    721 [ 718: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    722 [ 719: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    723 [ 720: FAIL ] compare pixels: 35 pixels differ
     720[ 717: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     721[ 718: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     722[ 719: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     723[ 720: PASS ] compare pixels: as expected
    724724[ 721: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    725 [ 722: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    726 [ 723: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    727 [ 724: FAIL ] compare pixels: 12 pixels differ
     725[ 722: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     726[ 723: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     727[ 724: PASS ] compare pixels: as expected
    728728[ 725: PASS ] getError was expected value: NO_ERROR : no error
    729729[ 726: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    730 [ 727: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     730[ 727: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    731731[ 728: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    732732[ 729: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    736736[ 733: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    737737[ 734: FAIL ] compare pixels: 175 pixels differ
    738 [ 735: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     738[ 735: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    739739[ 736: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    740740[ 737: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    744744[ 741: PASS ] getError was expected value: NO_ERROR : no error
    745745[ 742: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    746 [ 743: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    747 [ 744: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    748 [ 745: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    749 [ 746: FAIL ] compare pixels: 42 pixels differ
     746[ 743: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     747[ 744: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     748[ 745: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     749[ 746: PASS ] compare pixels: as expected
    750750[ 747: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    751 [ 748: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    752 [ 749: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    753 [ 750: FAIL ] compare pixels: 16 pixels differ
     751[ 748: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     752[ 749: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     753[ 750: PASS ] compare pixels: as expected
    754754[ 751: PASS ] getError was expected value: NO_ERROR : no error
    755755[ 752: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    756 [ 753: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     756[ 753: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    757757[ 754: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    758758[ 755: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    761761[ 758: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    762762[ 759: FAIL ] compare pixels: 168 pixels differ
    763 [ 760: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     763[ 760: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    764764[ 761: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    765765[ 762: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    769769[ 766: PASS ] getError was expected value: NO_ERROR : no error
    770770[ 767: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    771 [ 768: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    772 [ 769: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    773 [ 770: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    774 [ 771: FAIL ] compare pixels: 35 pixels differ
     771[ 768: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     772[ 769: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     773[ 770: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     774[ 771: PASS ] compare pixels: as expected
    775775[ 772: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    776 [ 773: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    777 [ 774: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    778 [ 775: FAIL ] compare pixels: 12 pixels differ
     776[ 773: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     777[ 774: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     778[ 775: PASS ] compare pixels: as expected
    779779[ 776: PASS ] getError was expected value: NO_ERROR : no error
    780780[ 777: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    781 [ 778: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    782 [ 779: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     781[ 778: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     782[ 779: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    783783[ 780: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    784 [ 781: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    785 [ 782: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    786 [ 783: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    787 [ 784: FAIL ] compare pixels: 35 pixels differ
     784[ 781: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     785[ 782: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     786[ 783: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     787[ 784: PASS ] compare pixels: as expected
    788788[ 785: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    789 [ 786: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    790 [ 787: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    791 [ 788: FAIL ] compare pixels: 12 pixels differ
     789[ 786: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     790[ 787: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     791[ 788: PASS ] compare pixels: as expected
    792792[ 789: PASS ] getError was expected value: NO_ERROR : no error
    793793[ 790: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    794 [ 791: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    795 [ 792: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     794[ 791: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     795[ 792: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    796796[ 793: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    797 [ 794: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    798 [ 795: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    799 [ 796: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    800 [ 797: FAIL ] compare pixels: 35 pixels differ
     797[ 794: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     798[ 795: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     799[ 796: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     800[ 797: PASS ] compare pixels: as expected
    801801[ 798: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    802 [ 799: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    803 [ 800: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    804 [ 801: FAIL ] compare pixels: 12 pixels differ
     802[ 799: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     803[ 800: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     804[ 801: PASS ] compare pixels: as expected
    805805[ 802: PASS ] getError was expected value: NO_ERROR : no error
    806806[ 803: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    807 [ 804: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    808 [ 805: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     807[ 804: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     808[ 805: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    809809[ 806: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    810 [ 807: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    811 [ 808: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    812 [ 809: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    813 [ 810: FAIL ] compare pixels: 35 pixels differ
     810[ 807: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     811[ 808: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     812[ 809: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     813[ 810: PASS ] compare pixels: as expected
    814814[ 811: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    815 [ 812: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    816 [ 813: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    817 [ 814: FAIL ] compare pixels: 12 pixels differ
     815[ 812: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     816[ 813: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     817[ 814: PASS ] compare pixels: as expected
    818818[ 815: PASS ] getError was expected value: NO_ERROR : no error
    819819[ 816: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    820 [ 817: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    821 [ 818: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     820[ 817: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     821[ 818: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    822822[ 819: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    823 [ 820: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    824 [ 821: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    825 [ 822: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    826 [ 823: FAIL ] compare pixels: 35 pixels differ
     823[ 820: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     824[ 821: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     825[ 822: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     826[ 823: PASS ] compare pixels: as expected
    827827[ 824: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    828 [ 825: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    829 [ 826: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    830 [ 827: FAIL ] compare pixels: 12 pixels differ
     828[ 825: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     829[ 826: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     830[ 827: PASS ] compare pixels: as expected
    831831[ 828: PASS ] getError was expected value: NO_ERROR : no error
    832832[ 829: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    833 [ 830: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     833[ 830: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    834834[ 831: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    835835[ 832: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    837837[ 834: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    838838[ 835: FAIL ] compare pixels: 105 pixels differ
    839 [ 836: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     839[ 836: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    840840[ 837: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    841841[ 838: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    844844[ 841: PASS ] getError was expected value: NO_ERROR : no error
    845845[ 842: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    846 [ 843: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    847 [ 844: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    848 [ 845: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    849 [ 846: FAIL ] compare pixels: 42 pixels differ
     846[ 843: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     847[ 844: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     848[ 845: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     849[ 846: PASS ] compare pixels: as expected
    850850[ 847: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    851 [ 848: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    852 [ 849: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    853 [ 850: FAIL ] compare pixels: 20 pixels differ
     851[ 848: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     852[ 849: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     853[ 850: PASS ] compare pixels: as expected
    854854[ 851: PASS ] getError was expected value: NO_ERROR : no error
    855855[ 852: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    856 [ 853: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     856[ 853: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    857857[ 854: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    858858[ 855: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    860860[ 857: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    861861[ 858: FAIL ] compare pixels: 126 pixels differ
    862 [ 859: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     862[ 859: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    863863[ 860: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    864864[ 861: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    867867[ 864: PASS ] getError was expected value: NO_ERROR : no error
    868868[ 865: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    869 [ 866: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    870 [ 867: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    871 [ 868: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    872 [ 869: FAIL ] compare pixels: 49 pixels differ
     869[ 866: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     870[ 867: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     871[ 868: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     872[ 869: PASS ] compare pixels: as expected
    873873[ 870: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    874 [ 871: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    875 [ 872: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    876 [ 873: FAIL ] compare pixels: 15 pixels differ
     874[ 871: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     875[ 872: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     876[ 873: PASS ] compare pixels: as expected
    877877[ 874: PASS ] getError was expected value: NO_ERROR : no error
    878878[ 875: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    879 [ 876: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     879[ 876: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    880880[ 877: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    881881[ 878: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    883883[ 880: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    884884[ 881: FAIL ] compare pixels: 147 pixels differ
    885 [ 882: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     885[ 882: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    886886[ 883: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    887887[ 884: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    890890[ 887: PASS ] getError was expected value: NO_ERROR : no error
    891891[ 888: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    892 [ 889: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    893 [ 890: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    894 [ 891: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    895 [ 892: FAIL ] compare pixels: 56 pixels differ
     892[ 889: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     893[ 890: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     894[ 891: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     895[ 892: PASS ] compare pixels: as expected
    896896[ 893: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    897 [ 894: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    898 [ 895: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    899 [ 896: FAIL ] compare pixels: 24 pixels differ
     897[ 894: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     898[ 895: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     899[ 896: PASS ] compare pixels: as expected
    900900[ 897: PASS ] getError was expected value: NO_ERROR : no error
    901901[ 898: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    902 [ 899: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     902[ 899: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    903903[ 900: PASS ] getError was expected value: NO_ERROR : texImage3D with correct buffer size should succeed
    904904[ 901: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    906906[ 903: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    907907[ 904: FAIL ] compare pixels: 168 pixels differ
    908 [ 905: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
     908[ 905: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    909909[ 906: PASS ] getError was expected value: NO_ERROR : texSubImage3D with correct buffer size should succeed
    910910[ 907: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
     
    913913[ 910: PASS ] getError was expected value: NO_ERROR : no error
    914914[ 911: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    915 [ 912: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    916 [ 913: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     915[ 912: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     916[ 913: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    917917[ 914: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    918 [ 915: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    919 [ 916: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     918[ 915: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     919[ 916: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    920920[ 917: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    921 [ 918: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    922 [ 919: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     921[ 918: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     922[ 919: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    923923[ 920: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    924 [ 921: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    925 [ 922: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     924[ 921: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     925[ 922: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    926926[ 923: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    927 [ 924: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    928 [ 925: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     927[ 924: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     928[ 925: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    929929[ 926: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    930 [ 927: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    931 [ 928: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     930[ 927: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     931[ 928: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    932932[ 929: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    933 [ 930: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    934 [ 931: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     933[ 930: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     934[ 931: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    935935[ 932: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    936 [ 933: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    937 [ 934: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     936[ 933: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     937[ 934: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    938938[ 935: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    939 [ 936: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    940 [ 937: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     939[ 936: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     940[ 937: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    941941[ 938: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    942 [ 939: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    943 [ 940: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     942[ 939: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     943[ 940: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    944944[ 941: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    945 [ 942: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    946 [ 943: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     945[ 942: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     946[ 943: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    947947[ 944: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    948 [ 945: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    949 [ 946: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     948[ 945: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     949[ 946: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    950950[ 947: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    951 [ 948: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    952 [ 949: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    953 [ 950: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    954 [ 951: FAIL ] compare pixels: 35 pixels differ
     951[ 948: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     952[ 949: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     953[ 950: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     954[ 951: PASS ] compare pixels: as expected
    955955[ 952: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    956 [ 953: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    957 [ 954: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    958 [ 955: FAIL ] compare pixels: 12 pixels differ
     956[ 953: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     957[ 954: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     958[ 955: PASS ] compare pixels: as expected
    959959[ 956: PASS ] getError was expected value: NO_ERROR : no error
    960960[ 957: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    961 [ 958: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    962 [ 959: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     961[ 958: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     962[ 959: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    963963[ 960: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    964 [ 961: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    965 [ 962: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     964[ 961: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     965[ 962: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    966966[ 963: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    967 [ 964: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    968 [ 965: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     967[ 964: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     968[ 965: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    969969[ 966: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    970 [ 967: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    971 [ 968: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : invalid unpack params combination
     970[ 967: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     971[ 968: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    972972[ 969: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    973 [ 970: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    974 [ 971: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     973[ 970: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     974[ 971: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    975975[ 972: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    976 [ 973: FAIL ] getError expected: INVALID_OPERATION. Was INVALID_VALUE : buffer too small
    977 [ 974: FAIL ] getError expected: NO_ERROR. Was INVALID_VALUE : texImage2D with correct buffer size should succeed
    978 [ 975: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    979 [ 976: FAIL ] compare pixels: 136 pixels differ
     976[ 973: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     977[ 974: PASS ] getError was expected value: NO_ERROR : texImage2D with correct buffer size should succeed
     978[ 975: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     979[ 976: PASS ] compare pixels: as expected
    980980[ 977: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
    981 [ 978: FAIL ] getError expected: NO_ERROR. Was INVALID_OPERATION : texSubImage2D with correct buffer size should succeed
    982 [ 979: FAIL ] getError expected: NO_ERROR. Was INVALID_FRAMEBUFFER_OPERATION : read back texture pixels should succeed
    983 [ 980: FAIL ] compare pixels: 24 pixels differ
     981[ 978: PASS ] getError was expected value: NO_ERROR : texSubImage2D with correct buffer size should succeed
     982[ 979: PASS ] getError was expected value: NO_ERROR : read back texture pixels should succeed
     983[ 980: PASS ] compare pixels: as expected
    984984[ 981: PASS ] getError was expected value: NO_ERROR : no error
    985985[ 982: PASS ] getError was expected value: NO_ERROR : Set up pixel store parameters should succeed
    986 [ 983: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : buffer too small
    987 [ 984: FAIL ] getError expected: INVALID_OPERATION. Was NO_ERROR : invalid unpack params combination
     986[ 983: PASS ] getError was expected value: INVALID_OPERATION : buffer too small
     987[ 984: PASS ] getError was expected value: INVALID_OPERATION : invalid unpack params combination
    988988[ 985: PASS ] successfullyParsed is true
    989 [ FAIL ] 451 failures reported
     989[ FAIL ] 206 failures reported
    990990
  • trunk/Source/ThirdParty/ANGLE/ChangeLog

    r264238 r264536  
     12020-07-17  Kenneth Russell  <kbr@chromium.org>
     2
     3        [WebGL2] ReadPixels updates
     4        https://bugs.webkit.org/show_bug.cgi?id=209516
     5
     6        Reviewed by Dean Jackson.
     7
     8        Add workaround for OpenGL driver bug on macOS where
     9        GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored.
     10
     11        Add WebGL 2.0-specific validation constraints for pixel pack and
     12        unpack parameters.
     13
     14        These changes are being upstreamed to ANGLE in
     15        http://crbug.com/angleproject/4849 .
     16
     17        * include/platform/FeaturesGL.h:
     18        * src/libANGLE/ErrorStrings.h:
     19        * src/libANGLE/renderer/gl/FramebufferGL.cpp:
     20        (rx::FramebufferGL::readPixels):
     21        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
     22        (rx::nativegl_gl::InitializeFeatures):
     23        * src/libANGLE/validationES.cpp:
     24        (gl::ValidatePixelPack):
     25        * src/libANGLE/validationES3.cpp:
     26        (gl::ValidateES3TexImageParametersBase):
     27
    1282020-07-10  Kenneth Russell  <kbr@chromium.org>
    229
  • trunk/Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h

    r264238 r264536  
    442442        "CopyTexImage2D spuriously returns errors on iOS when copying from renderbuffers.",
    443443        &members, "https://anglebug.com/4674"};
     444
     445    Feature emulatePackSkipRowsAndPackSkipPixels = {
     446        "emulate_pack_skip_rows_and_pack_skip_pixels", FeatureCategory::OpenGLWorkarounds,
     447        "GL_PACK_SKIP_ROWS and GL_PACK_SKIP_PIXELS are ignored in Apple's OpenGL driver.",
     448        &members, "https://anglebug.com/4849"};
    444449};
    445450
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h

    r262036 r264536  
    252252MSG kInvalidName = "Invalid name.";
    253253MSG kInvalidNameCharacters = "Name contains invalid characters.";
     254MSG kInvalidPackParametersForWebGL = "Invalid combination of pack parameters for WebGL.";
    254255MSG kInvalidPname = "Invalid pname.";
    255256MSG kInvalidPointerQuery = "Invalid pointer query.";
     
    319320MSG kInvalidUniformLocation = "Invalid uniform location";
    320321MSG kInvalidUnpackAlignment = "Unpack alignment must be 1, 2, 4 or 8.";
     322MSG kInvalidUnpackParametersForWebGL = "Invalid combination of unpack parameters for WebGL.";
    321323MSG kInvalidVaryingLocation = "Location exceeds max varying.";
    322324MSG kInvalidVertexArray = "Vertex array does not exist.";
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/FramebufferGL.cpp

    r262036 r264536  
    681681        packState.rowLength && !GetImplAs<ContextGL>(context)->getNativeExtensions().packSubimage;
    682682
    683     if (cannotSetDesiredRowLength || useOverlappingRowsWorkaround)
     683    bool usePackSkipWorkaround = features.emulatePackSkipRowsAndPackSkipPixels.enabled &&
     684            (packState.skipRows != 0 || packState.skipPixels != 0);
     685
     686    if (cannotSetDesiredRowLength || useOverlappingRowsWorkaround || usePackSkipWorkaround)
    684687    {
    685688        return readPixelsRowByRow(context, clippedArea, format, readFormat, readType, packState,
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp

    r264238 r264536  
    17281728        features, emulateCopyTexImage2DFromRenderbuffers,
    17291729        IsApple() && functions->standard == STANDARD_GL_ES && !(isAMD && IsWindows()));
     1730
     1731    // anglebug.com/4849
     1732    // This workaround is definitely needed on Intel and AMD GPUs. To
     1733    // determine whether it's needed on iOS and Apple Silicon, the
     1734    // workaround's being restricted to existing desktop GPUs.
     1735    ANGLE_FEATURE_CONDITION(features, emulatePackSkipRowsAndPackSkipPixels,
     1736                            IsApple() && (isAMD || isIntel || isNvidia));
    17301737}
    17311738
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp

    r262036 r264536  
    57305730    }
    57315731
     5732    if (context->getExtensions().webglCompatibility)
     5733    {
     5734        // WebGL 2.0 disallows the scenario:
     5735        //   GL_PACK_SKIP_PIXELS + width > DataStoreWidth
     5736        // where:
     5737        //   DataStoreWidth = (GL_PACK_ROW_LENGTH ? GL_PACK_ROW_LENGTH : width)
     5738        // Since these two pack parameters can only be set to non-zero values
     5739        // on WebGL 2.0 contexts, verify them for all WebGL contexts.
     5740        GLint dataStoreWidth = pack.rowLength ? pack.rowLength : width;
     5741        if (pack.skipPixels + width > dataStoreWidth)
     5742        {
     5743            context->validationError(GL_INVALID_OPERATION, kInvalidPackParametersForWebGL);
     5744            return false;
     5745        }
     5746    }
     5747
    57325748    return true;
    57335749}
  • trunk/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp

    r262036 r264536  
    671671    }
    672672
     673    if (context->getExtensions().webglCompatibility)
     674    {
     675        // Define:
     676        //   DataStoreWidth  = (GL_UNPACK_ROW_LENGTH ? GL_UNPACK_ROW_LENGTH : width)
     677        //   DataStoreHeight = (GL_UNPACK_IMAGE_HEIGHT ? GL_UNPACK_IMAGE_HEIGHT : height)
     678        //
     679        // WebGL 2.0 imposes the following additional constraints:
     680        //
     681        // 1) texImage2D and texSubImage2D generate INVALID_OPERATION if:
     682        //      GL_UNPACK_SKIP_PIXELS + width > DataStoreWidth
     683        //    except for texImage2D if no GL_PIXEL_UNPACK_BUFFER is
     684        //    bound and _pixels_ is null.
     685        //
     686        // 2) texImage3D and texSubImage3D generate INVALID_OPERATION if:
     687        //      GL_UNPACK_SKIP_PIXELS + width > DataStoreWidth
     688        //      GL_UNPACK_SKIP_ROWS + height > DataStoreHeight
     689        //    except for texImage3D if no GL_PIXEL_UNPACK_BUFFER is
     690        //    bound and _pixels_ is null.
     691        if (!pixelUnpackBuffer && !pixels)
     692        {
     693            // Exception case for texImage2D or texImage3D, above.
     694            // The validation above ensures null pixels have been rejected for texSubImage.
     695            ASSERT(!isSubImage);
     696        }
     697        else
     698        {
     699            const auto &unpack = context->getState().getUnpackState();
     700            GLint dataStoreWidth = unpack.rowLength ? unpack.rowLength : width;
     701            if (unpack.skipPixels + width > dataStoreWidth)
     702            {
     703                context->validationError(GL_INVALID_OPERATION, kInvalidUnpackParametersForWebGL);
     704                return false;
     705            }
     706            if (target == TextureTarget::_3D || target == TextureTarget::_2DArray)
     707            {
     708                GLint dataStoreHeight = unpack.imageHeight ? unpack.imageHeight : height;
     709                if (unpack.skipRows + height > dataStoreHeight)
     710                {
     711                    context->validationError(GL_INVALID_OPERATION, kInvalidUnpackParametersForWebGL);
     712                    return false;
     713                }
     714            }
     715        }
     716    }
     717
    673718    return true;
    674719}
  • trunk/Source/WebCore/ChangeLog

    r264535 r264536  
     12020-07-17  Kenneth Russell  <kbr@chromium.org>
     2
     3        [WebGL2] ReadPixels updates
     4        https://bugs.webkit.org/show_bug.cgi?id=209516
     5
     6        Reviewed by Dean Jackson.
     7
     8        Upgrade readPixels to WebGL 2.0 functionality.
     9
     10        Handle both WebGL 2.0 pack/unpack parameters correctly. Fix
     11        preexisting bugs in texture uploads from pixel unpack buffers.
     12        Remove entry points from GraphicsContextGL that will never be used
     13        by the WebGL 2.0 implementation.
     14
     15        Covered by existing WebGL 2.0 conformance tests.
     16
     17        * html/canvas/WebGL2RenderingContext.cpp:
     18        (WebCore::WebGL2RenderingContext::initializeNewContext):
     19        (WebCore::WebGL2RenderingContext::sliceArrayBufferView):
     20        (WebCore::WebGL2RenderingContext::pixelStorei):
     21        (WebCore::WebGL2RenderingContext::texImage2D):
     22        (WebCore::WebGL2RenderingContext::texImage3D):
     23        (WebCore::WebGL2RenderingContext::texSubImage2D):
     24        (WebCore::WebGL2RenderingContext::texSubImage3D):
     25        (WebCore::WebGL2RenderingContext::getPackPixelStoreParams const):
     26        (WebCore::WebGL2RenderingContext::getUnpackPixelStoreParams const):
     27        (WebCore::WebGL2RenderingContext::readPixels):
     28        * html/canvas/WebGL2RenderingContext.h:
     29        * html/canvas/WebGLRenderingContextBase.cpp:
     30        (WebCore::WebGLRenderingContextBase::readPixels):
     31        * html/canvas/WebGLRenderingContextBase.h:
     32        * platform/graphics/ExtensionsGL.h:
     33        * platform/graphics/GraphicsContextGL.h:
     34        * platform/graphics/angle/ExtensionsGLANGLE.cpp:
     35        (WebCore::ExtensionsGLANGLE::readnPixelsRobustANGLE):
     36        * platform/graphics/angle/ExtensionsGLANGLE.h:
     37        * platform/graphics/angle/GraphicsContextGLANGLE.cpp:
     38        (WebCore::GraphicsContextGLOpenGL::readRenderingResults):
     39        (WebCore::GraphicsContextGLOpenGL::texImage3D): Deleted.
     40        (WebCore::GraphicsContextGLOpenGL::texSubImage3D): Deleted.
     41        * platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp:
     42        (WebCore::ExtensionsGLOpenGLCommon::readnPixelsRobustANGLE):
     43        * platform/graphics/opengl/ExtensionsGLOpenGLCommon.h:
     44        * platform/graphics/opengl/GraphicsContextGLOpenGL.h:
     45        * platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp:
     46        (WebCore::GraphicsContextGLOpenGL::texImage3D): Deleted.
     47        (WebCore::GraphicsContextGLOpenGL::texSubImage3D): Deleted.
     48
    1492020-07-17  James Darpinian  <jdarpinian@chromium.org>
    250
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp

    r264535 r264536  
    146146    m_uniformBufferOffsetAlignment = getIntParameter(GraphicsContextGL::UNIFORM_BUFFER_OFFSET_ALIGNMENT);
    147147
    148     // NEEDS_PORT: set up pack parameters: row length, skip pixels, skip rows
    149 
     148    m_packRowLength = 0;
     149    m_packSkipPixels = 0;
     150    m_packSkipRows = 0;
    150151    m_unpackRowLength = 0;
    151152    m_unpackImageHeight = 0;
     
    457458    Checked<GCGLuint, RecordOverflow> checkedByteSrcOffset = checkedSrcOffset * checkedElementSize;
    458459    Checked<GCGLuint, RecordOverflow> checkedLength(length);
     460    if (!checkedLength.unsafeGet()) {
     461        // Default to the remainder of the buffer.
     462        checkedLength = data.byteLength();
     463        checkedLength /= elementSize;
     464        checkedLength -= srcOffset;
     465    }
    459466    Checked<GCGLuint, RecordOverflow> checkedByteLength = checkedLength * checkedElementSize;
    460467
     
    478485        return;
    479486    }
    480     // FIXME: NEEDS_PORT
    481     // Hook up WebGL 2.0 pack parameters.
    482487    switch (pname) {
     488    case GraphicsContextGL::PACK_ROW_LENGTH:
     489        m_packRowLength = param;
     490        break;
     491    case GraphicsContextGL::PACK_SKIP_PIXELS:
     492        m_packSkipPixels = param;
     493        break;
     494    case GraphicsContextGL::PACK_SKIP_ROWS:
     495        m_packSkipRows = param;
     496        break;
    483497    case GraphicsContextGL::UNPACK_ROW_LENGTH:
    484498        m_unpackRowLength = param;
     
    10871101        return;
    10881102
    1089     m_context->texImage2D(target, level, internalformat, width, height, border, format, type, reinterpret_cast<void*>(offset));
     1103    m_context->getExtensions().texImage2DRobustANGLE(target, level, internalformat, width, height, border, format, type, 0, reinterpret_cast<void*>(offset));
    10901104}
    10911105
     
    11311145        return;
    11321146
    1133     m_context->texImage3D(target, level, internalformat, width, height, depth, border, format, type, reinterpret_cast<void*>(offset));
     1147    m_context->getExtensions().texImage3DRobustANGLE(target, level, internalformat, width, height, depth, border, format, type, 0, reinterpret_cast<void*>(offset));
    11341148}
    11351149
     
    12171231        return;
    12181232
    1219     m_context->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, reinterpret_cast<void*>(offset));
     1233    m_context->getExtensions().texSubImage2DRobustANGLE(target, level, xoffset, yoffset, width, height, format, type, 0, reinterpret_cast<void*>(offset));
    12201234}
    12211235
     
    12611275        return;
    12621276
    1263     m_context->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, offset);
     1277    m_context->getExtensions().texSubImage3DRobustANGLE(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, 0, reinterpret_cast<void*>(offset));
    12641278}
    12651279
     
    29392953{
    29402954    return m_maxTransformFeedbackSeparateAttribs;
     2955}
     2956
     2957GraphicsContextGLOpenGL::PixelStoreParams WebGL2RenderingContext::getPackPixelStoreParams() const
     2958{
     2959    GraphicsContextGLOpenGL::PixelStoreParams params;
     2960    params.alignment = m_packAlignment;
     2961    params.rowLength = m_packRowLength;
     2962    params.skipPixels = m_packSkipPixels;
     2963    params.skipRows = m_packSkipRows;
     2964    return params;
     2965}
     2966
     2967GraphicsContextGLOpenGL::PixelStoreParams WebGL2RenderingContext::getUnpackPixelStoreParams(TexImageDimension dimension) const
     2968{
     2969    GraphicsContextGLOpenGL::PixelStoreParams params;
     2970    params.alignment = m_unpackAlignment;
     2971    params.rowLength = m_unpackRowLength;
     2972    params.skipPixels = m_unpackSkipPixels;
     2973    params.skipRows = m_unpackSkipRows;
     2974    if (dimension == TexImageDimension::Tex3D) {
     2975        params.imageHeight = m_unpackImageHeight;
     2976        params.skipImages = m_unpackSkipImages;
     2977    }
     2978    return params;
    29412979}
    29422980
     
    33403378}
    33413379
     3380void WebGL2RenderingContext::readPixels(GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, ArrayBufferView& pixels)
     3381{
     3382    if (isContextLostOrPending())
     3383        return;
     3384    if (m_boundPixelPackBuffer) {
     3385        synthesizeGLError(
     3386            GraphicsContextGL::INVALID_OPERATION, "readPixels",
     3387            "a buffer is bound to PIXEL_PACK_BUFFER");
     3388        return;
     3389    }
     3390    WebGLRenderingContextBase::readPixels(x, y, width, height, format, type, pixels);
     3391}
     3392
    33423393void WebGL2RenderingContext::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset)
    33433394{
    3344     UNUSED_PARAM(x);
    3345     UNUSED_PARAM(y);
    3346     UNUSED_PARAM(width);
    3347     UNUSED_PARAM(height);
    3348     UNUSED_PARAM(format);
    3349     UNUSED_PARAM(type);
    3350     UNUSED_PARAM(offset);
    3351 
    3352     LOG(WebGL, "[[ NOT IMPLEMENTED ]] readPixels()");
     3395    if (isContextLostOrPending())
     3396        return;
     3397    if (!m_boundPixelPackBuffer) {
     3398        synthesizeGLError(
     3399            GraphicsContextGL::INVALID_OPERATION, "readPixels",
     3400            "no buffer is bound to PIXEL_PACK_BUFFER");
     3401        return;
     3402    }
     3403    if (offset < 0) {
     3404        synthesizeGLError(GraphicsContextGL::INVALID_VALUE, "readPixels", "negative offset");
     3405        return;
     3406    }
     3407    if (type == GraphicsContextGL::UNSIGNED_INT_24_8) {
     3408        // This type is always invalid for readbacks in WebGL.
     3409        synthesizeGLError(GraphicsContextGL::INVALID_ENUM, "readPixels", "invalid type UNSIGNED_INT_24_8");
     3410        return;
     3411    }
     3412
     3413    // Due to WebGL's same-origin restrictions, it is not possible to
     3414    // taint the origin using the WebGL API.
     3415    ASSERT(canvasBase().originClean());
     3416
     3417    clearIfComposited();
     3418
     3419    GLsizei length, columns, rows;
     3420    m_context->getExtensions().readnPixelsRobustANGLE(x, y, width, height, format, type, 0, &length, &columns, &rows, reinterpret_cast<uint8_t*>(offset), true);
    33533421}
    33543422
    33553423void WebGL2RenderingContext::readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView& dstData, GLuint dstOffset)
    33563424{
    3357     UNUSED_PARAM(x);
    3358     UNUSED_PARAM(y);
    3359     UNUSED_PARAM(width);
    3360     UNUSED_PARAM(height);
    3361     UNUSED_PARAM(format);
    3362     UNUSED_PARAM(type);
    3363     UNUSED_PARAM(dstData);
    3364     UNUSED_PARAM(dstOffset);
    3365 
    3366     LOG(WebGL, "[[ NOT IMPLEMENTED ]] readPixels(ArrayBufferView)");
     3425    if (isContextLostOrPending())
     3426        return;
     3427    if (m_boundPixelPackBuffer) {
     3428        synthesizeGLError(
     3429            GraphicsContextGL::INVALID_OPERATION, "readPixels",
     3430            "a buffer is bound to PIXEL_PACK_BUFFER");
     3431        return;
     3432    }
     3433    auto slice = sliceArrayBufferView("readPixels", dstData, dstOffset, 0);
     3434    if (!slice)
     3435        return;
     3436    WebGLRenderingContextBase::readPixels(x, y, width, height, format, type, *slice);
    33673437}
    33683438
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.h

    r264377 r264536  
    251251    WebGLAny getParameter(GCGLenum pname) final;
    252252
    253     using WebGLRenderingContextBase::readPixels;
     253    // Must override the WebGL 1.0 signature in order to add extra validation.
     254    void readPixels(GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, ArrayBufferView& pixels) override;
    254255    void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLintptr offset);
    255256    void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView& dstData, GLuint dstOffset);
     
    258259    void hint(GCGLenum target, GCGLenum mode) final;
    259260    GCGLuint maxTransformFeedbackSeparateAttribs() const;
     261
     262    GraphicsContextGLOpenGL::PixelStoreParams getPackPixelStoreParams() const override;
     263    GraphicsContextGLOpenGL::PixelStoreParams getUnpackPixelStoreParams(TexImageDimension) const override;
    260264
    261265private:
     
    330334    Vector<RefPtr<WebGLSampler>> m_boundSamplers;
    331335
     336    GCGLint m_packRowLength { 0 };
     337    GCGLint m_packSkipPixels { 0 };
     338    GCGLint m_packSkipRows { 0 };
    332339    GCGLint m_unpackSkipPixels { 0 };
    333340    GCGLint m_unpackSkipRows { 0 };
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp

    r264509 r264536  
    42234223    unsigned padding = 0;
    42244224    if (!m_isRobustnessEXTSupported) {
    4225         GCGLenum error = m_context->computeImageSizeInBytes(format, type, width, height, 1, getPackPixelStoreParams(), &totalBytesRequired, &padding, nullptr); // NEEDS_PORT
     4225        GCGLenum error = m_context->computeImageSizeInBytes(format, type, width, height, 1, getPackPixelStoreParams(), &totalBytesRequired, &padding, nullptr);
    42264226        if (error != GraphicsContextGL::NO_ERROR) {
    42274227            synthesizeGLError(error, "readPixels", "invalid dimensions");
     
    42414241        GLsizei length, columns, rows;
    42424242        m_context->makeContextCurrent();
    4243         m_context->getExtensions().readnPixelsRobustANGLE(x, y, width, height, format, type, pixels.byteLength(), &length, &columns, &rows, data);
     4243        m_context->getExtensions().readnPixelsRobustANGLE(x, y, width, height, format, type, pixels.byteLength(), &length, &columns, &rows, data, false);
    42444244#else
    42454245    if (m_isRobustnessEXTSupported)
  • trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h

    r264535 r264536  
    241241#endif
    242242    void polygonOffset(GCGLfloat factor, GCGLfloat units);
    243     void readPixels(GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, ArrayBufferView& pixels);
     243    // This must be virtual so more validation can be added in WebGL 2.0.
     244    virtual void readPixels(GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, ArrayBufferView& pixels);
    244245    void releaseShaderCompiler();
    245246    virtual void renderbufferStorage(GCGLenum target, GCGLenum internalformat, GCGLsizei width, GCGLsizei height) = 0;
     
    10441045    template <typename T> unsigned getMaxIndex(const RefPtr<JSC::ArrayBuffer> elementArrayBuffer, GCGLintptr uoffset, GCGLsizei n);
    10451046
     1047    bool validateArrayBufferType(const char* functionName, GCGLenum type, Optional<JSC::TypedArrayType>);
     1048
    10461049private:
    10471050    void scheduleTaskToDispatchContextLostEvent();
     
    10491052    void maybeRestoreContext();
    10501053
    1051     bool validateArrayBufferType(const char* functionName, GCGLenum type, Optional<JSC::TypedArrayType>);
    10521054    void registerWithWebGLStateTracker();
    10531055    void checkForContextLossHandling();
  • trunk/Source/WebCore/platform/graphics/ExtensionsGL.h

    r259139 r264536  
    360360
    361361    virtual void getPointervRobustANGLERobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, void **params) = 0;
    362     virtual void readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data) = 0;
     362    virtual void readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data, bool readingToPixelBufferObject) = 0;
    363363    virtual void getnUniformfvRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params) = 0;
    364364    virtual void getnUniformivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params) = 0;
  • trunk/Source/WebCore/platform/graphics/GraphicsContextGL.h

    r264535 r264536  
    11571157    virtual void texStorage3D(GCGLenum target, GCGLsizei levels, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth) = 0;
    11581158
    1159     virtual void texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, GCGLintptr pboOffset) = 0;
    1160     virtual void texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* pixels) = 0;
    1161     virtual void texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset) = 0;
    1162 
    1163     virtual void texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, GCGLintptr pboOffset) = 0;
    1164     virtual void texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset) = 0;
     1159    // tex{Sub}Image3D are supported only via ANGLE_robust_client_memory.
    11651160
    11661161    virtual void copyTexSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height) = 0;
     
    12481243    virtual void uniformBlockBinding(PlatformGLObject program, GCGLuint uniformBlockIndex, GCGLuint uniformBlockBinding) = 0;
    12491244
    1250     virtual void texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLintptr pboOffset) = 0;
    1251     virtual void texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset) = 0;
     1245    // texSubImage2D with pixel pack buffer, and srcData+offset, are
     1246    // supported only via ANGLE_robust_client_memory.
    12521247
    12531248    virtual void compressedTexImage2D(GCGLenum target, GCGLint level, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, GCGLint border, GCGLsizei imageSize, GCGLintptr offset) = 0;
  • trunk/Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.cpp

    r263281 r264536  
    580580#endif
    581581
    582 void ExtensionsGLANGLE::readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data)
     582void ExtensionsGLANGLE::readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data, bool readingToPixelBufferObject)
    583583{
    584584    m_context->makeContextCurrent();
     
    608608
    609609#if PLATFORM(MAC)
    610     if (!attrs.alpha && (format == GraphicsContextGL::RGBA || format == GraphicsContextGL::BGRA) && (state.boundReadFBO == m_context->m_fbo || (attrs.antialias && state.boundReadFBO == m_context->m_multisampleFBO)))
     610    if (!readingToPixelBufferObject && !attrs.alpha && (format == GraphicsContextGL::RGBA || format == GraphicsContextGL::BGRA) && (state.boundReadFBO == m_context->m_fbo || (attrs.antialias && state.boundReadFBO == m_context->m_multisampleFBO)))
    611611        wipeAlphaChannelFromPixels(width, height, static_cast<unsigned char*>(data));
     612#else
     613    UNUSED_PARAM(readingToPixelBufferObject);
    612614#endif
    613615}
  • trunk/Source/WebCore/platform/graphics/angle/ExtensionsGLANGLE.h

    r261769 r264536  
    131131
    132132    void getPointervRobustANGLERobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, void **params) override;
    133     void readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data) override;
     133    void readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data, bool readingToPixelBufferObject) override;
    134134    void getnUniformfvRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params) override;
    135135    void getnUniformivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params) override;
  • trunk/Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp

    r264535 r264536  
    602602        mustRestorePackAlignment = true;
    603603    }
     604    GLint packRowLength = 0;
     605    GLint packSkipRows = 0;
     606    GLint packSkipPixels = 0;
     607    ScopedResetBufferBinding scopedPixelPackBufferReset(m_isForWebGL2, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_PACK_BUFFER);
     608    if (m_isForWebGL2) {
     609        gl::GetIntegerv(GL_PACK_ROW_LENGTH, &packRowLength);
     610        if (packRowLength > 0)
     611            gl::PixelStorei(GL_PACK_ROW_LENGTH, 0);
     612        gl::GetIntegerv(GL_PACK_SKIP_ROWS, &packSkipRows);
     613        if (packSkipRows > 0)
     614            gl::PixelStorei(GL_PACK_SKIP_ROWS, 0);
     615        gl::GetIntegerv(GL_PACK_SKIP_PIXELS, &packSkipPixels);
     616        if (packSkipPixels > 0)
     617            gl::PixelStorei(GL_PACK_SKIP_PIXELS, 0);
     618    }
    604619
    605620    readPixelsAndConvertToBGRAIfNecessary(0, 0, m_currentWidth, m_currentHeight, pixels);
     
    607622    if (mustRestorePackAlignment)
    608623        gl::PixelStorei(GL_PACK_ALIGNMENT, packAlignment);
     624    if (packRowLength > 0)
     625        gl::PixelStorei(GL_PACK_ROW_LENGTH, packRowLength);
     626    if (packSkipRows > 0)
     627        gl::PixelStorei(GL_PACK_SKIP_ROWS, packSkipRows);
     628    if (packSkipPixels > 0)
     629        gl::PixelStorei(GL_PACK_SKIP_PIXELS, packSkipPixels);
    609630
    610631    if (mustRestoreFBO)
     
    21462167}
    21472168
    2148 void GraphicsContextGLOpenGL::texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, GCGLintptr pboOffset)
    2149 {
    2150     UNUSED_PARAM(target);
    2151     UNUSED_PARAM(level);
    2152     UNUSED_PARAM(internalformat);
    2153     UNUSED_PARAM(width);
    2154     UNUSED_PARAM(height);
    2155     UNUSED_PARAM(depth);
    2156     UNUSED_PARAM(border);
    2157     UNUSED_PARAM(format);
    2158     UNUSED_PARAM(type);
    2159     UNUSED_PARAM(pboOffset);
    2160 }
    2161 
    2162 void GraphicsContextGLOpenGL::texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* pixels)
    2163 {
    2164     UNUSED_PARAM(target);
    2165     UNUSED_PARAM(level);
    2166     UNUSED_PARAM(internalformat);
    2167     UNUSED_PARAM(width);
    2168     UNUSED_PARAM(height);
    2169     UNUSED_PARAM(depth);
    2170     UNUSED_PARAM(border);
    2171     UNUSED_PARAM(format);
    2172     UNUSED_PARAM(type);
    2173     UNUSED_PARAM(pixels);
    2174 }
    2175 
    2176 void GraphicsContextGLOpenGL::texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset)
    2177 {
    2178     UNUSED_PARAM(target);
    2179     UNUSED_PARAM(level);
    2180     UNUSED_PARAM(internalformat);
    2181     UNUSED_PARAM(width);
    2182     UNUSED_PARAM(height);
    2183     UNUSED_PARAM(depth);
    2184     UNUSED_PARAM(border);
    2185     UNUSED_PARAM(format);
    2186     UNUSED_PARAM(type);
    2187     UNUSED_PARAM(srcData);
    2188     UNUSED_PARAM(srcOffset);
    2189 }
    2190 
    2191 void GraphicsContextGLOpenGL::texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, GCGLintptr pboOffset)
    2192 {
    2193     UNUSED_PARAM(target);
    2194     UNUSED_PARAM(level);
    2195     UNUSED_PARAM(xoffset);
    2196     UNUSED_PARAM(yoffset);
    2197     UNUSED_PARAM(zoffset);
    2198     UNUSED_PARAM(width);
    2199     UNUSED_PARAM(height);
    2200     UNUSED_PARAM(depth);
    2201     UNUSED_PARAM(format);
    2202     UNUSED_PARAM(type);
    2203     UNUSED_PARAM(pboOffset);
    2204 }
    2205 
    2206 void GraphicsContextGLOpenGL::texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset)
    2207 {
    2208     UNUSED_PARAM(target);
    2209     UNUSED_PARAM(level);
    2210     UNUSED_PARAM(xoffset);
    2211     UNUSED_PARAM(yoffset);
    2212     UNUSED_PARAM(zoffset);
    2213     UNUSED_PARAM(width);
    2214     UNUSED_PARAM(height);
    2215     UNUSED_PARAM(depth);
    2216     UNUSED_PARAM(format);
    2217     UNUSED_PARAM(type);
    2218     UNUSED_PARAM(srcData);
    2219     UNUSED_PARAM(srcOffset);
    2220 }
    2221 
    22222169void GraphicsContextGLOpenGL::copyTexSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height)
    22232170{
     
    25242471    gl::GetUniformIndices(program, cstr.size(), cstr.data(), result.data());
    25252472    return result;
    2526 }
    2527 
    2528 void GraphicsContextGLOpenGL::texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLintptr pboOffset)
    2529 {
    2530     UNUSED_PARAM(target);
    2531     UNUSED_PARAM(level);
    2532     UNUSED_PARAM(xoffset);
    2533     UNUSED_PARAM(yoffset);
    2534     UNUSED_PARAM(width);
    2535     UNUSED_PARAM(height);
    2536     UNUSED_PARAM(format);
    2537     UNUSED_PARAM(type);
    2538     UNUSED_PARAM(pboOffset);
    2539 }
    2540 
    2541 void GraphicsContextGLOpenGL::texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset)
    2542 {
    2543     UNUSED_PARAM(target);
    2544     UNUSED_PARAM(level);
    2545     UNUSED_PARAM(xoffset);
    2546     UNUSED_PARAM(yoffset);
    2547     UNUSED_PARAM(width);
    2548     UNUSED_PARAM(height);
    2549     UNUSED_PARAM(format);
    2550     UNUSED_PARAM(type);
    2551     UNUSED_PARAM(srcData);
    2552     UNUSED_PARAM(srcOffset);
    25532473}
    25542474
  • trunk/Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.cpp

    r259139 r264536  
    503503}
    504504
    505 void ExtensionsGLOpenGLCommon::readnPixelsRobustANGLE(int, int, GCGLsizei, GCGLsizei, GCGLenum, GCGLenum, GCGLsizei, GCGLsizei *, GCGLsizei *, GCGLsizei *, void *)
     505void ExtensionsGLOpenGLCommon::readnPixelsRobustANGLE(int, int, GCGLsizei, GCGLsizei, GCGLenum, GCGLenum, GCGLsizei, GCGLsizei *, GCGLsizei *, GCGLsizei *, void *, bool)
    506506{
    507507    m_context->synthesizeGLError(GL_INVALID_OPERATION);
  • trunk/Source/WebCore/platform/graphics/opengl/ExtensionsGLOpenGLCommon.h

    r259139 r264536  
    122122
    123123    void getPointervRobustANGLERobustANGLE(GCGLenum pname, GCGLsizei bufSize, GCGLsizei *length, void **params) override;
    124     void readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data) override;
     124    void readnPixelsRobustANGLE(int x, int y, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLsizei bufSize, GCGLsizei *length, GCGLsizei *columns, GCGLsizei *rows, void *data, bool readingToPixelBufferObject) override;
    125125    void getnUniformfvRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLfloat *params) override;
    126126    void getnUniformivRobustANGLE(GCGLuint program, int location, GCGLsizei bufSize, GCGLsizei *length, GCGLint *params) override;
  • trunk/Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.h

    r264535 r264536  
    408408    void texStorage3D(GCGLenum target, GCGLsizei levels, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth) final;
    409409
    410     void texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, GCGLintptr pboOffset) final;
    411     void texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* pixels) final;
    412     void texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset) final;
    413 
    414     void texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, GCGLintptr pboOffset) final;
    415     void texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset) final;
    416 
    417410    void copyTexSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height) final;
    418411
     
    497490    String getActiveUniformBlockName(PlatformGLObject program, GCGLuint uniformBlockIndex) final;
    498491    void uniformBlockBinding(PlatformGLObject program, GCGLuint uniformBlockIndex, GCGLuint uniformBlockBinding) final;
    499 
    500     void texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLintptr pboOffset) final;
    501     void texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset) final;
    502492
    503493    void compressedTexImage2D(GCGLenum target, GCGLint level, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, GCGLint border, GCGLsizei imageSize, GCGLintptr offset) final;
  • trunk/Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGLCommon.cpp

    r264535 r264536  
    22392239#endif
    22402240
    2241 void GraphicsContextGLOpenGL::texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, GCGLintptr pboOffset)
    2242 {
    2243     UNUSED_PARAM(target);
    2244     UNUSED_PARAM(level);
    2245     UNUSED_PARAM(internalformat);
    2246     UNUSED_PARAM(width);
    2247     UNUSED_PARAM(height);
    2248     UNUSED_PARAM(depth);
    2249     UNUSED_PARAM(border);
    2250     UNUSED_PARAM(format);
    2251     UNUSED_PARAM(type);
    2252     UNUSED_PARAM(pboOffset);
    2253 }
    2254 
    2255 void GraphicsContextGLOpenGL::texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* pixels)
    2256 {
    2257     UNUSED_PARAM(target);
    2258     UNUSED_PARAM(level);
    2259     UNUSED_PARAM(internalformat);
    2260     UNUSED_PARAM(width);
    2261     UNUSED_PARAM(height);
    2262     UNUSED_PARAM(depth);
    2263     UNUSED_PARAM(border);
    2264     UNUSED_PARAM(format);
    2265     UNUSED_PARAM(type);
    2266     UNUSED_PARAM(pixels);
    2267 }
    2268 
    2269 void GraphicsContextGLOpenGL::texImage3D(GCGLenum target, GCGLint level, GCGLint internalformat, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLint border, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset)
    2270 {
    2271     UNUSED_PARAM(target);
    2272     UNUSED_PARAM(level);
    2273     UNUSED_PARAM(internalformat);
    2274     UNUSED_PARAM(width);
    2275     UNUSED_PARAM(height);
    2276     UNUSED_PARAM(depth);
    2277     UNUSED_PARAM(border);
    2278     UNUSED_PARAM(format);
    2279     UNUSED_PARAM(type);
    2280     UNUSED_PARAM(srcData);
    2281     UNUSED_PARAM(srcOffset);
    2282 }
    2283 
    2284 void GraphicsContextGLOpenGL::texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, GCGLintptr pboOffset)
    2285 {
    2286     UNUSED_PARAM(target);
    2287     UNUSED_PARAM(level);
    2288     UNUSED_PARAM(xoffset);
    2289     UNUSED_PARAM(yoffset);
    2290     UNUSED_PARAM(zoffset);
    2291     UNUSED_PARAM(width);
    2292     UNUSED_PARAM(height);
    2293     UNUSED_PARAM(depth);
    2294     UNUSED_PARAM(format);
    2295     UNUSED_PARAM(type);
    2296     UNUSED_PARAM(pboOffset);
    2297 }
    2298 
    2299 void GraphicsContextGLOpenGL::texSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLsizei width, GCGLsizei height, GCGLsizei depth, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset)
    2300 {
    2301     UNUSED_PARAM(target);
    2302     UNUSED_PARAM(level);
    2303     UNUSED_PARAM(xoffset);
    2304     UNUSED_PARAM(yoffset);
    2305     UNUSED_PARAM(zoffset);
    2306     UNUSED_PARAM(width);
    2307     UNUSED_PARAM(height);
    2308     UNUSED_PARAM(depth);
    2309     UNUSED_PARAM(format);
    2310     UNUSED_PARAM(type);
    2311     UNUSED_PARAM(srcData);
    2312     UNUSED_PARAM(srcOffset);
    2313 }
    2314 
    23152241void GraphicsContextGLOpenGL::copyTexSubImage3D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLint zoffset, GCGLint x, GCGLint y, GCGLsizei width, GCGLsizei height)
    23162242{
     
    28132739}
    28142740#endif
    2815 
    2816 void GraphicsContextGLOpenGL::texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, GCGLintptr pboOffset)
    2817 {
    2818     UNUSED_PARAM(target);
    2819     UNUSED_PARAM(level);
    2820     UNUSED_PARAM(xoffset);
    2821     UNUSED_PARAM(yoffset);
    2822     UNUSED_PARAM(width);
    2823     UNUSED_PARAM(height);
    2824     UNUSED_PARAM(format);
    2825     UNUSED_PARAM(type);
    2826     UNUSED_PARAM(pboOffset);
    2827 }
    2828 
    2829 void GraphicsContextGLOpenGL::texSubImage2D(GCGLenum target, GCGLint level, GCGLint xoffset, GCGLint yoffset, GCGLsizei width, GCGLsizei height, GCGLenum format, GCGLenum type, const void* srcData, GCGLuint srcOffset)
    2830 {
    2831     UNUSED_PARAM(target);
    2832     UNUSED_PARAM(level);
    2833     UNUSED_PARAM(xoffset);
    2834     UNUSED_PARAM(yoffset);
    2835     UNUSED_PARAM(width);
    2836     UNUSED_PARAM(height);
    2837     UNUSED_PARAM(format);
    2838     UNUSED_PARAM(type);
    2839     UNUSED_PARAM(srcData);
    2840     UNUSED_PARAM(srcOffset);
    2841 }
    28422741
    28432742void GraphicsContextGLOpenGL::compressedTexImage2D(GCGLenum target, GCGLint level, GCGLenum internalformat, GCGLsizei width, GCGLsizei height, GCGLint border, GCGLsizei imageSize, GCGLintptr offset)
Note: See TracChangeset for help on using the changeset viewer.