Bug 107030 - [SNB][WebGL] conformance/rendering/draw-elements-out-of-bounds.html fails with NO_ERROR
Summary: [SNB][WebGL] conformance/rendering/draw-elements-out-of-bounds.html fails wit...
Status: RESOLVED FIXED
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: 18.0
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Intel 3D Bugs Mailing List
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-06-25 13:24 UTC by Leonardo
Modified: 2018-12-12 19:00 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
glxinfo (26.94 KB, text/plain)
2018-06-25 13:24 UTC, Leonardo
Details

Description Leonardo 2018-06-25 13:24:14 UTC
Created attachment 140323 [details]
glxinfo

https://www.khronos.org/registry/webgl/sdk/tests/webgl-conformance-tests.html

Using the WebGL 1.0.4 conformance test on my Sandybridge laptop.

conformance/rendering/draw-elements-out-of-bounds.html (Passed: 43/44 Failed: 1/44 in 621.0 ms)

    failed: getError expected: INVALID_OPERATION. Was NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, 0)

The other subtests are OK.

I'm using Mesa 1.8.1.1 on Firefox 60.0.2 Manjaro Linux (i've attached a complete glxinfo).
Comment 1 Denis 2018-07-03 11:03:38 UTC
hi, I checked latests released stable mesa version on ubuntu,

ubuntu 16.04
firefox 60.0.2 (latest)
chromium (66.0.3359.181)
mesa-version for FF (18.1.3 stable)
for Chromium (18.2.0 git-c7726fbfa5)

Results:

failed Mozzila (SNB, SKL)
passed Chromium (SNB, SKL)
_____
I would say that issue might be in FF browser.
Comment 2 Leonardo 2018-12-12 19:00:14 UTC
I've retested 2 times the WebGL CTS 1.0.4 with Mesa 18.2.6 and Firefox 64.0 on Manjaro Linux up to date and now the test pass correctly

-----------------------------

conformance/rendering/draw-elements-out-of-bounds.html (Passed: 44/44 in 748.0 ms)

Test of drawElements with out-of-bounds parameters

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

Test null index buffer
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, 0)

Test empty index buffer
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, 0)
PASS getError was one of: NO_ERROR or INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 0)
PASS getError was one of: NO_ERROR or INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 10000, gl.UNSIGNED_BYTE, 0)
PASS getError was one of: NO_ERROR or INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 1, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, -1, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, -1)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, -1, gl.UNSIGNED_BYTE, 1)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 1, gl.UNSIGNED_BYTE, -1)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 0xffffffff, gl.UNSIGNED_BYTE, 0)

Test buffer with 3 byte indexes
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 0)
PASS getError was one of: NO_ERROR or INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 2)
PASS getError was one of: NO_ERROR or INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 10000, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, -1, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, -1)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, -1, gl.UNSIGNED_BYTE, 1)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 1, gl.UNSIGNED_BYTE, -1)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 0xffffffff, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, 4)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 10000, gl.UNSIGNED_BYTE, 10000)
PASS getError was expected value: NO_ERROR : after evaluating: gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, (new Uint8Array([ 3, 0, 1, 2 ])).subarray(1), gl.STATIC_DRAW)
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: NO_ERROR : after evaluating: gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, new Uint8Array([ 3, 0, 1]))
PASS getError was one of: INVALID_OPERATION or NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: NO_ERROR : after evaluating: gl.bufferSubData(gl.ELEMENT_ARRAY_BUFFER, 0, (new Uint8Array([ 3, 0, 1, 2 ])).subarray(1))
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_BYTE, 0)
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_BYTE, 0)

Test buffer with interleaved (3+2) float vectors
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 9, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 9, gl.UNSIGNED_SHORT, 1000)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 12, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 15, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 18, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 3, gl.UNSIGNED_SHORT, 30)
PASS getError was expected value: INVALID_VALUE : after evaluating: gl.drawElements(gl.TRIANGLES, 0xffffffff, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 1, gl.UNSIGNED_SHORT, 0xffffffff)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 0x7fffffff, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 0, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 1)
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 2)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0)

Test buffer setting attrib 0 to a buffer too small and disable it.
PASS getError was expected value: NO_ERROR : after evaluating: gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 2)
PASS getError was expected value: INVALID_OPERATION : after evaluating: gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 2)

PASS successfullyParsed is true

TEST COMPLETE


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.