[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwin
Subject:    Review Request: Only include currently active effects in the effect
From:       Martin_Gräßlin <kde () martin-graesslin ! com>
Date:       2011-08-27 9:34:48
Message-ID: 20110827093448.12782.10688 () vidsolbach ! de
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/102449/
-----------------------------------------------------------

Review request for kwin and Alex Fiestas.


Summary
-------

I did a callgrind analysis of KWin and noticed (as expected) that the effec=
t chain is the most often called code in KWin and that it is not very perfo=
rmant due to the operator[] used all the time.

This change allows effects to declare themselve as active, which means they=
 will be included in the effect chain. If an effect is currently not active=
, it will not be called. The result is that only a very small number of eff=
ects is used in the current frame eliminating completely the hot path insid=
e kwin. After that change Toplevel::windowType and Scene::Window::performPa=
int are the most expensive methods. PerformePaint for example was not even =
in the top ten before!

PresentWindows, DesktopGrid and Slideback are not adjusted yet, because Win=
dowMotionmanager::areWindowsMoving() is not const. This will be changed as =
Slideback is now in the hot path

The analysis was motivated by complaints from afiestas about too bad framer=
ate/performance, bringing me thinking about what during rendering a frame m=
ight be slow.


Diffs
-----

  kwin/effects.h 0d57339 =

  kwin/effects.cpp bbf5a45 =

  kwin/effects/boxswitch/boxswitch.h c0258a8 =

  kwin/effects/boxswitch/boxswitch.cpp 5a09382 =

  kwin/effects/coverswitch/coverswitch.h 26e9a4f =

  kwin/effects/coverswitch/coverswitch.cpp 45c7621 =

  kwin/effects/cube/cube.h c04a865 =

  kwin/effects/cube/cube.cpp 91997bd =

  kwin/effects/cube/cubeslide.h 66f96ad =

  kwin/effects/cube/cubeslide.cpp a1332ea =

  kwin/effects/dashboard/dashboard.h 4b3cbaf =

  kwin/effects/dashboard/dashboard.cpp ccee74b =

  kwin/effects/dialogparent/dialogparent.h c966f60 =

  kwin/effects/dialogparent/dialogparent.cpp d5a8d3f =

  kwin/effects/dimscreen/dimscreen.h 744d114 =

  kwin/effects/dimscreen/dimscreen.cpp cb1df9f =

  kwin/effects/explosion/explosion.h b112ab1 =

  kwin/effects/explosion/explosion.cpp 75f56ac =

  kwin/effects/fade/fade.h c26298a =

  kwin/effects/fade/fade.cpp 52f0e37 =

  kwin/effects/fadedesktop/fadedesktop.h caee1a6 =

  kwin/effects/fadedesktop/fadedesktop.cpp d07b9ac =

  kwin/effects/fallapart/fallapart.h a29ea0b =

  kwin/effects/fallapart/fallapart.cpp 16fd613 =

  kwin/effects/flipswitch/flipswitch.h d06005e =

  kwin/effects/flipswitch/flipswitch.cpp b68c1c9 =

  kwin/effects/glide/glide.h bb793dd =

  kwin/effects/glide/glide.cpp 717bd54 =

  kwin/effects/highlightwindow/highlightwindow.h c13a887 =

  kwin/effects/highlightwindow/highlightwindow.cpp b175620 =

  kwin/effects/invert/invert.h 0d79ba4 =

  kwin/effects/invert/invert.cpp 6929880 =

  kwin/effects/login/login.h 67b4d7e =

  kwin/effects/login/login.cpp fd26f52 =

  kwin/effects/logout/logout.h a6a00f8 =

  kwin/effects/logout/logout.cpp 7880dae =

  kwin/effects/lookingglass/lookingglass.h cba2242 =

  kwin/effects/lookingglass/lookingglass.cpp 783823e =

  kwin/effects/magiclamp/magiclamp.h 774ddb7 =

  kwin/effects/magiclamp/magiclamp.cpp 6f2c6ea =

  kwin/effects/magnifier/magnifier.h 0e4e675 =

  kwin/effects/magnifier/magnifier.cpp 3e216f6 =

  kwin/effects/minimizeanimation/minimizeanimation.h 20fa156 =

  kwin/effects/minimizeanimation/minimizeanimation.cpp 8eb87c4 =

  kwin/effects/mousemark/mousemark.h 22094be =

  kwin/effects/mousemark/mousemark.cpp 733f94af =

  kwin/effects/outline/outline.h 9c144b4 =

  kwin/effects/outline/outline.cpp d2990e0 =

  kwin/effects/scalein/scalein.h 6038bf0 =

  kwin/effects/scalein/scalein.cpp 732646d =

  kwin/effects/screenshot/screenshot.h 040ef61 =

  kwin/effects/screenshot/screenshot.cpp d12d77d =

  kwin/effects/sheet/sheet.h a2bb1ba =

  kwin/effects/sheet/sheet.cpp c28a388 =

  kwin/effects/slide/slide.h 9ad645e =

  kwin/effects/slide/slide.cpp 3e0df05 =

  kwin/effects/slidingpopups/slidingpopups.h bc58f95 =

  kwin/effects/slidingpopups/slidingpopups.cpp 4ffd3e2 =

  kwin/effects/snaphelper/snaphelper.h b2ab2e0 =

  kwin/effects/snaphelper/snaphelper.cpp 8b12532 =

  kwin/effects/startupfeedback/startupfeedback.h 1e272c9 =

  kwin/effects/startupfeedback/startupfeedback.cpp 0d2884b =

  kwin/effects/taskbarthumbnail/taskbarthumbnail.h 5412fe9 =

  kwin/effects/taskbarthumbnail/taskbarthumbnail.cpp 7761ba5 =

  kwin/effects/thumbnailaside/thumbnailaside.h e1af63e =

  kwin/effects/thumbnailaside/thumbnailaside.cpp 99bcf9a =

  kwin/effects/trackmouse/trackmouse.h e78c384 =

  kwin/effects/trackmouse/trackmouse.cpp 14fe15a =

  kwin/effects/windowgeometry/windowgeometry.h d9b632b =

  kwin/effects/windowgeometry/windowgeometry.cpp d682751 =

  kwin/effects/wobblywindows/wobblywindows.h d6b262b =

  kwin/effects/wobblywindows/wobblywindows.cpp f70d7e0 =

  kwin/effects/zoom/zoom.h fee4dd1 =

  kwin/effects/zoom/zoom.cpp 31d4c78 =

  kwin/libkwineffects/kwineffects.h d75d64d =

  kwin/libkwineffects/kwineffects.cpp 857cc42 =


Diff: http://git.reviewboard.kde.org/r/102449/diff


Testing
-------

Effects which I use are still working. Not all effects tested.


Thanks,

Martin


[Attachment #5 (text/html)]

<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 \
solid;">  <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/102449/">http://git.reviewboard.kde.org/r/102449/</a>
  </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" \
style="background-image: \
url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); \
background-position: left top; background-repeat: repeat-x; border: 1px black \
solid;">  <tr>
  <td>

<div>Review request for kwin and Alex Fiestas.</div>
<div>By Martin Gräßlin.</div>





<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: \
1px solid #b8b5a0">  <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;">I did a callgrind analysis of KWin and noticed (as expected) that the \
effect chain is the most often called code in KWin and that it is not very performant \
due to the operator[] used all the time.

This change allows effects to declare themselve as active, which means they will be \
included in the effect chain. If an effect is currently not active, it will not be \
called. The result is that only a very small number of effects is used in the current \
frame eliminating completely the hot path inside kwin. After that change \
Toplevel::windowType and Scene::Window::performPaint are the most expensive methods. \
PerformePaint for example was not even in the top ten before!

PresentWindows, DesktopGrid and Slideback are not adjusted yet, because \
WindowMotionmanager::areWindowsMoving() is not const. This will be changed as \
Slideback is now in the hot path

The analysis was motivated by complaints from afiestas about too bad \
framerate/performance, bringing me thinking about what during rendering a frame might \
be slow.</pre>  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: \
1px solid #b8b5a0">  <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;">Effects which I use are still working. Not all effects tested.</pre>  \
</td>  </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>kwin/effects.h <span style="color: grey">(0d57339)</span></li>

 <li>kwin/effects.cpp <span style="color: grey">(bbf5a45)</span></li>

 <li>kwin/effects/boxswitch/boxswitch.h <span style="color: \
grey">(c0258a8)</span></li>

 <li>kwin/effects/boxswitch/boxswitch.cpp <span style="color: \
grey">(5a09382)</span></li>

 <li>kwin/effects/coverswitch/coverswitch.h <span style="color: \
grey">(26e9a4f)</span></li>

 <li>kwin/effects/coverswitch/coverswitch.cpp <span style="color: \
grey">(45c7621)</span></li>

 <li>kwin/effects/cube/cube.h <span style="color: grey">(c04a865)</span></li>

 <li>kwin/effects/cube/cube.cpp <span style="color: grey">(91997bd)</span></li>

 <li>kwin/effects/cube/cubeslide.h <span style="color: grey">(66f96ad)</span></li>

 <li>kwin/effects/cube/cubeslide.cpp <span style="color: grey">(a1332ea)</span></li>

 <li>kwin/effects/dashboard/dashboard.h <span style="color: \
grey">(4b3cbaf)</span></li>

 <li>kwin/effects/dashboard/dashboard.cpp <span style="color: \
grey">(ccee74b)</span></li>

 <li>kwin/effects/dialogparent/dialogparent.h <span style="color: \
grey">(c966f60)</span></li>

 <li>kwin/effects/dialogparent/dialogparent.cpp <span style="color: \
grey">(d5a8d3f)</span></li>

 <li>kwin/effects/dimscreen/dimscreen.h <span style="color: \
grey">(744d114)</span></li>

 <li>kwin/effects/dimscreen/dimscreen.cpp <span style="color: \
grey">(cb1df9f)</span></li>

 <li>kwin/effects/explosion/explosion.h <span style="color: \
grey">(b112ab1)</span></li>

 <li>kwin/effects/explosion/explosion.cpp <span style="color: \
grey">(75f56ac)</span></li>

 <li>kwin/effects/fade/fade.h <span style="color: grey">(c26298a)</span></li>

 <li>kwin/effects/fade/fade.cpp <span style="color: grey">(52f0e37)</span></li>

 <li>kwin/effects/fadedesktop/fadedesktop.h <span style="color: \
grey">(caee1a6)</span></li>

 <li>kwin/effects/fadedesktop/fadedesktop.cpp <span style="color: \
grey">(d07b9ac)</span></li>

 <li>kwin/effects/fallapart/fallapart.h <span style="color: \
grey">(a29ea0b)</span></li>

 <li>kwin/effects/fallapart/fallapart.cpp <span style="color: \
grey">(16fd613)</span></li>

 <li>kwin/effects/flipswitch/flipswitch.h <span style="color: \
grey">(d06005e)</span></li>

 <li>kwin/effects/flipswitch/flipswitch.cpp <span style="color: \
grey">(b68c1c9)</span></li>

 <li>kwin/effects/glide/glide.h <span style="color: grey">(bb793dd)</span></li>

 <li>kwin/effects/glide/glide.cpp <span style="color: grey">(717bd54)</span></li>

 <li>kwin/effects/highlightwindow/highlightwindow.h <span style="color: \
grey">(c13a887)</span></li>

 <li>kwin/effects/highlightwindow/highlightwindow.cpp <span style="color: \
grey">(b175620)</span></li>

 <li>kwin/effects/invert/invert.h <span style="color: grey">(0d79ba4)</span></li>

 <li>kwin/effects/invert/invert.cpp <span style="color: grey">(6929880)</span></li>

 <li>kwin/effects/login/login.h <span style="color: grey">(67b4d7e)</span></li>

 <li>kwin/effects/login/login.cpp <span style="color: grey">(fd26f52)</span></li>

 <li>kwin/effects/logout/logout.h <span style="color: grey">(a6a00f8)</span></li>

 <li>kwin/effects/logout/logout.cpp <span style="color: grey">(7880dae)</span></li>

 <li>kwin/effects/lookingglass/lookingglass.h <span style="color: \
grey">(cba2242)</span></li>

 <li>kwin/effects/lookingglass/lookingglass.cpp <span style="color: \
grey">(783823e)</span></li>

 <li>kwin/effects/magiclamp/magiclamp.h <span style="color: \
grey">(774ddb7)</span></li>

 <li>kwin/effects/magiclamp/magiclamp.cpp <span style="color: \
grey">(6f2c6ea)</span></li>

 <li>kwin/effects/magnifier/magnifier.h <span style="color: \
grey">(0e4e675)</span></li>

 <li>kwin/effects/magnifier/magnifier.cpp <span style="color: \
grey">(3e216f6)</span></li>

 <li>kwin/effects/minimizeanimation/minimizeanimation.h <span style="color: \
grey">(20fa156)</span></li>

 <li>kwin/effects/minimizeanimation/minimizeanimation.cpp <span style="color: \
grey">(8eb87c4)</span></li>

 <li>kwin/effects/mousemark/mousemark.h <span style="color: \
grey">(22094be)</span></li>

 <li>kwin/effects/mousemark/mousemark.cpp <span style="color: \
grey">(733f94af)</span></li>

 <li>kwin/effects/outline/outline.h <span style="color: grey">(9c144b4)</span></li>

 <li>kwin/effects/outline/outline.cpp <span style="color: grey">(d2990e0)</span></li>

 <li>kwin/effects/scalein/scalein.h <span style="color: grey">(6038bf0)</span></li>

 <li>kwin/effects/scalein/scalein.cpp <span style="color: grey">(732646d)</span></li>

 <li>kwin/effects/screenshot/screenshot.h <span style="color: \
grey">(040ef61)</span></li>

 <li>kwin/effects/screenshot/screenshot.cpp <span style="color: \
grey">(d12d77d)</span></li>

 <li>kwin/effects/sheet/sheet.h <span style="color: grey">(a2bb1ba)</span></li>

 <li>kwin/effects/sheet/sheet.cpp <span style="color: grey">(c28a388)</span></li>

 <li>kwin/effects/slide/slide.h <span style="color: grey">(9ad645e)</span></li>

 <li>kwin/effects/slide/slide.cpp <span style="color: grey">(3e0df05)</span></li>

 <li>kwin/effects/slidingpopups/slidingpopups.h <span style="color: \
grey">(bc58f95)</span></li>

 <li>kwin/effects/slidingpopups/slidingpopups.cpp <span style="color: \
grey">(4ffd3e2)</span></li>

 <li>kwin/effects/snaphelper/snaphelper.h <span style="color: \
grey">(b2ab2e0)</span></li>

 <li>kwin/effects/snaphelper/snaphelper.cpp <span style="color: \
grey">(8b12532)</span></li>

 <li>kwin/effects/startupfeedback/startupfeedback.h <span style="color: \
grey">(1e272c9)</span></li>

 <li>kwin/effects/startupfeedback/startupfeedback.cpp <span style="color: \
grey">(0d2884b)</span></li>

 <li>kwin/effects/taskbarthumbnail/taskbarthumbnail.h <span style="color: \
grey">(5412fe9)</span></li>

 <li>kwin/effects/taskbarthumbnail/taskbarthumbnail.cpp <span style="color: \
grey">(7761ba5)</span></li>

 <li>kwin/effects/thumbnailaside/thumbnailaside.h <span style="color: \
grey">(e1af63e)</span></li>

 <li>kwin/effects/thumbnailaside/thumbnailaside.cpp <span style="color: \
grey">(99bcf9a)</span></li>

 <li>kwin/effects/trackmouse/trackmouse.h <span style="color: \
grey">(e78c384)</span></li>

 <li>kwin/effects/trackmouse/trackmouse.cpp <span style="color: \
grey">(14fe15a)</span></li>

 <li>kwin/effects/windowgeometry/windowgeometry.h <span style="color: \
grey">(d9b632b)</span></li>

 <li>kwin/effects/windowgeometry/windowgeometry.cpp <span style="color: \
grey">(d682751)</span></li>

 <li>kwin/effects/wobblywindows/wobblywindows.h <span style="color: \
grey">(d6b262b)</span></li>

 <li>kwin/effects/wobblywindows/wobblywindows.cpp <span style="color: \
grey">(f70d7e0)</span></li>

 <li>kwin/effects/zoom/zoom.h <span style="color: grey">(fee4dd1)</span></li>

 <li>kwin/effects/zoom/zoom.cpp <span style="color: grey">(31d4c78)</span></li>

 <li>kwin/libkwineffects/kwineffects.h <span style="color: \
grey">(d75d64d)</span></li>

 <li>kwin/libkwineffects/kwineffects.cpp <span style="color: \
grey">(857cc42)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/102449/diff/" style="margin-left: \
3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>



_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic