Closed Bug 1556104 Opened 7 years ago Closed 7 years ago

Long paints occurring in the PaintThread causing slow tab switches / tab switch spinners

Categories

(Core :: Graphics, defect, P3)

defect

Tracking

()

RESOLVED WORKSFORME
Performance Impact ?

People

(Reporter: mconley, Unassigned)

Details

Asa noticed this and sent me a profile:

http://bit.ly/2MlidcG

Some pretty outrageous paint times. Measurable in seconds. Seems like the PaintThreads are all backed up, stuck on this stack:

NtGdiDdDDIDestroyAllocation2
CallAndLogImpl<long (*)(_D3DKMT_DESTROYALLOCATION2 const *),_D3DKMT_DESTROYALLOCATION2 *>(long (*)(_D3DKMT_DESTROYALLOCATION2 const *),char const *,_D3DKMT_DESTROYALLOCATION2 *)
NDXGI::CDevice::Deallocate2CB(void *,_D3DDDICB_DEALLOCATE2 const *)
0x7ffa66f0eb7b
0x7ffa66fd053d
0x7ffa66ef6843
0x7ffa66fdfd2f
0x7ffa66efade2
0x7ffa67163d8d
0x7ffa667d1d3c
0x7ffa666c0387
NDXGI::CDevice::Flush(unsigned int,D3DWDDM2_0DDI_CONTEXTTYPE_FLAG)
NDXGI::CDevice::DXGIAcquireSync(IDXGIResourceInternal *,NDXGI::CKMResource *,unsigned __int64,unsigned long)
NDXGI::CResource::AcquireSync(unsigned __int64,unsigned long)
bool mozilla::layers::SyncObjectD3D11Client::Synchronize(bool)
mozilla::layers::CompositorBridgeChild::NotifyFinishedAsyncEndLayerTransaction()
void mozilla::layers::PaintThread::AsyncPaintTask(class mozilla::layers::CompositorBridgeChild *, class mozilla::layers::PaintTask *)
PaintThread::AsyncPaintTask
nsresult mozilla::detail::RunnableFunction<`lambda at z:/task_1559263917/build/src/gfx/layers/PaintThread.cpp:177:30'>::Run()
nsThread::ProcessNextEvent(bool,bool *)
NS_ProcessNextEvent(nsIThread *,bool)
mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate *)
MessageLoop::RunHandler()
MessageLoop::Run()
nsThread::ThreadFunc(void *)
static void _PR_NativeRunThread(void *)
unsigned int pr_root(void *)
thread_start<unsigned int (__cdecl*)(void * __ptr64)>
BaseThreadInitThunk
static void patched_BaseThreadInitThunk(int, void *, void *)
RtlUserThreadStart
(root)

Another profile: http://bit.ly/317PbRo

In case it's useful, I'm running on a Microsoft Surface Book 2 with NVIDIA GeForce GTX 1050 graphics.

Hey :asa, could you take a profile after turning on Web Render? It seems like the Paint Thread is spending a lot of time inside the graphics driver.

Also could you answer if is this isolated to when you are viewing specific URLs? Or do any old pages trigger this?

Flags: needinfo?(asa)

Also: I note A11y events - do you have Ally turned on?
Any other programs running using the GPU perhaps? Perhaps look at Process Explorer from sysinternals and see if there's lots of GPU activity?

Whiteboard: [qf] → [qf:investigate]
Priority: -- → P3

I'm no longer able to reproduce this. I've tried with and without webrender. I suppose we can close it invalid or wfm.

Flags: needinfo?(asa)
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
Performance Impact: --- → ?
Whiteboard: [qf:investigate]
You need to log in before you can comment on or make changes to this bug.