I am currently working on porting Krita to Qt6 and I have a question for you, painters. Does anyone really need openGL GPU acceleration backend on Windows?
Or anyone is okay with “Direct3D 11 via ANGLE” rendering backend? Have you ever had situation when you had to switch back to openGL backend to fix some rendering issue?
PS:
The answer to the question strongly depend on the GPUs people use and the dirvers they have. So I need as much broad feedback as possible… If we drop direct openGL support on Windows, then it would be harder to do quick workarounds for bugs in GPU drivers.
With my AMD GPU OpenGL feels a lot smoother when using huge brushes than Direct3D, if I use NVIDIA instead Direct3D feels far better.
And because my current AMD GPU has the better performance, it is the one I have in my PC. So I can work with both options, since both GPUs will work with both options, but currently it would be a loss for me.
Also, there were occasionally users with AMD GPUs who said that OpenGL is the better option for them, for the same reason, it feels smoother.
But one thing I am struggling with right now, I cannot remember for sure if there were users who could only use OpenGL for some reason, but something in the back of my head tells me that we had very few such support requests where the use of OpenGL was the solution to their problems and made Krita usable for them.
That depends on the required technical understanding of the matter. So far I’ve always judged it by the responsiveness of very large brush diameters, and OpenGL felt more responsive to me. If you tell me what I should try out, what I should do, then I can tell you whether I’m confident about it.
I’m asking, because somehow your question sounds like I need a certain amount of technical understanding. Although I’m obviously not completely stupid, as long as I’ve been providing support here and haven’t yet been stoned for it.
My feedback is the same as Michelist’s. I always use Krita in OpenGL mode (on Windows), as that’s performing better that ANGLE+DX11.
I would be interested in trying out ANGLE+OpenGL as well.
From the point of view of simplifying the Qt6 implementation, it would be nice to standardize on ANGLE, but provide multiple backends, e.g. DX11, OpenGL, Vulkan, and Metal, so that people could pick the best performing one for their GPU.
OpenGL is working better than Direct3D 11 via ANGLE for me.
Especially if brushes with layers and filter masks are used.
Direct3D 11 via ANGLE tends to introduce stuttering brush strokes.
It activates openGL backend in Angle, so I wonder if there will be any benefits and it would be better performance-wise?
Test plan:
Open your normal Krita (not from this package)
Switch to “DirectX via ANGLE” mode in the settings dialog
Close your normal Krita
Open Krita from the package
Go to “Help->System information for bugreports”
Check that your renderer string has “OpenGL” words in it:
Vendor: “Google Inc. (Intel)”
Renderer: “ANGLE (Intel, Intel(R) Iris(R) Plus Graphics, OpenGL 4.5.0 - Build 31.0.101.1999)”
Create a document and paint as usual. WARNING: in this build the canvas is offset by a dozen of pixels to the top, it is a known issue of the test build and shouldn’t affect the performance.
Does painting look more responsive than normal Krita with DirectX backend? Does it as performant as raw-openGL mode in normal Krita build?
PS:
Don’t try to activate raw-openGL mode in this build, it will flip the window vertically
I tried to run it:
Windows 10
Nvidia Geforce GTX 960M
Intel Core i7-6700HQ
But it does not start:
Error occurred on Friday, March 7, 2025 at 16:49:11.
krita.exe caused an Access Violation at location 00007FF9106EB55E in module libkritaflake.dll Reading from location 0000000000000000.
For me it’s a bit different but it’s also crashing. I didn’t get the crash log, but hooking up the debugger showed this:
QWindowsOpenGLTester::requestedGlesRenderer(): requested renderer "opengl"
Preferred type: QFlags(0x80)
No "haiku" available.
No "macintosh" available.
No "breeze" available.
Set style "fusion"
ERROR 0x3004 command eglCreateWindowSurface message EGL_ANGLE_surface_orientation is not enabled.
createWindowSurface: Could not create the EGL window surface: 0x3004
Exception thrown at 0x00007FFE5D9B6FDB (libkritaui.dll) in krita.exe: 0xC0000005: Access violation reading location 0x0000000000000000.
I omitted some lines for brevity.
EDIT: If I run with Canvas Acceleration OFF, I do get a similar crash as cgidesign:
Comparison of GL vs. DirectX via Angle in the normal Krita 5.3 (not the new test package).
DirectX via Angle:
GL:
I drew on my old notebook with the touchpad, so the paint strokes differ a bit. Interesting is that not only the painting is faster with GL but the Undo as well.
That’s craaazy! My guess is that ANGLE has more overhead uploading image tiles to GPU memory (not in general, just for your OS/driver/etc. combination).
For me it’s difficult to see the difference (my system is rather fast), but I do recall cases in the past where DX11 was noticeably slower (it involved assistants or stuff like that).
Once I get a working build from Dmitry, I will try to look harder and somehow measure the differences.