Bug 373490 - Krita 3.1 RC does not show High Quality Filtering option in OpenGL setting
Summary: Krita 3.1 RC does not show High Quality Filtering option in OpenGL setting
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: OpenGL Canvas (show other bugs)
Version: unspecified
Platform: Other All
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-12-10 08:39 UTC by Tyson Tan
Modified: 2016-12-13 01:13 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tyson Tan 2016-12-10 08:39:45 UTC
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.
Comment 1 Tyson Tan 2016-12-10 08:40:42 UTC
~$ ./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)
Comment 2 Tyson Tan 2016-12-10 08:41:37 UTC
~$ 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:
Comment 3 Halla Rempt 2016-12-11 12:13:23 UTC
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 :-(.
Comment 4 Tyson Tan 2016-12-11 14:51:04 UTC
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')
Comment 5 Tyson Tan 2016-12-11 14:52:56 UTC
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?
Comment 6 Unknown 2016-12-12 09:55:15 UTC
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
Comment 7 Unknown 2016-12-12 09:56:15 UTC
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
Comment 8 Tyson Tan 2016-12-12 12:01:09 UTC
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.
Comment 9 Tyson Tan 2016-12-12 12:05:17 UTC
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
Comment 10 Tyson Tan 2016-12-12 12:11:51 UTC
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.
Comment 11 Halla Rempt 2016-12-12 12:30:27 UTC
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.
Comment 12 Tyson Tan 2016-12-13 01:13:03 UTC
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