Closed Bug 1117925 Opened 5 years ago Closed 5 years ago

Flickering when resizing 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)

References

Details

(Keywords: regression, Whiteboard: gfx-noted)

Attachments

(1 file)

Running D3D11 OMTC with D2D. I get flickering when resizing. This is on NVIDIA Quadro 600.
Flags: needinfo?(bas)
I still get it without D2D.

Problem goes away once I set layers.d3d11.force-warp. Quadro driver bug?
Jeff is reproducing it on his Intel box. Not related to Quadro.
(In reply to Benoit Girard (:BenWa) from comment #0)
> Running D3D11 OMTC with D2D. I get flickering when resizing. This is on
> NVIDIA Quadro 600.

I'm not sure what info you want from me? My Quadro K1000 doesn't reproduce it, nor does my ATI. I'd need at the very least a screencast to say anything sensible about it. It might be related to a relatively slow GPU with a very large amount of pixels to fill? There's some bugs on flickering when playing with the NC area I seem to recall, but those don't occur on release. It could be we're not properly completing a present before a WM_PAINT message finishes? Confirming any of those things would require some logging on a machine that has this issue.
Flags: needinfo?(bas)
It's not a GPU specific bug. Looks like a general d3d11 hardware bug.
I stand corrected, I see the flicker on nightly.. just not on release.. I wonder if this is related to partial presents, or if something else is causing it. I feel I didn't see this a couple of days ago so I think it might be something else.
Sounds like a regression.

Can we get a regression window making sure about about:support is reporting: d3d11
(In reply to Bas Schouten (:bas.schouten) from comment #3)
> (In reply to Benoit Girard (:BenWa) from comment #0)
> > Running D3D11 OMTC with D2D. I get flickering when resizing. This is on
> > NVIDIA Quadro 600.
> 
> I'm not sure what info you want from me? My Quadro K1000 doesn't reproduce
> it, nor does my ATI. I'd need at the very least a screencast to say anything
> sensible about it. It might be related to a relatively slow GPU with a very
> large amount of pixels to fill? There's some bugs on flickering when playing
> with the NC area I seem to recall, but those don't occur on release. It
> could be we're not properly completing a present before a WM_PAINT message
> finishes? Confirming any of those things would require some logging on a
> machine that has this issue.

(In reply to Benoit Girard (:BenWa) from comment #6)
> Sounds like a regression.
> 
> Can we get a regression window making sure about about:support is reporting:
> d3d11
Flags: needinfo?(bgirard)
[Tracking Requested - why for this release]:
We should not ship with this regression. Requesting blocking so that we don't accidentally ship this.
Flags: needinfo?(bgirard)
(In reply to Alice0775 White from comment #7)
Sorry, I'm not sure what you're asking. The information about the Quadro is obsolete. It reproduces on all configurations and GPU running D3D11 we have seen so far including Intel.
(In reply to Benoit Girard (:BenWa) from comment #9)
> (In reply to Alice0775 White from comment #7)
> Sorry, I'm not sure what you're asking. The information about the Quadro is
> obsolete. It reproduces on all configurations and GPU running D3D11 we have
> seen so far including Intel.

Provide a screencast
Provide a regression window
Paste "Graphic section" of about:support
Flags: needinfo?(bgirard)
(In reply to Alice0775 White from comment #10)
> (In reply to Benoit Girard (:BenWa) from comment #9)
> > (In reply to Alice0775 White from comment #7)
> > Sorry, I'm not sure what you're asking. The information about the Quadro is
> > obsolete. It reproduces on all configurations and GPU running D3D11 we have
> > seen so far including Intel.
> 
> Provide a screencast
> Provide a regression window
> Paste "Graphic section" of about:support

The bug reproduces on any Windows 7+ machine running with hardware acceleration as far as we can tell. It's very obvious as while resizing the window will flicker an annoying black before drawing a lot of the time.
Flags: needinfo?(bgirard)
Tracking for 37 and 38. 

BenWa - Do you know if this affects 36?

Bas - Are you taking this one?
Flags: needinfo?(bgirard)
Flags: needinfo?(bas)
[Tracking Requested - why for this release]:
I'm unsure. What do we do to make sure we don't ship without finding this out? Do we have to explicitly block on confirming?
Flags: needinfo?(bgirard)
Setting the flags is the right way to keep this on the relman list of bugs that need follow-up. Given that you have a system that reproduces the issue for Nightly and Aurora, do you have a few mins to install Beta and see if this reproduces?
Flags: needinfo?(bgirard)
I'm actively working on this one, but I haven't trouble determining the exact cause. It doesn't appear to be the present itself but something more subtle that changed with the patches. I feel this is on the list for patches that is scheduled for backout if we don't find solutions before friday. For the record, this does -not- affect 36 as far as I know.
Assignee: nobody → bas
Status: NEW → ASSIGNED
Flags: needinfo?(bas)
Thanks Bas. Marking 36 as unaffected based on comment 15 until we know otherwise.
I've found the approximate cause, I'm looking into the best way to fix it, it shouldn't be too difficult to fix.
Blocks: 1107297
Flags: needinfo?(bgirard)
Attachment #8552488 - Flags: review?(jmuizelaar)
Comment on attachment 8552488 [details] [diff] [review]
Redraw the entire window when the size changes

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

::: gfx/layers/d3d11/CompositorD3D11.cpp
@@ +1070,5 @@
>    nsIntRect intRect = nsIntRect(nsIntPoint(0, 0), mSize);
>    // Sometimes the invalid region is larger than we want to draw.
>    nsIntRegion invalidRegionSafe;
> +
> +  if (mSize == oldSize) {

Personally, I'd do something like this because I think it reads better:

if (mSize != oldSize) {
  // invalidate everything
  invalidRegionSafe = intRect;
} else {
  invalidRegionSafe.And(aInvalidRegion, intRect);
}

But do as you like
Attachment #8552488 - Flags: review?(jmuizelaar) → review+
Duplicate of this bug: 1121126
https://hg.mozilla.org/mozilla-central/rev/68537ac70f77
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
Duplicate of this bug: 1121339
Duplicate of this bug: 1113197
confirmed fixed for me in 38.0a1 (2015-01-22)
Can this be uplifted to Aurora? It seems like a trivial enough fix?
Comment on attachment 8552488 [details] [diff] [review]
Redraw the entire window when the size changes

Approval Request Comment
[Feature/regressing bug #]: 1107297
[User impact if declined]: Flickering when resizing
[Describe test coverage new/current, TreeHerder]: 2 days of Nightly Coverage
[Risks and why]: Very low, strictly increased invalidation when would've been a bug already
[String/UUID change made/needed]: None
Attachment #8552488 - Flags: approval-mozilla-aurora?
Attachment #8552488 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
See Also: → 1122545
You need to log in before you can comment on or make changes to this bug.