Closed Bug 1118322 Opened 5 years ago Closed 5 years ago

Screen Tearing on Windows Nightly

Categories

(Core :: Graphics: Layers, defect)

x86
Windows 7
defect
Not set

Tracking

()

RESOLVED FIXED
mozilla38
Tracking Status
firefox36 --- unaffected
firefox37 + fixed
firefox38 + fixed

People

(Reporter: BenWa, Assigned: bas.schouten, NeedInfo)

Details

Attachments

(1 file)

I'm seeing screen tearing on nightly win7. I will narrow down the graphics feature responsible shortly.

[Tracking Requested - why for this release]:
Tearing regressions should be blocked on or explicitly accepted.
I wonder if in addition to this we should set BufferCount to 2 in order to only block when we're getting ahead of the compositor. But let's see how this goes first.
Assignee: nobody → bas
Status: NEW → ASSIGNED
Attachment #8546059 - Flags: review?(jmuizelaar)
Comment on attachment 8546059 [details] [diff] [review]
Block explicitly for vblank when using WARP.

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

::: gfx/layers/d3d11/CompositorD3D11.cpp
@@ +1114,5 @@
> +  if (gfxWindowsPlatform::GetPlatform()->IsUsingWARP()) {
> +    // When we're using WARP we cannot present immediately as it causes us
> +    // to tear when rendering.
> +    presentInterval = 1;
> +  }

It is not clear to me why we only want to do this with WARP. Shouldn't we do this everywhere?
(In reply to Jeff Muizelaar [:jrmuizel] from comment #2)
> Comment on attachment 8546059 [details] [diff] [review]
> Block explicitly for vblank when using WARP.
> 
> Review of attachment 8546059 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: gfx/layers/d3d11/CompositorD3D11.cpp
> @@ +1114,5 @@
> > +  if (gfxWindowsPlatform::GetPlatform()->IsUsingWARP()) {
> > +    // When we're using WARP we cannot present immediately as it causes us
> > +    // to tear when rendering.
> > +    presentInterval = 1;
> > +  }
> 
> It is not clear to me why we only want to do this with WARP. Shouldn't we do
> this everywhere?

It appears when not using WARP the DWM takes care of not tearing for us, how I don't know exactly, but it seemed like a waste to introduce an extra frame of latency when there's no need for that.
Flags: needinfo?(jmuizelaar)
(In reply to Lawrence Mandel [:lmandel] (use needinfo) from comment #3)
> Does this impact Beta 36?

It does not.
Comment on attachment 8546059 [details] [diff] [review]
Block explicitly for vblank when using WARP.

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

It would be nice to add a comment that contains your "It appears when not using WARP the DWM takes care of not tearing for us, how I don't know exactly, but it seemed like a waste to introduce an extra frame of latency when there's no need for that."
Attachment #8546059 - Flags: review?(jmuizelaar) → review+
https://hg.mozilla.org/mozilla-central/rev/9105c55dbaee
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
Bas - 37 is affected. Is this suitable for uplift? If so, can you get a request in this week before 37 merges to Beta?
Flags: needinfo?(bas)
Comment on attachment 8546059 [details] [diff] [review]
Block explicitly for vblank when using WARP.

Approval Request Comment
[Feature/regressing bug #]: 1102499
[User impact if declined]: Tearing when GPU is blacklisted
[Describe test coverage new/current, TreeHerder]: Extensive nightly coverage
[Risks and why]: Very low, at the very worst 1 frame of additional latency
[String/UUID change made/needed]: None
Flags: needinfo?(bas)
Attachment #8546059 - Flags: approval-mozilla-aurora?
Comment on attachment 8546059 [details] [diff] [review]
Block explicitly for vblank when using WARP.

Aurora+
Attachment #8546059 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
You need to log in before you can comment on or make changes to this bug.