Bug 320213

Summary: SmudgeBrush and a Layer with TransparencyMask performance [BUG]
Product: krita Reporter: Paul Geraskin <paulgeraskin>
Component: Brush enginesAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: dimula73
Priority: NOR    
Version: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:

Description Paul Geraskin 2013-05-24 12:56:06 UTC
Hi devs.

Here is the bug with a SmudgeBrush and a Layer with TransparencyMask. DmitryK knows about it. 

My video: https://vimeo.com/66896205

How to repeat it:
- create a new transparent layer
- add Transparency Mask
- Take any Smudge Brush
- Paint on a layer. 
You will get very big performance issue.

My machine: Linux kubuntu 64bit, qt 4.8.1, Krita 2.7 git.
Bug appears with opengl and without opengl.

Thanks.
Comment 1 Dmitry Kazakov 2013-05-24 13:06:00 UTC
It must be some exactBounds() calculation problem. Because the bug happens only on layers with fully transparent default pixel, which is the condition of disabling fast-path branch in the calculation of KisPaintDevice::exactBounds().
Comment 2 Dmitry Kazakov 2013-12-24 11:25:23 UTC
Git commit bed45070e34608d950d02e1ff3ed2e440ff5e597 by Dmitry Kazakov.
Committed on 24/12/2013 at 11:24.
Pushed by dkazakov into branch 'master'.

Fix speed regression when painting in BuildUp mode on a Transparent Layer with a Transparency Mask

The KisSelectionDefaultBounds should not call exactBounds() every time,
since it would result in constant boudns recalculation when the user
paints in BuildUp mode (which is always the case for ColorSmudgeOp).

M  +1    -1    krita/image/kis_default_bounds.cpp
M  +0    -1    krita/image/kis_paint_device.cc

http://commits.kde.org/calligra/bed45070e34608d950d02e1ff3ed2e440ff5e597
Comment 3 Dmitry Kazakov 2013-12-28 14:58:46 UTC
Git commit 148bc356a9f23ba1f1c9daee1f5885aca05637a4 by Dmitry Kazakov.
Committed on 24/12/2013 at 11:24.
Pushed by dkazakov into branch 'calligra/2.8'.

Fix speed regression when painting in BuildUp mode on a Transparent Layer with a Transparency Mask

The KisSelectionDefaultBounds should not call exactBounds() every time,
since it would result in constant boudns recalculation when the user
paints in BuildUp mode (which is always the case for ColorSmudgeOp).

M  +1    -1    krita/image/kis_default_bounds.cpp
M  +0    -1    krita/image/kis_paint_device.cc

http://commits.kde.org/calligra/148bc356a9f23ba1f1c9daee1f5885aca05637a4