https://bugs.documentfoundation.org/show_bug.cgi?id=166715
Patrick (volunteer) <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #7 from Patrick (volunteer) <[email protected]> --- (In reply to Telesto from comment #4) > Created attachment 200957 [details] > Screenshot Instruments >From my quick look at your snapshot, it looks like LibreOffice is copying SkiaSalGraphicsImpl::copyBits() (i.e. in the middle of the selected calls) is the topmost call into Skia/Metal so I added a debug statement in the debug patch below to see how frequently that is being called. With the following debug patch in my local master build and running in a Terminal with the document in comment #0, I see thousands of calls per minute to SkiaSalGraphicsImpl::copyBits() copying 13 x 13 pixels at a time. I don't know much about all the "drawinglayer" code that generates these calls, but AFAIK the rule of thumb for GPU drawing is that drawing to a GPU can be much faster than drawing to CPU memory but extracting pixels from the GPU can be much much slower than doing so from CPU memory. I may be wrong, but I don't think this will be fixable down in LibreOffice Skia code and a different approach for copying tens of thousands of 13 x 13 pixels from one GPU surface to another: diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx index 43b6650ce4e8..752e1f2c0a64 100644 --- a/vcl/source/outdev/outdev.cxx +++ b/vcl/source/outdev/outdev.cxx @@ -638,6 +638,7 @@ void OutputDevice::DrawOutDevDirectProcess(const OutputDevice& rSrcDev, SalTwoRe mpGraphics->CopyBits( aPosAry2, *pSrcGraphics, *this, rSrcDev ); return; } +fprintf(stderr, "Here: %p %li %li %li %li\n", pSrcGraphics, rPosAry.mnSrcWidth, rPosAry.mnSrcHeight, rPosAry.mnDestWidth, rPosAry.mnDestHeight); if (pSrcGraphics) mpGraphics->CopyBits( rPosAry, *pSrcGraphics, *this, rSrcDev ); else -- You are receiving this mail because: You are the assignee for the bug.
