Krita/Dmitry

From KDE Community Wiki

Previous experience with Krita

Dmitry Kazakov ("DmitryK") first joined Krita in February 2009, when the program was still lacking a solid infrastructure. Dmitry soon dedicated himself to some of Krita's most fundamental components, including:

  • GSoC 2009: Complete refactoring of Krita's Tile Engine system. This system is responsible for pixel data storage and access, which are crucial in an image editing and drawing program.
  • GSoC 2010: Multithreading support for the update scheduler. Apart from multi-threading, Dmitry added on-the-fly tile compression and swapping to the tile engine, significantly improving support of large documents.
  • GSoC 2011: Strokes System multithreading support for the tools in Krita. This allows for much better performance of drawing tools.

Improvements to these core components were crucial to make Krita faster, more responsive and stable, vastly cutting down on the number of crashes while improving rendering.


Dmitry continues to improve upon these core engines, as well as working on many of Krita's other components such as image recomposition, image data management when painting, layer masks rendering, optimizing pointers, pooling of tile information, filters api, canvas operations and bug fixing (well over 100 bugs fixed).

Dmitry's first part-time sponsored period took place between the end of 2010 and beginning of 2011. This development work occurred on a part-time basis due to Dmitry's University studies, and covered a number of different parts of Krita including core engines, openGL support (multi-platform 2D renderer), canvas operation (pan beyond edge, mirroring, rotation), and more.


In September 2012, Dmitry began a second round of part-time sponsored development, so far covering:

Month Summary
Month 1 (September-October) Caching of dabs while painting, resulting in a 1.5x brush speed improvement, using Vc in composite ops, porting selections to the Strokes System, and bug fixes.
Month 2 (October-November) Improvements to the move tool, rewrote part of the input manager to improve the shortcuts system, improvements to the Experiment Brush (vast speed-ups, and mirroring and displace now work correctly), multi-architectural builds for the vector code (thus enabling dynamic hardware optimization), and bug fixes.
December (break due to University)
Month 3 (January) Vast improvements to the Free Transformation tool, rewriting it nearly from scratch: transformation now recursive (transfomation can be simultaneously applied to all layers and masks within a group), much faster application, much better output. Fixed issues with OpenGL, improved brush texturing, and lots of bug fixes.
February (break )
Month 4 (March) Ported the Fill Tool to the Strokes systems (thus fixing various crashes and bugs), vast improvements to the Color to Alpha filter, and implemented the long awaited "painting with grayscale" on masks and filter layers, allowing users to modify these by painting with brushes instead of erasing.