Skip to content

Multithreaded Fill Layers

This MR ports Fill Layers to the Strokes system. This should enable the upcoming SeExpr generator to be multithreaded, thus greatly speeding up render times.

I need help with the following:

  • Slice-and-dice Fill Layer bounds into renderable tiles
  • Detecting unthreadable KisGenerators and disabling slice-and-dice
    • It may be possible that a Fill Layer's generator cannot be threaded (SeExpr has this potential, with custom functions).
  • Sync dirty tiles as soon as they are finished
  • Fix the Layer docker progress bar
    • If there is a single KisSequentialIteratorProgress pointing to the paint device, all is well. This is not the case.

This MR is related to my GSoC 2020 project, but is done outside its scope to enable better reviews ;)

Test Plan

Add a Fill Layer and check the render time.

Formalities Checklist

  • I confirmed this builds.
  • I confirmed Krita ran and the relevant functions work.
  • I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!)
  • I made sure my commits build individually and have good descriptions as per KDE guidelines.
  • I made sure my code conforms to the standards set in the HACKING file.
  • I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.

/cc @dkazakov

Edited by Amy spark

Merge request reports