Bug 442796

Summary: Wraparound mode not updating other rows in real time
Product: [Applications] krita Reporter: Alvin Wong <alvin>
Component: OpenGL CanvasAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: normal Keywords: regression, release_blocker
Priority: NOR    
Version: nightly build (please specify the git hash!)   
Target Milestone: ---   
Platform: unspecified   
OS: Unspecified   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Alvin Wong 2021-09-22 09:53:04 UTC
When painting in the main canvas, the WA mode copies on the same row updates in real time, but not those on the other rows -- they are delayed and only updated in intervals, sometimes becoming outdated until the next mouse move.

Probably a regression from https://invent.kde.org/graphics/krita/-/commit/6a5e83d1f4985998b33a059245dcafe5d5b98160

Tested with commit 5f8eb59328
Comment 1 Dmitry Kazakov 2021-09-22 12:32:49 UTC
Git commit f5255d4e73d0a92e5e48f823a89e17436d286394 by Dmitry Kazakov.
Committed on 22/09/2021 at 12:32.
Pushed by dkazakov into branch 'master'.

Fix artifacts on the canvas when the display scaling is set to 110%

The problem is that we do "cropping" of the painted area twice during
one frame. Firstly, we enable stencil test to avoid too much pixels
to be rendered. And secondly, we limit the number of tiles that
are rendered on screen. And these two limit must agree in how they
do rounding.

M  +26   -6    libs/ui/opengl/kis_opengl_canvas2.cpp
M  +3    -2    libs/ui/opengl/kis_opengl_canvas2.h

https://invent.kde.org/graphics/krita/commit/f5255d4e73d0a92e5e48f823a89e17436d286394
Comment 2 Dmitry Kazakov 2021-09-28 08:59:24 UTC
Git commit c2957b2d0822afeef27d165713757fdf8bced2c8 by Dmitry Kazakov.
Committed on 28/09/2021 at 06:42.
Pushed by dkazakov into branch 'krita/5.0'.

Fix artifacts on the canvas when the display scaling is set to 110%

The problem is that we do "cropping" of the painted area twice during
one frame. Firstly, we enable stencil test to avoid too much pixels
to be rendered. And secondly, we limit the number of tiles that
are rendered on screen. And these two limit must agree in how they
do rounding.

M  +26   -6    libs/ui/opengl/kis_opengl_canvas2.cpp
M  +3    -2    libs/ui/opengl/kis_opengl_canvas2.h

https://invent.kde.org/graphics/krita/commit/c2957b2d0822afeef27d165713757fdf8bced2c8
Comment 3 Dmitry Kazakov 2021-10-01 10:24:55 UTC
Git commit 21e737e9311ad8605c39cd133bbc29f17288c0db by Dmitry Kazakov.
Committed on 01/10/2021 at 10:24.
Pushed by dkazakov into branch 'master'.

Fix updates in wraparound mode

The previos algorithm was just incorrect, it rewritten the central line
multiple times (due to the shared value in lambda) :(

M  +34   -1    libs/image/kis_wrapped_rect.h
M  +168  -0    libs/image/tests/kis_algebra_2d_test.cpp
M  +3    -0    libs/image/tests/kis_algebra_2d_test.h
M  +11   -26   libs/ui/canvas/kis_canvas2.cpp

https://invent.kde.org/graphics/krita/commit/21e737e9311ad8605c39cd133bbc29f17288c0db
Comment 4 Dmitry Kazakov 2021-10-01 10:40:20 UTC
Git commit ce3fc08b904bb8b4417997dad832bf645e89ee7e by Dmitry Kazakov.
Committed on 01/10/2021 at 10:40.
Pushed by dkazakov into branch 'krita/5.0'.

Fix updates in wraparound mode

The previos algorithm was just incorrect, it rewritten the central line
multiple times (due to the shared value in lambda) :(

M  +34   -1    libs/image/kis_wrapped_rect.h
M  +168  -0    libs/image/tests/kis_algebra_2d_test.cpp
M  +3    -0    libs/image/tests/kis_algebra_2d_test.h
M  +11   -26   libs/ui/canvas/kis_canvas2.cpp

https://invent.kde.org/graphics/krita/commit/ce3fc08b904bb8b4417997dad832bf645e89ee7e