Auto merge of #16893 - MortimerGoro:webgl_extensions, r=emilio

Implement WebGL extensions

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

This PR provides the base for implementing WebGL extensions. It comes with the following ones already implemented and passing all related WebGL conformance tests:

- OES_texture_float
- OES_texture_float_linear
- OES_texture_half_float
- OES_texture_half_float_linear
- OES_vertex_array_object

I'll submit other extensions like compressed textures in a separate PR to ease the review process. I included the 5 extensions in this PR because it's easier to show/review how the WebGL extension base works.

To pass all OES_texture_float_xxx tests I had to add some missing format conversions in WebGLRenderingContext.rs

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes OR
- [ ] These changes do not require tests because _____

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

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

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/16893)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-05-19 01:09:48 -05:00 committed by GitHub
commit b0976566fb
40 changed files with 1346 additions and 86 deletions

View file

@ -15,9 +15,6 @@
[WebGL test #4: Property either does not exist or is not a function: getUniform]
expected: FAIL
[WebGL test #5: Property either does not exist or is not a function: getVertexAttribOffset]
expected: FAIL
[WebGL test #6: Property either does not exist or is not a function: isContextLost]
[WebGL test #5: Property either does not exist or is not a function: isContextLost]
expected: FAIL

View file

@ -1,5 +0,0 @@
[oes-texture-float-linear.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL

View file

@ -1,5 +1,5 @@
[oes-texture-float-with-canvas.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL
expected: ERROR
[Overall test]
expected: NOTRUN

View file

@ -1,5 +0,0 @@
[oes-texture-float-with-image-data.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL

View file

@ -1,6 +0,0 @@
[oes-texture-float-with-image.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected:
if os == "linux": FAIL

View file

@ -1,3 +0,0 @@
[oes-texture-float.html]
type: testharness
disabled: flaky

View file

@ -1,5 +0,0 @@
[oes-texture-half-float-linear.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL

View file

@ -0,0 +1,5 @@
[oes-texture-half-float-with-canvas.html]
type: testharness
expected: ERROR
[Overall test]
expected: NOTRUN

View file

@ -1,5 +0,0 @@
[oes-texture-half-float-with-image-data.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected: FAIL

View file

@ -1,6 +1,3 @@
[oes-texture-half-float-with-video.html]
type: testharness
[WebGL test #0: Unable to fetch WebGL rendering context for Canvas]
expected:
if os == "linux": FAIL
disabled: flaky

View file

@ -1,5 +0,0 @@
[oes-texture-half-float.html]
type: testharness
[WebGL test #2: successfullyParsed should be true (of type boolean). Was undefined (of type undefined).]
expected: FAIL

View file

@ -1,3 +1,38 @@
[tex-image-with-format-and-type.html]
type: testharness
expected: CRASH
[WebGL test #6: LUMINANCE/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #7: LUMINANCE_ALPHA/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #14: LUMINANCE/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #15: LUMINANCE_ALPHA/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #22: LUMINANCE/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #23: LUMINANCE_ALPHA/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #30: LUMINANCE/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #31: LUMINANCE_ALPHA/UNSIGNED_BYTE should maintain full precision of data]
expected: FAIL
[WebGL test #65: UNPACK_PREMULTIPLY_ALPHA_WEBGL with RGBA/UNSIGNED_SHORT_4_4_4_4]
expected: FAIL
[WebGL test #66: UNPACK_PREMULTIPLY_ALPHA_WEBGL with RGBA/UNSIGNED_SHORT_5_5_5_1]
expected: FAIL
[WebGL test #69: UNPACK_PREMULTIPLY_ALPHA_WEBGL with RGBA/UNSIGNED_SHORT_4_4_4_4]
expected: FAIL
[WebGL test #70: UNPACK_PREMULTIPLY_ALPHA_WEBGL with RGBA/UNSIGNED_SHORT_5_5_5_1]
expected: FAIL