GTK4 application cannot create OpenGL context on NVidia videocard without `GDK_DEBUG=gl-glx`
Steps to reproduce
- Get machine with NVidia videocard
- run
gtk4-demo
- run
Shadertoy
application from gtk4-demo: OpenGL area does not renders, only error message is shown - rerun
gtk4-demo
asGDK_DEBUG=gl-glx gtk4-demo
- run
Shadertoy
application from gtk4-demo: OpenGL area renders correctly
I have: Ubuntu 24.04 LTS + NVIDIA GeForce GT 720 with proprietary driver 470.239.06 Gtk4-4.14.2
Fedora 40 + NVIDIA GeForce RTX 4060 Ti 16G with proprietary driver 550
XDG_SESSION_TYPE=x11
on both of them.
glxgears
, vkcube
, shadertoy.com
in Firefox works as expected.
When I run gtk4-based programs, some of them does-not displays OpenGL areas. For example, OpenGL/Gears
and OpenGL/OpenGL Area
apps from gtk4-demo
displays gears and triangle but OpenGL/Shadertoy
do not.
Wheh I run gtk4-demo like this: GDK_DEBUG=gl-glx gtk4-demo
, OpenGL apps works as expected, without errors.
I wrote trivial gtk4 application with this OpenGL initialization:
area = gtk_gl_area_new();
gtk_gl_area_set_required_version(GTK_GL_AREA(area), 4, 6);
g_signal_connect(G_OBJECT(area), "render", G_CALLBACK(on_render), NULL);
Result: It cannot initialize OpenGL context.
I recompile it with GTK+-3 with all porting done - the application works as expected.
The two ways to make it run are to remove gtk_gl_area_set_required_version()
or to provide GDK_DEBUG=gl-glx
environment. To note, it does not matter, what major/minor I add to gtk_gl_area_set_required_version()
, even with 3.3 it fails.
I have no such problem, when I run it on the Radeon card.