Zbigniew Jędrzejewski-Szmek wrote:
> With python3-pyqt6-6.8.0-0.1.fc42.x86_64, we get a difference in how the
> icons are rendered:
> 
>     calibre-7.20.0-1.fc42.x86_64
>         modified-S.5........
>         /usr/share/icons/hicolor/16x16/apps/calibre-gui.png
>         modified-S.5........
>         /usr/share/icons/hicolor/32x32/apps/calibre-ebook-edit.png
>         modified-S.5........
>         /usr/share/icons/hicolor/32x32/apps/calibre-gui.png
>         modified-S.5........
>         /usr/share/icons/hicolor/32x32/apps/calibre-viewer.png ...
> 
> There are some tiny differences in shading of some pixels. The difference
> is not discernible visually for me. [1] has example icons attached.
> 
> Is this a bug in Qt and implementation of QImage.scaled [3] ?

As I understand the Qt source code, QImage.scaled with the 
Qt.TransformationMode.SmoothTransformation flag ends up calling 
QImage.smoothScaled (QImage.scaled calls the general QImage.transformed, 
which then detects the special case and calls QImage.smoothScaled), which in 
turn calls the private qSmoothScaleImage. And that one uses a different 
algorithm based on whether the CPU is runtime-detected to support SSE 4.1 or 
not. (For non-x86, there are also optimized implementations for ARM NEON and 
Longsoon LSX, also with runtime detection, otherwise the generic C 
implementation is used, as on pre-SSE-4.1 x86.) See 
https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/painting/qimagescale.cpp 
and 
https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/painting/qimagescale_sse4.cpp
 
. It is likely that the vectorized implementation rounds slightly 
differently. So you then end up with different results when building on non-
identical builder hardware.

        Kevin Kofler

-- 
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to