Closed Bug 1421199 Opened 2 years ago Closed 2 years ago

Use EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE for WebRender

Categories

(Core :: Graphics: WebRender, enhancement, P1)

enhancement

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox59 --- fixed

People

(Reporter: sotaro, Assigned: sotaro)

References

Details

(Whiteboard: [wr-mvp])

Attachments

(3 files, 3 obsolete files)

In Bug 1419876 Comment 1, there is an info to make fast ANGLE.

https://github.com/Microsoft/angle/wiki/Getting-Good-Performance-From-ANGLE#--use-our-render-to-backbuffer-flags

With the info, I looked into ANGLE source and found EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE. It is used in Renderer11 as a flag for enabling fast path.
Assignee: nobody → sotaro.ikeda.g
Blocks: 1419876
With attachment 8932376 [details] [diff] [review], peak fps of http://learningwebgl.com/lessons/lesson03/index.html on P50(Win10) was changed from 50fps to 60fps.
This change is from https://github.com/Microsoft/angle/commit/fb8a709e46fcf4385bf0793cac8962942b7b8f28

Without the change, ANGLE could not create GLES3 with "present path fast".
Attachment #8932376 - Attachment is obsolete: true
Attachment #8932411 - Flags: review?(jgilbert)
Attachment #8932407 - Flags: review?(jgilbert)
Attachment #8932406 - Flags: review?(jgilbert)
Status: NEW → ASSIGNED
Priority: -- → P1
Whiteboard: [wr-mvp]
Attachment #8932406 - Flags: review?(jgilbert) → review+
Attachment #8932407 - Flags: review?(jgilbert) → review+
Comment on attachment 8932411 [details] [diff] [review]
patch part 3 - Add GetAndInitDisplayForWebRender()

Review of attachment 8932411 [details] [diff] [review]:
-----------------------------------------------------------------

::: gfx/gl/GLLibraryEGL.cpp
@@ +148,5 @@
>  
> +static EGLDisplay
> +GetAndInitDisplayForWebRender(GLLibraryEGL& egl, void* displayType)
> +{
> +    EGLint attrib_list[] = {  LOCAL_EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE,

const-qualify const lists, please!
Attachment #8932411 - Flags: review?(jgilbert) → review+
Apply the comment.
Attachment #8932411 - Attachment is obsolete: true
Attachment #8932671 - Flags: review+
Pushed by sikeda@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/9e30a05d64c6
Use EGL_EXPERIMENTAL_PRESENT_PATH_FAST_ANGLE for WebRender r=jgilbert
https://hg.mozilla.org/mozilla-central/rev/9e30a05d64c6
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
It seems like Chrome doesn't use this. It would be interesting to know why.
Jeff, I'm trying to figure this out.
Filed https://github.com/baldurk/renderdoc/issues/810
Ok, Chrome must be getting some other way to achieve the same effect. I verified that the GPU capture of MotionMark running in Chrome doesn't do a final blit on Present() and instead just renders into the swap chain right away.
I talked to Geoff from ANGLE and he pointed out the Chrome is using EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE and just draws things upside down.

See https://bugs.chromium.org/p/angleproject/issues/detail?id=1262 and https://bugs.chromium.org/p/chromium/issues/detail?id=525379
Thanks Jeff, this is interesting. The discussion doesn't mention any comparisons between those two ways around the full-screen blit. I'd assume that the difference is small. We can investigate at some point in the future.
I'll check if this needs to be upstreamed.
Flags: needinfo?(jgilbert)
Flags: needinfo?(jgilbert)
You need to log in before you can comment on or make changes to this bug.