A report about profiling openGL pipeline in Krita

Boudewijn Rempt boud at valdyas.org
Mon Jun 9 06:57:29 UTC 2014


On Saturday 07 June 2014 Jun 23:13:58 Dmitry Kazakov wrote:
> Hi!
> 
> Today I new about the existence of apitrace... :)
> 
> Here is a small report with numbers, which I'd like to share with all of
> you:
> 
> Preconditions:
> 
> 1) I tested on a RGB8 image 6000x6000 pixels in size. To test the updates
> pipeline I filled the image with color (which caused the full update of the
> openGL textures).
> 2) Tested on Intel Haswel integrated GPU.
> 
> 
> Uploading of textures:
> 
> Uploading of the whole image to GPU takes:
> * Texture Buffers enabled: 640 ms
> * Texture Buffers disabled: 413 ms

This depends a lot on the gpu/driver, though. On NVidia, enabling texture buffers improves performance, last time I measured.

> 
> During every upload we spend about 30% of time on handling Qt's queued
> signals. The overhead is about 1 ms per patch (default is 512x512 piece),
> which is about 120 ms for a 6k image. This can (and must) be fixed.
> Probably with aggregating these signals somehow.
> 
> 
> Rendering of the image:
> 
> * First update (mipmaps are not yet generated): 160 ms
> * Consequent updates (mipmaps are already in cache): 59 ms
> 
> We also have a drain of efficiency in drawDecorations() call
> (kis_opengl_canvas2.cpp:242). It does nothing, but eats about 10ms per
> every update. More than that, this value is constant(!), that is doesn't
> depend on the dirty area size.
> 

Well, I must be missing something here -- as far as I know, drawDecorations draws the canvas decorations: brush outline, grids, canvas extension buttons, tool decorations.

-- 
Boudewijn Rempt
http://www.valdyas.org, http://www.krita.org, http://www.boudewijnrempt.nl



More information about the kimageshop mailing list