WebGL2: support TexImage3D (#37718)

Add TexImage3D method to WebGL2RenderingContext

Testing: conformance2 should pass. Also it should get
http://webglsamples.org/WebGL2Samples/#texture_2d_array and
http://webglsamples.org/WebGL2Samples/#texture_3d running.
Fixes: #26511

Now Servo can run texture_2d_array and texture_3d samples!

![圖片](https://github.com/user-attachments/assets/41b87563-08b8-4db3-b503-12f3a61dbed7)

![圖片](https://github.com/user-attachments/assets/3c62a4de-35ea-488d-b2e5-00e3aed52090)

And it can now run three.js too!

![圖片](https://github.com/user-attachments/assets/d880aa92-a154-4895-aa06-b7919d1fc869)

---------

Signed-off-by: Wu Yu Wei <yuweiwu@pm.me>
This commit is contained in:
Ngo Iok Ui (Wu Yu Wei) 2025-07-09 23:22:03 +09:00 committed by GitHub
parent 4499fdeb2b
commit 34c31ee418
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
43 changed files with 1341 additions and 980 deletions

View file

@ -1,5 +1,4 @@
[blitframebuffer-test.html]
expected: ERROR
[WebGL test #1]
expected: FAIL
@ -20,3 +19,21 @@
[WebGL test #9]
expected: FAIL
[WebGL test #11]
expected: FAIL
[WebGL test #13]
expected: FAIL
[WebGL test #16]
expected: FAIL
[WebGL test #18]
expected: FAIL
[WebGL test #19]
expected: FAIL
[WebGL test #20]
expected: FAIL

View file

@ -1,6 +1,3 @@
[depth-stencil-feedback-loop.html]
[WebGL test #2]
expected: FAIL
[WebGL test #3]
expected: FAIL

View file

@ -1,6 +0,0 @@
[draw-with-integer-texture-base-level.html]
[WebGL test #0]
expected: FAIL
[WebGL test #2]
expected: FAIL

View file

@ -67,3 +67,33 @@
[WebGL test #98]
expected: FAIL
[WebGL test #89]
expected: FAIL
[WebGL test #90]
expected: FAIL
[WebGL test #91]
expected: FAIL
[WebGL test #94]
expected: FAIL
[WebGL test #95]
expected: FAIL
[WebGL test #96]
expected: FAIL
[WebGL test #99]
expected: FAIL
[WebGL test #100]
expected: FAIL
[WebGL test #101]
expected: FAIL
[WebGL test #103]
expected: FAIL

View file

@ -1,4 +0,0 @@
[framebuffer-render-to-layer-angle-issue.html]
expected: ERROR
[WebGL test #1]
expected: FAIL

View file

@ -1,4 +1,519 @@
[framebuffer-render-to-layer.html]
expected: ERROR
[WebGL test #31]
[WebGL test #190]
expected: FAIL
[WebGL test #192]
expected: FAIL
[WebGL test #194]
expected: FAIL
[WebGL test #195]
expected: FAIL
[WebGL test #197]
expected: FAIL
[WebGL test #199]
expected: FAIL
[WebGL test #206]
expected: FAIL
[WebGL test #213]
expected: FAIL
[WebGL test #361]
expected: FAIL
[WebGL test #368]
expected: FAIL
[WebGL test #385]
expected: FAIL
[WebGL test #387]
expected: FAIL
[WebGL test #389]
expected: FAIL
[WebGL test #391]
expected: FAIL
[WebGL test #393]
expected: FAIL
[WebGL test #395]
expected: FAIL
[WebGL test #397]
expected: FAIL
[WebGL test #399]
expected: FAIL
[WebGL test #401]
expected: FAIL
[WebGL test #403]
expected: FAIL
[WebGL test #405]
expected: FAIL
[WebGL test #407]
expected: FAIL
[WebGL test #409]
expected: FAIL
[WebGL test #411]
expected: FAIL
[WebGL test #412]
expected: FAIL
[WebGL test #414]
expected: FAIL
[WebGL test #416]
expected: FAIL
[WebGL test #417]
expected: FAIL
[WebGL test #419]
expected: FAIL
[WebGL test #421]
expected: FAIL
[WebGL test #422]
expected: FAIL
[WebGL test #424]
expected: FAIL
[WebGL test #426]
expected: FAIL
[WebGL test #427]
expected: FAIL
[WebGL test #429]
expected: FAIL
[WebGL test #431]
expected: FAIL
[WebGL test #432]
expected: FAIL
[WebGL test #434]
expected: FAIL
[WebGL test #436]
expected: FAIL
[WebGL test #437]
expected: FAIL
[WebGL test #439]
expected: FAIL
[WebGL test #441]
expected: FAIL
[WebGL test #442]
expected: FAIL
[WebGL test #444]
expected: FAIL
[WebGL test #446]
expected: FAIL
[WebGL test #447]
expected: FAIL
[WebGL test #449]
expected: FAIL
[WebGL test #451]
expected: FAIL
[WebGL test #453]
expected: FAIL
[WebGL test #455]
expected: FAIL
[WebGL test #457]
expected: FAIL
[WebGL test #458]
expected: FAIL
[WebGL test #460]
expected: FAIL
[WebGL test #462]
expected: FAIL
[WebGL test #463]
expected: FAIL
[WebGL test #465]
expected: FAIL
[WebGL test #467]
expected: FAIL
[WebGL test #468]
expected: FAIL
[WebGL test #470]
expected: FAIL
[WebGL test #472]
expected: FAIL
[WebGL test #473]
expected: FAIL
[WebGL test #475]
expected: FAIL
[WebGL test #477]
expected: FAIL
[WebGL test #478]
expected: FAIL
[WebGL test #480]
expected: FAIL
[WebGL test #482]
expected: FAIL
[WebGL test #483]
expected: FAIL
[WebGL test #485]
expected: FAIL
[WebGL test #487]
expected: FAIL
[WebGL test #488]
expected: FAIL
[WebGL test #490]
expected: FAIL
[WebGL test #492]
expected: FAIL
[WebGL test #493]
expected: FAIL
[WebGL test #495]
expected: FAIL
[WebGL test #497]
expected: FAIL
[WebGL test #499]
expected: FAIL
[WebGL test #500]
expected: FAIL
[WebGL test #501]
expected: FAIL
[WebGL test #502]
expected: FAIL
[WebGL test #503]
expected: FAIL
[WebGL test #504]
expected: FAIL
[WebGL test #505]
expected: FAIL
[WebGL test #506]
expected: FAIL
[WebGL test #507]
expected: FAIL
[WebGL test #508]
expected: FAIL
[WebGL test #509]
expected: FAIL
[WebGL test #510]
expected: FAIL
[WebGL test #511]
expected: FAIL
[WebGL test #512]
expected: FAIL
[WebGL test #513]
expected: FAIL
[WebGL test #514]
expected: FAIL
[WebGL test #515]
expected: FAIL
[WebGL test #516]
expected: FAIL
[WebGL test #518]
expected: FAIL
[WebGL test #520]
expected: FAIL
[WebGL test #522]
expected: FAIL
[WebGL test #523]
expected: FAIL
[WebGL test #525]
expected: FAIL
[WebGL test #527]
expected: FAIL
[WebGL test #528]
expected: FAIL
[WebGL test #530]
expected: FAIL
[WebGL test #532]
expected: FAIL
[WebGL test #533]
expected: FAIL
[WebGL test #535]
expected: FAIL
[WebGL test #537]
expected: FAIL
[WebGL test #538]
expected: FAIL
[WebGL test #540]
expected: FAIL
[WebGL test #542]
expected: FAIL
[WebGL test #543]
expected: FAIL
[WebGL test #545]
expected: FAIL
[WebGL test #547]
expected: FAIL
[WebGL test #548]
expected: FAIL
[WebGL test #550]
expected: FAIL
[WebGL test #552]
expected: FAIL
[WebGL test #553]
expected: FAIL
[WebGL test #555]
expected: FAIL
[WebGL test #557]
expected: FAIL
[WebGL test #558]
expected: FAIL
[WebGL test #560]
expected: FAIL
[WebGL test #562]
expected: FAIL
[WebGL test #563]
expected: FAIL
[WebGL test #565]
expected: FAIL
[WebGL test #567]
expected: FAIL
[WebGL test #569]
expected: FAIL
[WebGL test #571]
expected: FAIL
[WebGL test #573]
expected: FAIL
[WebGL test #574]
expected: FAIL
[WebGL test #576]
expected: FAIL
[WebGL test #578]
expected: FAIL
[WebGL test #579]
expected: FAIL
[WebGL test #581]
expected: FAIL
[WebGL test #583]
expected: FAIL
[WebGL test #584]
expected: FAIL
[WebGL test #586]
expected: FAIL
[WebGL test #588]
expected: FAIL
[WebGL test #589]
expected: FAIL
[WebGL test #591]
expected: FAIL
[WebGL test #593]
expected: FAIL
[WebGL test #594]
expected: FAIL
[WebGL test #596]
expected: FAIL
[WebGL test #598]
expected: FAIL
[WebGL test #599]
expected: FAIL
[WebGL test #601]
expected: FAIL
[WebGL test #603]
expected: FAIL
[WebGL test #604]
expected: FAIL
[WebGL test #606]
expected: FAIL
[WebGL test #608]
expected: FAIL
[WebGL test #609]
expected: FAIL
[WebGL test #611]
expected: FAIL
[WebGL test #613]
expected: FAIL
[WebGL test #614]
expected: FAIL
[WebGL test #616]
expected: FAIL
[WebGL test #618]
expected: FAIL
[WebGL test #620]
expected: FAIL
[WebGL test #621]
expected: FAIL
[WebGL test #622]
expected: FAIL
[WebGL test #623]
expected: FAIL
[WebGL test #624]
expected: FAIL
[WebGL test #625]
expected: FAIL
[WebGL test #626]
expected: FAIL
[WebGL test #627]
expected: FAIL
[WebGL test #628]
expected: FAIL
[WebGL test #629]
expected: FAIL
[WebGL test #630]
expected: FAIL
[WebGL test #631]
expected: FAIL
[WebGL test #632]
expected: FAIL
[WebGL test #633]
expected: FAIL
[WebGL test #634]
expected: FAIL
[WebGL test #635]
expected: FAIL
[WebGL test #636]
expected: FAIL
[WebGL test #637]
expected: FAIL
[WebGL test #638]
expected: FAIL
[WebGL test #639]
expected: FAIL

View file

@ -1,15 +0,0 @@
[framebuffer-texture-changing-base-level.html]
[WebGL test #10]
expected: FAIL
[WebGL test #14]
expected: FAIL
[WebGL test #17]
expected: FAIL
[WebGL test #2]
expected: FAIL
[WebGL test #6]
expected: FAIL

View file

@ -1,6 +1,3 @@
[framebuffer-texture-level1.html]
[WebGL test #1]
expected: FAIL
[WebGL test #3]
expected: FAIL

View file

@ -1,5 +1,4 @@
[framebuffer-unsupported.html]
expected: ERROR
[WebGL test #4]
expected: FAIL
@ -8,3 +7,9 @@
[WebGL test #8]
expected: FAIL
[WebGL test #9]
expected: FAIL
[WebGL test #10]
expected: FAIL