Closed Bug 1569881 Opened 4 months ago Closed 4 months ago

Investigate a workaroud for Flickering selection/text input(Win10 (1903)/Intel HD Graphics 530 + 620)

Categories

(Core :: Graphics: WebRender, task)

task
Not set

Tracking

()

RESOLVED FIXED
mozilla70
Tracking Status
firefox70 --- fixed

People

(Reporter: sotaro, Assigned: sotaro)

References

Details

Attachments

(7 files, 2 obsolete files)

Chromium uses IDXGISwapChain1::Present1 () for presenting a frame. It is better to use it also in RenderCompositorANGLE.

https://cs.chromium.org/chromium/src/ui/gl/direct_composition_child_surface_win.cc?l=166

Assignee: nobody → sotaro.ikeda.g
Blocks: 1556634

Attachment 9081551 [details] [diff] did not address the problem of Bug 1556634. But Attachment 9081552 [details] [diff] address the problem of Bug 1556634 for me.

:jrmuizel, can you check if Attachment 9081552 [details] [diff] works for you?

Flags: needinfo?(jmuizelaar)

(In reply to Sotaro Ikeda [:sotaro] from comment #4)

:jrmuizel, can you check if Attachment 9081552 [details] [diff] works for you?

It does work for me.

However, from my reading of the Chrome code it looks like DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING is not used by default. This suggests that there must be some other reason that Chrome works and Firefox doesn't.

Flags: needinfo?(jmuizelaar)

DXGI_ALPHA_MODE_PREMULTIPLIED usage also addressed the problem for me.

Attachment 9081847 [details] [diff] and Attachment 9081552 [details] [diff] addressed the problem for me. But performance seemed to become worse.
FPS of the following WebGL was degraded.

:jrmuizel, can you check if Attachment 9081847 [details] [diff] also works for you?

Flags: needinfo?(jmuizelaar)

Attachment 9081847 [details] [diff] also works for me.

Flags: needinfo?(jmuizelaar)
Summary: Use IDXGISwapChain1::Present1() in RenderCompositorANGLE → Investigate a workaroud for Flickering selection/text input(Win10 (1903)/Intel HD Graphics 530 + 620)

When partial present did not render entire back buffer, the problem seemed to go away, though part of the window was not rendered.

:jrmuizel, do we need to land PREMULTIPLIED workaround Attachment 9084980 [details] even when it regresses MotionMark performance(180 -> 70)?

Flags: needinfo?(jmuizelaar)

I'm still inclined to take the workaround. I think we might need something better to actually ship on Intel but I think this is good enough for Nightly and maybe Beta

Flags: needinfo?(jmuizelaar)

Ok, thank you :)

Pushed by sikeda.birchill@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5d16fc1cebc7
Short term workaround for Intel GPU r=jrmuizel
Status: NEW → RESOLVED
Closed: 4 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla70

Alexis had the idea of using partial present with 2 rects that cover the whole screen instead of one rect. If that doesn't work we also have the option of using 2 rects and leaving one pixel unexposed.

(In reply to Jeff Muizelaar [:jrmuizel] from comment #17)

If that doesn't work we also have the option of using 2 rects and leaving one pixel unexposed.

What could we get with it? Forced partial present with current WebRender also regressed performance.

Does it regress performance the same amount as using ALPHA?

Flags: needinfo?(sotaro.ikeda.g)

I am going to compare them.

Correct patch.

Attachment #9085651 - Attachment is obsolete: true
Attachment #9085653 - Attachment description: temporal patch - Update only part of back buffer if possible → temporal patch - Use partial present with 2 rects
Flags: needinfo?(sotaro.ikeda.g)

(In reply to Jeff Muizelaar [:jrmuizel] from comment #17)

Alexis had the idea of using partial present with 2 rects that cover the whole screen instead of one rect.

Attachment 9085653 [details] [diff] implemented it. But it did not address the problem.

(In reply to Jeff Muizelaar [:jrmuizel] from comment #17)

If that doesn't work we also have the option of using 2 rects and leaving one pixel unexposed.

Attachment 9085653 [details] [diff] implemented it. It addressed the problem for me.

You need to log in before you can comment on or make changes to this bug.