<div dir="ltr"><div><div><div>Hi!<br><br></div>Today I new about the existence of apitrace... :)<br><br></div>Here is a small report with numbers, which I'd like to share with all of you:<br><br></div><div>Preconditions:<br>
<br></div>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).<br clear="all"><div><div><div><div>2) Tested on Intel Haswel integrated GPU.<br>
<br></div><div><br>Uploading of textures:<br><br></div><div>Uploading of the whole image to GPU takes:<br></div><div>* Texture Buffers enabled: 640 ms<br></div><div>* Texture Buffers disabled: 413 ms<br></div><div><br></div>
<div>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.<br>
</div><div><br><br></div><div>Rendering of the image:<br><br></div><div>* First update (mipmaps are not yet generated): 160 ms<br></div><div>* Consequent updates (mipmaps are already in cache): 59 ms<br><br></div><div>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.<br>
</div><div><br><br>-- <br>Dmitry Kazakov
</div></div></div></div></div>