Open Bug 1331026 Opened 8 years ago Updated 2 years ago

When ANGLE is enabled, WebGL 2 gl.blitFramebuffer() is sometimes implemented in software, causing an estimated -66% performance impact

Categories

(Core :: Graphics: CanvasWebGL, enhancement, P3)

x86_64
Windows 10
enhancement

Tracking

()

People

(Reporter: jujjyl, Unassigned)

Details

(Whiteboard: gfx-noted)

Attachments

(1 file)

Profiling WebGL 2 demo "AtF" which uses gl.blitFramebuffer, it looks like when ANGLE is enabled on Windows, its D3D11 backend implements the function sometimes(?) in software, which is disastrous for rendering performance in the demo. Not sure at this point if this is necessary e.g. due to some missing D3D11 functionality compared to OpenGL, or if it is just an unoptimized path in ANGLE, so either a) issue a performance warning (I'm starting to love these, since they guide people to avoid these types of cliffs that exist in GL a lot), and document the best practices to avoid issues, or b) optimize the ANGLE path if possible so GPU -> CPU -> GPU roundtrip is not needed? Attached an example callstack. With ANGLE disabled, the demo gets 60fps with no obvious WebGL related hotspots (biggest hotspot is then actually in JS engine). With ANGLE enabled, the demo gets about 20fps. Not sure if all of the lost performance is due to glBlitFramebuffer, but that is the biggest one that shows up.
Whiteboard: gfx-noted
Interesting! does it only happen in a few of WebGL demos or most of them?
Type: defect → enhancement
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: