zzag updated this revision to Diff 42505. zzag added a comment. Introduce BoxShadowRenderer helper BoxShadowRenderer is a helper to render box shadows. The main benefit of this class is that it takes care of allocating big enough shadow texture, so the resulting shadows are not clipped, etc. Also, conceptually, it makes sense to have it. The box blur implementation is based on AlphaBoxBlur from Firefox, which means that the resulting shadows look quite similar to what Firefox would render. With debug build, opened web browser (Firefox), and a text editor (VS Code), on average it takes less than 16ms to render decoration shadows for all sizes: - small: <1 ms - medium: 1-2ms - large: 5ms (+/- 1ms) - very large: 11ms (+/- 1ms) Things to do: - revise shadow params (shadows are rendered slightly differently now) - clean up the code REPOSITORY R31 Breeze CHANGES SINCE LAST UPDATE https://phabricator.kde.org/D15514?vs=42295&id=42505 BRANCH zzag/box-shadow-helper-box-blur REVISION DETAIL https://phabricator.kde.org/D15514 AFFECTED FILES CMakeLists.txt cmake/Modules/FindFFTW.cmake kdecoration/breezedecoration.cpp kstyle/breezeshadowhelper.cpp libbreezecommon/CMakeLists.txt libbreezecommon/breezeboxshadowhelper.cpp libbreezecommon/breezeboxshadowhelper.h libbreezecommon/breezeboxshadowrenderer.cpp libbreezecommon/breezeboxshadowrenderer.h To: zzag, #kwin, #plasma Cc: cfeck, ngraham, abetts, plasma-devel, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, sebas, apol, mart