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.

Reply via email to