Closed Bug 1418571 Opened 2 years ago Closed 2 years ago

SwapChain->Present is called with sync on WebRender + ANGLE

Categories

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

defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox57 --- unaffected
firefox58 --- unaffected
firefox59 --- fixed

People

(Reporter: sotaro, Assigned: sotaro)

References

Details

(Whiteboard: [wr-mvp])

Attachments

(1 file, 1 obsolete file)

SwapChain->Present is called with sync on WebRender + ANGLE. But MLGSwapChainD3D11::Present() and CompositorD3D11::Present() call SwapChain->Present is called without sync.

It seems better to call SwapChain->Present without sync from performance point of view.

I quickly tested the "without sync", fps became better and more stable at http://learningwebgl.com/lessons/lesson03/index.html on Lenovo P50(Win).
Assignee: nobody → sotaro.ikeda.g
Whiteboard: [wr-mvp] [triage]
Whiteboard: [wr-mvp] [triage] → [wr-mvp]
Status: NEW → ASSIGNED
Priority: P2 → P1
Attachment #8929958 - Flags: review?(jgilbert)
Comment on attachment 8929958 [details] [diff] [review]
patch - Set SwapInterval to 0 with ANGLE

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

It's worth noting that this would only allow for screen tearing with EGL_RENDER_BUFFER=EGL_SINGLE_BUFFER.

::: gfx/gl/GLContextProviderEGL.cpp
@@ +217,5 @@
>  
>      gl->MakeCurrent();
>      gl->SetIsDoubleBuffered(doubleBuffered);
> +    if (aWebRender && sEGLLibrary.IsANGLE()) {
> +        sEGLLibrary.fSwapInterval(EGL_DISPLAY(), 0);

MOZ_ASSERT(doubleBuffered);
We really don't want to set this to zero if our EGLSurface is single-buffered. (GLES nominally doesn't support EGL_RENDER_BUFFER=EGL_SINGLE_BUFFER, and ANGLE is GLES)
Attachment #8929958 - Flags: review?(jgilbert) → review+
Attachment #8929958 - Attachment is obsolete: true
Attachment #8931532 - Flags: review+
Pushed by sikeda@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/bb6ea78f779e
Set SwapInterval to 0 with ANGLE r=jgilbert
https://hg.mozilla.org/mozilla-central/rev/bb6ea78f779e
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
You need to log in before you can comment on or make changes to this bug.