| Summary: | Using specific color in 32-bit float image depth can cause crash | ||
|---|---|---|---|
| Product: | [Applications] krita | Reporter: | Kampidh <qampidh> |
| Component: | Color models | Assignee: | amyspark <amy> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | amy |
| Priority: | NOR | Keywords: | triaged |
| Version First Reported In: | 5.1.1 | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Microsoft Windows | ||
| URL: | https://github.com/mm2/Little-CMS/commit/aa7f240da8dc27a0bb082462889cca9026bf2b27 | ||
| Latest Commit: | https://invent.kde.org/graphics/krita/commit/9856e7b9c2904d8aae6887b4b6bf2cb2ea6826fe | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
| Attachments: |
Float32 Test File
ICC Profile from DisplayCAL calibration ICC profile of the Krita repro Extended ICC Profiles from Displaycal |
||
|
Description
Kampidh
2022-10-15 23:12:08 UTC
I'll try and reproduce, in the meanwhile, can you send a file that will reproduce the crash if the Fast Float plugin is enabled? Based on your observations, this should be achieved by painting normally with the maxed out value, saving, then enabling the optimizations. Created attachment 152872 [details]
Float32 Test File
200 x 200px image, Rec.2020 Linear Profile, 32-bit float. Color patches painted in RGB [1, 0, 0], [0, 1, 0], [0, 0, 1], and [1, 1, 1] selected from Specific Color Selector.
Crash to open with LCMS optimization turned on.
(In reply to amyspark from comment #1) > I'll try and reproduce, in the meanwhile, can you send a file that will > reproduce the crash if the Fast Float plugin is enabled? > > Based on your observations, this should be achieved by painting normally > with the maxed out value, saving, then enabling the optimizations. Oh right, I forgot to add that values above 1.0 didn't cause crash (for example to paint with [2.0, 2.0, 2.0] white) Created attachment 152923 [details]
ICC Profile from DisplayCAL calibration
Update:
So apparently this only affects the screen that have a custom profile on it. My drawing tablet is calibrated using displaycal(argyllcms) and have XYZLUT+Matrix profile on it (that I also set on Krita's Color Management > Display). When opening on secondary monitor without custom profile (sRGB default) it didn't crash.
Tried with another system with Krita 5.2.0 prealpha also confirmed this behaviour, no crash with sRGB and crash with calibrated profile.
Here I attached the custom profile that my drawing tablet has to further replicate the crash.
And after extensive testing with other profile types in DisplayCAL, here's what I got: - XYZ LUT + Matrix without BPC (default) = crash - XYZ LUT + Matrix with BPC = crash - L*a*b* LUT without BPC = crash - L*a*b* LUT with BPC = crash - Curves + Matrix without BPC = crash - Curves + Matrix with BPC = not crash Additional info: From my observation, only curves + matrix with BPC that show a significant difference (lift) in darker tones (my tablet display indeed have bad blacks though), while in LUT-based profiles, BPC doesn't seem to do anything. But this may be for another scope, as it might related to displaycal/argyllcms instead. Confirming bug, reproduced on first try with commit b19356bae8 and LittleCMS 2.13.1 *and* 2.14rc1. Stacktrace: lcms2_fast_float.dll!FloatCLUTEval(_cmstransform_struct * CMMcargo, const void * Input, void * Output, unsigned int PixelsPerLine, unsigned int LineCount, const cmsStride * Stride) Line 199 (e:\krita-win\msvc\b_deps\ext_lcms2\ext_lcms2-prefix\src\ext_lcms2\plugins\fast_float\src\fast_float_tethra.c:199) lcms2.dll!cmsDoTransform(void * Transform, const void * InputBuffer, void * OutputBuffer, unsigned int Size) Line 207 (e:\krita-win\msvc\b_deps\ext_lcms2\ext_lcms2-prefix\src\ext_lcms2\src\cmsxform.c:207) kritapigment.dll!KoColorSpace::convertPixelsTo(const unsigned char * src, unsigned char * dst, const KoColorSpace * dstColorSpace, unsigned int numPixels, KoColorConversionTransformation::Intent renderingIntent, QFlags<enum KoColorConversionTransformation::ConversionFlag> conversionFlags) Line 466 (e:\krita-win\src\libs\pigment\KoColorSpace.cpp:466) kritalcmsengine.dll!KoColorSpaceAbstract<KoRgbF32Traits>::convertPixelsTo(const unsigned char * src, unsigned char * dst, const KoColorSpace * dstColorSpace, unsigned int numPixels, KoColorConversionTransformation::Intent renderingIntent, QFlags<enum KoColorConversionTransformation::ConversionFlag> conversionFlags) Line 202 (e:\krita-win\src\libs\pigment\KoColorSpaceAbstract.h:202) kritaui.dll!KisTextureTileUpdateInfo::convertTo(const KoColorSpace * dstCS, KoColorConversionTransformation::Intent renderingIntent, QFlags<enum KoColorConversionTransformation::ConversionFlag> conversionFlags) Line 197 (e:\krita-win\src\libs\ui\opengl\kis_texture_tile_update_info.h:197) kritaui.dll!KisOpenGLUpdateInfoBuilder::buildUpdateInfo(const QRect & rect, KisSharedPtr<KisPaintDevice> projection, const QRect & bounds, int levelOfDetail, bool convertColorSpace) Line 152 (e:\krita-win\src\libs\ui\opengl\KisOpenGLUpdateInfoBuilder.cpp:152) kritaui.dll!KisOpenGLUpdateInfoBuilder::buildUpdateInfo(const QRect & rect, KisSharedPtr<KisImage> srcImage, bool convertColorSpace) Line 49 (e:\krita-win\src\libs\ui\opengl\KisOpenGLUpdateInfoBuilder.cpp:49) kritaui.dll!KisOpenGLImageTextures::updateCacheImpl(const QRect & rect, KisSharedPtr<KisImage> srcImage, bool convertColorSpace) Line 323 (e:\krita-win\src\libs\ui\opengl\kis_opengl_image_textures.cpp:323) kritaui.dll!KisOpenGLImageTextures::updateCache(const QRect & rect, KisSharedPtr<KisImage> srcImage) Line 311 (e:\krita-win\src\libs\ui\opengl\kis_opengl_image_textures.cpp:311) kritaui.dll!KisOpenGLImageTextures::initGL(QOpenGLFunctions * f) Line 119 (e:\krita-win\src\libs\ui\opengl\kis_opengl_image_textures.cpp:119) kritaui.dll!KisOpenGLCanvasRenderer::initializeGL() Line 250 (e:\krita-win\src\libs\ui\opengl\KisOpenGLCanvasRenderer.cpp:250) kritaui.dll!KisOpenGLCanvas2::initializeGL() Line 189 (e:\krita-win\src\libs\ui\opengl\kis_opengl_canvas2.cpp:189) Qt5Widgets.dll!QOpenGLWidgetPrivate::initialize() Line 863 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qopenglwidget.cpp:863) Qt5Widgets.dll!QOpenGLWidget::resizeEvent(QResizeEvent * e) Line 1331 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qopenglwidget.cpp:1331) Qt5Widgets.dll!QWidget::event(QEvent * event) Line 9415 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:9415) Qt5Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3652 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3652) Qt5Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3604 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3604) kritaui.dll!KisApplication::notify(QObject * receiver, QEvent * event) Line 757 (e:\krita-win\src\libs\ui\KisApplication.cpp:757) Qt5Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1088 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qcoreapplication.cpp:1088) Qt5Widgets.dll!QWidgetPrivate::sendPendingMoveAndResizeEvents(bool recursive, bool disableUpdates) Line 7974 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:7974) Qt5Widgets.dll!QWidgetPrivate::show_helper() Line 8027 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8027) Qt5Widgets.dll!QWidgetPrivate::showChildren(bool spontaneous) Line 8465 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8465) Qt5Widgets.dll!QWidgetPrivate::show_helper() Line 8034 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8034) Qt5Widgets.dll!QWidgetPrivate::setVisible(bool visible) Line 8389 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8389) Qt5Widgets.dll!QWidget::setVisible(bool visible) Line 8320 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8320) Qt5Widgets.dll!QWidgetPrivate::showChildren(bool spontaneous) Line 8450 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8450) Qt5Widgets.dll!QWidgetPrivate::show_helper() Line 8034 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8034) Qt5Widgets.dll!QWidgetPrivate::setVisible(bool visible) Line 8389 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8389) Qt5Widgets.dll!QWidget::setVisible(bool visible) Line 8320 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8320) Qt5Widgets.dll!QWidgetPrivate::showChildren(bool spontaneous) Line 8450 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8450) Qt5Widgets.dll!QWidgetPrivate::show_helper() Line 8034 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8034) Qt5Widgets.dll!QWidgetPrivate::setVisible(bool visible) Line 8389 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8389) Qt5Widgets.dll!QWidget::setVisible(bool visible) Line 8320 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8320) Qt5Widgets.dll!QWidgetPrivate::showChildren(bool spontaneous) Line 8450 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8450) Qt5Widgets.dll!QWidgetPrivate::show_helper() Line 8034 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8034) Qt5Widgets.dll!QWidgetPrivate::setVisible(bool visible) Line 8389 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8389) Qt5Widgets.dll!QWidget::setVisible(bool visible) Line 8320 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:8320) Qt5Widgets.dll!QMdiSubWindow::changeEvent(QEvent * changeEvent) Line 3011 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qmdisubwindow.cpp:3011) Qt5Widgets.dll!QWidget::event(QEvent * event) Line 9415 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:9415) Qt5Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3652 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3652) Qt5Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3604 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3604) kritaui.dll!KisApplication::notify(QObject * receiver, QEvent * event) Line 757 (e:\krita-win\src\libs\ui\KisApplication.cpp:757) Qt5Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1088 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qcoreapplication.cpp:1088) Qt5Widgets.dll!QWidget::setWindowState(QFlags<enum Qt::WindowState> newstate) Line 3095 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:3095) kritaui.dll!KisMainWindow::showView(KisView * imageView, QMdiSubWindow * subwin) Line 753 (e:\krita-win\src\libs\ui\KisMainWindow.cpp:753) kritaui.dll!KisMainWindow::addView(KisView * view, QMdiSubWindow * subWindow) Line 707 (e:\krita-win\src\libs\ui\KisMainWindow.cpp:707) kritaui.dll!KisMainWindow::addViewAndNotifyLoadingCompleted(KisDocument * document, QMdiSubWindow * subWindow) Line 1157 (e:\krita-win\src\libs\ui\KisMainWindow.cpp:1157) kritaui.dll!KisMainWindow::slotLoadCompleted() Line 1179 (e:\krita-win\src\libs\ui\KisMainWindow.cpp:1179) Qt5Core.dll!QMetaObject::activate(QObject * sender, int signalOffset, int local_signal_index, void * * argv) Line 3807 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qobject.cpp:3807) kritaui.dll!KisDocument::openPathInternal(const QString & path) Line 2414 (e:\krita-win\src\libs\ui\KisDocument.cpp:2414) kritaui.dll!KisDocument::openPath(const QString & _path, QFlags<enum KisDocument::OpenFlag> flags) Line 1806 (e:\krita-win\src\libs\ui\KisDocument.cpp:1806) kritaui.dll!KisMainWindow::openDocumentInternal(const QString & path, QFlags<enum KisMainWindow::OpenFlag> flags) Line 1104 (e:\krita-win\src\libs\ui\KisMainWindow.cpp:1104) kritaui.dll!KisMainWindow::openDocument(const QString & path, QFlags<enum KisMainWindow::OpenFlag> flags) Line 1078 (e:\krita-win\src\libs\ui\KisMainWindow.cpp:1078) kritaui.dll!KisWelcomePageWidget::recentDocumentClicked(QModelIndex index) Line 637 (e:\krita-win\src\libs\ui\KisWelcomePageWidget.cpp:637) kritaui.dll!KisWelcomePageWidget::qt_static_metacall(QObject * _o, QMetaObject::Call _c, int _id, void * * _a) Line 248 (e:\krita-win\msvc\b\libs\ui\kritaui_autogen\EWIEGA46WW\moc_KisWelcomePageWidget.cpp:248) Qt5Core.dll!QMetaObject::activate(QObject * sender, int signalOffset, int local_signal_index, void * * argv) Line 3807 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qobject.cpp:3807) [Inline Frame] Qt5Widgets.dll!QAbstractItemView::clicked(const QModelIndex & _t1) Line 653 (e:\krita-win\msvc\b_deps\ext_qt\b\qtbase\src\widgets\.moc\release\moc_qabstractitemview.cpp:653) Qt5Widgets.dll!QAbstractItemView::mouseReleaseEvent(QMouseEvent * event) Line 1929 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\itemviews\qabstractitemview.cpp:1929) Qt5Widgets.dll!QListView::mouseReleaseEvent(QMouseEvent * e) Line 800 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\itemviews\qlistview.cpp:800) Qt5Widgets.dll!QWidget::event(QEvent * event) Line 9415 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidget.cpp:9415) Qt5Widgets.dll!QFrame::event(QEvent * e) Line 552 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\widgets\qframe.cpp:552) Qt5Widgets.dll!QAbstractItemView::viewportEvent(QEvent * event) Line 1751 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\itemviews\qabstractitemview.cpp:1751) Qt5Core.dll!QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject * receiver, QEvent * event) Line 1214 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qcoreapplication.cpp:1214) Qt5Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3644 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3644) Qt5Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3110 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3110) kritaui.dll!KisApplication::notify(QObject * receiver, QEvent * event) Line 757 (e:\krita-win\src\libs\ui\KisApplication.cpp:757) Qt5Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1088 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qcoreapplication.cpp:1088) Qt5Widgets.dll!QApplicationPrivate::sendMouseEvent(QWidget * receiver, QMouseEvent * event, QWidget * alienWidget, QWidget * nativeWidget, QWidget * * buttonDown, QPointer<QWidget> & lastMouseReceiver, bool spontaneous, bool onlyDispatchEnterLeave) Line 2648 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:2648) Qt5Widgets.dll!QWidgetWindow::handleMouseEvent(QMouseEvent * event) Line 676 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidgetwindow.cpp:676) Qt5Widgets.dll!QWidgetWindow::event(QEvent * event) Line 294 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qwidgetwindow.cpp:294) Qt5Widgets.dll!QApplicationPrivate::notify_helper(QObject * receiver, QEvent * e) Line 3652 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3652) Qt5Widgets.dll!QApplication::notify(QObject * receiver, QEvent * e) Line 3604 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\widgets\kernel\qapplication.cpp:3604) kritaui.dll!KisApplication::notify(QObject * receiver, QEvent * event) Line 757 (e:\krita-win\src\libs\ui\KisApplication.cpp:757) Qt5Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1088 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qcoreapplication.cpp:1088) Qt5Gui.dll!QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent * e) Line 2168 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\gui\kernel\qguiapplication.cpp:2168) Qt5Gui.dll!QWindowSystemInterface::sendWindowSystemEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 1163 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\gui\kernel\qwindowsysteminterface.cpp:1163) Qt5Core.dll!qt_internal_proc(HWND__ * hwnd, unsigned int message, unsigned __int64 wp, __int64 lp) Line 250 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qeventdispatcher_win.cpp:250) user32.dll!UserCallWinProcCheckWow() (Origen desconocido:0) user32.dll!DispatchMessageWorker() (Origen desconocido:0) Qt5Core.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 650 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qeventdispatcher_win.cpp:650) qwindows.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 75 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\platformsupport\eventdispatchers\qwindowsguieventdispatcher.cpp:75) [Inline Frame] Qt5Core.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>) Line 138 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qeventloop.cpp:138) Qt5Core.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 224 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qeventloop.cpp:224) Qt5Core.dll!QCoreApplication::exec() Line 1389 (e:\krita-win\msvc\b_deps\ext_qt\s\qtbase\src\corelib\kernel\qcoreapplication.cpp:1389) krita.dll!krita_main(int argc, char * * argv) Line 727 (e:\krita-win\src\krita\main.cc:727) krita.exe!00007ff682b31c97() (Origen desconocido:0) krita.exe!00007ff682b31202() (Origen desconocido:0) kernel32.dll!BaseThreadInitThunk() (Origen desconocido:0) ntdll.dll!RtlUserThreadStart() (Origen desconocido:0) Created attachment 153014 [details]
ICC profile of the Krita repro
Attaching the source's profile for Marti's reference.
Created attachment 153068 [details]
Extended ICC Profiles from Displaycal
A quick retest, curves without bpc works. So indeed it only affects LUT-based profiles.
Here I attached another profile I mentioned before for extended testing as well.
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1626 Git commit eaf3b538e3aa1e1bdb8ed35bd85097070a3c59a5 by L. E. Segovia. Committed on 31/10/2022 at 21:31. Pushed by lsegovia into branch 'master'. Update LittleCMS to 2.14rc1 and upgrade its CMake toolchain D +0 -277 3rdparty/ext_lcms2/0001-Add-cmake-build-system.patch A +30 -0 3rdparty/ext_lcms2/0001-Fix-Krita-segfault.patch A +324 -0 3rdparty/ext_lcms2/0002-Add-modern-CMake-toolchain.patch D +0 -42 3rdparty/ext_lcms2/0002-Quick-check-for-SSE-support.patch D +0 -227 3rdparty/ext_lcms2/0003-Separate-fast-float-plugin.patch M +4 -5 3rdparty/ext_lcms2/CMakeLists.txt https://invent.kde.org/graphics/krita/commit/eaf3b538e3aa1e1bdb8ed35bd85097070a3c59a5 Git commit 9856e7b9c2904d8aae6887b4b6bf2cb2ea6826fe by L. E. Segovia. Committed on 31/10/2022 at 21:33. Pushed by lsegovia into branch 'krita/5.1'. Update LittleCMS to 2.14rc1 and upgrade its CMake toolchain (cherry picked from commit eaf3b538e3aa1e1bdb8ed35bd85097070a3c59a5) D +0 -277 3rdparty/ext_lcms2/0001-Add-cmake-build-system.patch A +30 -0 3rdparty/ext_lcms2/0001-Fix-Krita-segfault.patch A +324 -0 3rdparty/ext_lcms2/0002-Add-modern-CMake-toolchain.patch D +0 -42 3rdparty/ext_lcms2/0002-Quick-check-for-SSE-support.patch D +0 -227 3rdparty/ext_lcms2/0003-Separate-fast-float-plugin.patch M +4 -5 3rdparty/ext_lcms2/CMakeLists.txt https://invent.kde.org/graphics/krita/commit/9856e7b9c2904d8aae6887b4b6bf2cb2ea6826fe |