I noticed Krita 3.1 RC does not show "High Quality Filtering" option in OpenGL setting. I've tested this on the following setups: 1. Intel Core m3-6Y30's integrated HD Graphics 515 (GT2), Ubuntu Gnome 16.10 2. Celeron N3150's integrated HD Graphics 400 (GT1), Windows 10 3. AMD Radeon R7 250E (Cape Verde PRO, GCN 1st Gen), Ubuntu Gnome 16.10 4. AMD FirePro W5100 (Bonaire Pro, GCN 2nd Gen), Ubuntu Gnome 16.10 All of these GPUs have OpenGL 4.x capacity on both Windows and Linux, yet Krita 3.1 RC does not show "High Quality Filtering" on any of them.
~$ ./krita-3.0.94-x86_64.appimage QCoreApplication::arguments: Please instantiate the QApplication object first krita.lib.pigment: Compiled for arch: 6 krita.lib.pigment: Features supported: krita.lib.pigment: "SSE2" --- yes krita.lib.pigment: "SSSE3" --- yes krita.lib.pigment: "SSE4.1" --- yes krita.lib.pigment: "AVX " --- yes krita.lib.pigment: "AVX2 " --- no OpenGL Info Vendor: X.Org Renderer: Gallium 0.4 on AMD CAPE VERDE (DRM 2.46.0 / 4.8.0-30-generic, LLVM 3.8.1) Version: 3.0 Mesa 12.0.3 Shading language: 1.30 Requested format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 2) Current format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 0) Version: 3 . 0 Supports deprecated functions true krita has opengl true Setting XDG_DATA_DIRS "/tmp/.mount_Cc6zzd/usr/bin/../share:./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop" Available translations QSet("he", "eo", "oc", "ug", "be", "en_GB", "pt_BR", "se", "ca", "nn", "es", "km", "ja", "hi", "ro", "sv", "mai", "fi", "et", "el", "hne", "fa", "hr", "eu", "sq", "da", "pt", "zh_TW", "bs", "sk", "mk", "ru", "ne", "ia", "tg", "fy", "th", "ko", "is", "sl", "bg", "cs", "hu", "br", "de", "ms", "kk", "af", "gl", "fr", "nl", "wa", "ar", "ca@valencia", "ga", "mr", "xh", "en_US", "it", "nb", "uz", "nds", "uz@cyrillic", "tr", "uk", "vi", "ast", "lt", "pl", "lv", "zh_CN", "cy", "ta", "pa") Available domain translations QSet("he", "eo", "oc", "ug", "be", "en_GB", "pt_BR", "se", "ca", "nn", "es", "km", "ja", "hi", "ro", "sv", "mai", "fi", "et", "el", "hne", "fa", "hr", "eu", "sq", "da", "pt", "zh_TW", "bs", "sk", "mk", "ru", "ne", "ia", "tg", "fy", "th", "ko", "is", "sl", "bg", "cs", "hu", "br", "de", "ms", "kk", "af", "gl", "fr", "nl", "wa", "ar", "ca@valencia", "ga", "mr", "xh", "en_US", "it", "nb", "uz", "nds", "uz@cyrillic", "tr", "uk", "vi", "ast", "lt", "pl", "lv", "zh_CN", "cy", "ta", "pa") Override language: "" libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles QObject::connect: No such slot KBugReport::_k_appChanged(int)
~$ glxinfo | grep "OpenGL version" OpenGL version string: 3.0 Mesa 12.0.3 ~$ glxinfo | grep -i opengl OpenGL vendor string: X.Org OpenGL renderer string: Gallium 0.4 on AMD CAPE VERDE (DRM 2.46.0 / 4.8.0-30-generic, LLVM 3.8.1) OpenGL core profile version string: 4.1 (Core Profile) Mesa 12.0.3 OpenGL core profile shading language version string: 4.10 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 12.0.3 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 12.0.3 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions:
I was slightly inaccurate on Twitter -- Twitter is not the easies medium for conversations like this! We check for OpenGL 3.0.2, which is the real minimum. As you can see, these drivers report only 3.0, which isn't good enough anymore, I'm afraid :-(.
I tested the current stable krita-3.0.1.1 today, it has High Quality Filtering on the same setup. Regardless of OpenGL still showing 3.0: ./krita-3.0.1.1-x86_64.appimage QCoreApplication::arguments: Please instantiate the QApplication object first krita.lib.pigment: Compiled for arch: 7 krita.lib.pigment: Features supported: krita.lib.pigment: "SSE2" --- yes krita.lib.pigment: "SSSE3" --- yes krita.lib.pigment: "SSE4.1" --- yes krita.lib.pigment: "AVX " --- yes krita.lib.pigment: "AVX2 " --- yes OpenGL Info Vendor: X.Org Renderer: Gallium 0.4 on AMD BONAIRE (DRM 2.46.0 / 4.8.0-30-lowlatency, LLVM 3.8.1) Version: 3.0 Mesa 12.0.3 Shading language: 1.30 Requested format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 2) Current format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 0) krita has opengl true Setting XDG_DATA_DIRS "/tmp/.mount_bmVbWF/usr/bin/../share:./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop" Available translations QSet("cy", "sl", "da", "lv", "tg", "xh", "th", "zh_TW", "ar", "tr", "fi", "pl", "uz", "ko", "sk", "pt_BR", "hr", "vi", "nn", "en_GB", "ga", "fy", "eu", "wa", "ja", "sq", "gl", "ca@valencia", "hi", "kk", "hu", "af", "se", "km", "ms", "pa", "mk", "es", "be", "ru", "ta", "bg", "zh_CN", "uk", "ro", "eo", "ug", "is", "ia", "ne", "he", "fa", "de", "cs", "mai", "mr", "lt", "el", "fr", "bs", "uz@cyrillic", "ast", "en_US", "br", "pt", "oc", "ca", "nb", "it", "sv", "et", "nl", "nds", "hne") Available domain translations QSet("cy", "sl", "da", "lv", "tg", "xh", "th", "zh_TW", "ar", "tr", "fi", "pl", "uz", "ko", "sk", "pt_BR", "hr", "vi", "nn", "en_GB", "ga", "fy", "eu", "wa", "ja", "sq", "gl", "ca@valencia", "hi", "kk", "hu", "af", "se", "km", "ms", "pa", "mk", "es", "be", "ru", "ta", "bg", "zh_CN", "uk", "ro", "eo", "ug", "is", "ia", "ne", "he", "fa", "de", "cs", "mai", "mr", "lt", "el", "fr", "bs", "uz@cyrillic", "ast", "en_US", "br", "pt", "oc", "ca", "nb", "it", "sv", "et", "nl", "nds", "hne") Override language: "" KoJsonTrader will load its plugins from "/tmp/.mount_bmVbWF/usr/lib/kritaplugins" libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles QObject::connect: No such signal KisBrushOpSettingsWidget::sigSaveLockedConfig(KisPropertiesConfigurationSP) QObject::connect: (sender name: 'brush option widget') QObject::connect: (receiver name: 'paintopbox') QObject::connect: No such signal KisBrushOpSettingsWidget::sigDropLockedConfig(KisPropertiesConfigurationSP) QObject::connect: (sender name: 'brush option widget') QObject::connect: (receiver name: 'paintopbox')
I can understand intel has weak GPU. I can understand Linux has driver problem. But there is no way AMD can do it wrong with their last gen workstation GPU under Windows 10 with latest driver installed. Is it possible that the whole computer graphics industry make their drivers report OpenGL3.0 all the time for some reason and we should never rely on what the driver says? Or can it be the new version of Krita (Qt) not detecting OpenGL properly?
Git commit 4db896b891de2dc774bf92d2aaeed6457743de37 by Dmitry Kazakov. Committed on 12/12/2016 at 09:54. Pushed by dkazakov into branch 'krita/3.1'. Fix High-Quality filtering on AMD GPU Its Linux driver supports openGL 3.0 only M +1 -1 libs/ui/dialogs/kis_dlg_preferences.cc https://commits.kde.org/krita/4db896b891de2dc774bf92d2aaeed6457743de37
Git commit d8ce65b6146c2b7ed174deb800c64193fbc9bac5 by Dmitry Kazakov. Committed on 12/12/2016 at 09:56. Pushed by dkazakov into branch 'rempt/impex-refactoring'. Fix High-Quality filtering on AMD GPU Its Linux driver supports openGL 3.0 only M +1 -1 libs/ui/dialogs/kis_dlg_preferences.cc https://commits.kde.org/krita/d8ce65b6146c2b7ed174deb800c64193fbc9bac5
Thank you Dmitry but I don't think this is how the problem lies. This is not a Linux exclusive situation. Krita does not show "High Quality Filtering" on ANY platform, Windows or Linux, with ANY of my current GPUs mentioned above.
This is what Core m3-6Y30's HD graphics 515's OpenGL info looks like on Ubuntu (No, Krita does not show High Quality Filtering on this one either, so it's definitely not AMD exclusive): $ glxinfo | grep "OpenGL version" OpenGL version string: 3.0 Mesa 12.0.3 $ glxinfo | grep -i opengl OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 515 (Skylake GT2) OpenGL core profile version string: 4.3 (Core Profile) Mesa 12.0.3 OpenGL core profile shading language version string: 4.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 12.0.3 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.1 Mesa 12.0.3 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10 OpenGL ES profile extensions: $ ./krita-3.0.94-x86_64.appimage QCoreApplication::arguments: Please instantiate the QApplication object first krita.lib.pigment: Compiled for arch: 7 krita.lib.pigment: Features supported: krita.lib.pigment: "SSE2" --- yes krita.lib.pigment: "SSSE3" --- yes krita.lib.pigment: "SSE4.1" --- yes krita.lib.pigment: "AVX " --- yes krita.lib.pigment: "AVX2 " --- yes OpenGL Info Vendor: Intel Open Source Technology Center Renderer: Mesa DRI Intel(R) HD Graphics 515 (Skylake GT2) Version: 3.0 Mesa 12.0.3 Shading language: 1.30 Requested format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 2) Current format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 0) Version: 3 . 0 Supports deprecated functions true krita has opengl true Setting XDG_DATA_DIRS "/tmp/.mount_T4FJPo/usr/bin/../share:./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop" Available translations QSet("ko", "pt_BR", "uk", "lv", "he", "en_US", "hr", "zh_TW", "bg", "ja", "pl", "de", "is", "fa", "ro", "ca@valencia", "pa", "tg", "sk", "ru", "pt", "ast", "ia", "nds", "nl", "fy", "ug", "tr", "sq", "hne", "wa", "cs", "mai", "ms", "sv", "it", "se", "ta", "hi", "af", "fi", "gl", "nb", "km", "xh", "bs", "ca", "el", "oc", "be", "eo", "ne", "en_GB", "es", "zh_CN", "eu", "vi", "kk", "lt", "fr", "et", "uz@cyrillic", "cy", "mr", "ar", "uz", "hu", "br", "da", "nn", "ga", "th", "mk", "sl") Available domain translations QSet("ko", "pt_BR", "uk", "lv", "he", "en_US", "hr", "zh_TW", "bg", "ja", "pl", "de", "is", "fa", "ro", "ca@valencia", "pa", "tg", "sk", "ru", "pt", "ast", "ia", "nds", "nl", "fy", "ug", "tr", "sq", "hne", "wa", "cs", "mai", "ms", "sv", "it", "se", "ta", "hi", "af", "fi", "gl", "nb", "km", "xh", "bs", "ca", "el", "oc", "be", "eo", "ne", "en_GB", "es", "zh_CN", "eu", "vi", "kk", "lt", "fr", "et", "uz@cyrillic", "cy", "mr", "ar", "uz", "hu", "br", "da", "nn", "ga", "th", "mk", "sl") Override language: "" libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles
I'll test this with Nvidia Quadro K620 later on Ubuntu, with and without its proprietary driver installed. But I can't test it on Windows. Also, if there is anyway I can get Krita's OpenGL output on Windows, please let me know. I can at least provide some information of how Intel and AMD OpenGL look like to Krita on Windows.
You can use debugview to get the output, but the bug _is_ fixed. The fix is not Linux specific; it's specific for all situations where the gpu driver returns the exact version of opengl we ask for. Dmitry only mentioned Linux in his commit message because that's where he tested it. Some drivers return the highest version possible anyway, so if we ask for 3.0, we get 4.4 (nvidia), others return 3.0. We have two functions, one that checks whether we've got the minimum of 3.2 and one that checks for 3.0. The high quality filtering used the 3.2 check and should have used the 3.0 check, and that's fixed now.
OK, that's great. I guess it's the current version of mesa that always reports 3.0. We may not get anything more than 3.0 with any GPU on Linux as it is. Nevertheless, let me provide Nvidia Quadro K620's information (by open source driver nouveau. I can't get nvidia proprietary driver to work on Ubuntu 16.10): $ glxinfo | grep "OpenGL version" OpenGL version string: 3.0 Mesa 12.0.3 $ glxinfo | grep -i opengl OpenGL vendor string: nouveau OpenGL renderer string: Gallium 0.4 on NV117 OpenGL core profile version string: 3.3 (Core Profile) Mesa 12.0.3 OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 3.0 Mesa 12.0.3 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL extensions: OpenGL ES profile version string: OpenGL ES 3.0 Mesa 12.0.3 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 OpenGL ES profile extensions: tysontan@PSY-TAN:~$ $ ./krita-3.0.94-x86_64.appimage QCoreApplication::arguments: Please instantiate the QApplication object first krita.lib.pigment: Compiled for arch: 6 krita.lib.pigment: Features supported: krita.lib.pigment: "SSE2" --- yes krita.lib.pigment: "SSSE3" --- yes krita.lib.pigment: "SSE4.1" --- yes krita.lib.pigment: "AVX " --- yes krita.lib.pigment: "AVX2 " --- no OpenGL Info Vendor: nouveau Renderer: Gallium 0.4 on NV117 Version: 3.0 Mesa 12.0.3 Shading language: 1.30 Requested format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 2) Current format: QSurfaceFormat(version 3.0, options QFlags(0x4), depthBufferSize 24, redBufferSize 8, greenBufferSize 8, blueBufferSize 8, alphaBufferSize 0, stencilBufferSize 8, samples -1, swapBehavior 2, swapInterval 0, profile 0) Version: 3 . 0 Supports deprecated functions true krita has opengl true Setting XDG_DATA_DIRS "/tmp/.mount_d67scw/usr/bin/../share:./share/:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop" Available translations QSet("zh_CN", "ug", "sq", "xh", "ms", "uk", "eo", "nl", "fy", "oc", "vi", "km", "ca", "hr", "sv", "cy", "ne", "tr", "br", "fa", "nds", "en_GB", "sl", "ga", "uz@cyrillic", "el", "he", "ar", "kk", "es", "se", "ko", "nb", "ro", "mr", "th", "tg", "uz", "pl", "ia", "de", "wa", "zh_TW", "fr", "hne", "hi", "mk", "be", "bs", "cs", "mai", "it", "ru", "nn", "fi", "is", "ast", "lv", "pt", "af", "lt", "eu", "gl", "sk", "da", "et", "ta", "hu", "ja", "pa", "ca@valencia", "pt_BR", "en_US", "bg") Available domain translations QSet("zh_CN", "ug", "sq", "xh", "ms", "uk", "eo", "nl", "fy", "oc", "vi", "km", "ca", "hr", "sv", "cy", "ne", "tr", "br", "fa", "nds", "en_GB", "sl", "ga", "uz@cyrillic", "el", "he", "ar", "kk", "es", "se", "ko", "nb", "ro", "mr", "th", "tg", "uz", "pl", "ia", "de", "wa", "zh_TW", "fr", "hne", "hi", "mk", "be", "bs", "cs", "mai", "it", "ru", "nn", "fi", "is", "ast", "lv", "pt", "af", "lt", "eu", "gl", "sk", "da", "et", "ta", "hu", "ja", "pa", "ca@valencia", "pt_BR", "en_US", "bg") Override language: "" libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles libpng warning: iCCP: too many profiles QLayout: Attempting to add QLayout "" to KisShortcutsDialog "", which already has a layout