A report about profiling openGL pipeline in Krita

Dmitry Kazakov dimula73 at gmail.com
Sat Jun 7 19:13:58 UTC 2014


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

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.


-- 
Dmitry Kazakov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kimageshop/attachments/20140607/934e16f8/attachment.html>


More information about the kimageshop mailing list