mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 14:10:30 +00:00
gl: Add GDK_GL_DISABLE env var
This allows disabling certain GL features for testing, same as with Vulkan.
This commit is contained in:
parent
d6a1eb1b2f
commit
3a04542146
@ -347,6 +347,28 @@ a `*`, which means: try all remaining backends. The special value
|
|||||||
backends. For more information about selecting backends,
|
backends. For more information about selecting backends,
|
||||||
see the [func@Gdk.DisplayManager.get] function.
|
see the [func@Gdk.DisplayManager.get] function.
|
||||||
|
|
||||||
|
### `GDK_GL_DISABLE`
|
||||||
|
|
||||||
|
This variable can be set to a list of values, which cause GDK to
|
||||||
|
disable extension features of the OpenGL support.
|
||||||
|
Note that these features may already be disabled if the GL driver
|
||||||
|
does not support them.
|
||||||
|
|
||||||
|
`debug`
|
||||||
|
: GL_KHR_debug
|
||||||
|
|
||||||
|
`unpack-subimage`
|
||||||
|
:GL_EXT_unpack_subimage
|
||||||
|
|
||||||
|
`half-float`
|
||||||
|
:GL_OES_vertex_half_float
|
||||||
|
|
||||||
|
`sync`
|
||||||
|
:GL_ARB_sync
|
||||||
|
|
||||||
|
`bgra`
|
||||||
|
:GL_EXT_texture_format_BGRA8888
|
||||||
|
|
||||||
### `GDK_VULKAN_DEVICE`
|
### `GDK_VULKAN_DEVICE`
|
||||||
|
|
||||||
This variable can be set to the index of a Vulkan device to override
|
This variable can be set to the index of a Vulkan device to override
|
||||||
|
@ -103,6 +103,14 @@
|
|||||||
|
|
||||||
#define DEFAULT_ALLOWED_APIS GDK_GL_API_GL | GDK_GL_API_GLES
|
#define DEFAULT_ALLOWED_APIS GDK_GL_API_GL | GDK_GL_API_GLES
|
||||||
|
|
||||||
|
static const GdkDebugKey gdk_gl_feature_keys[] = {
|
||||||
|
{ "debug", GDK_GL_FEATURE_DEBUG, "GL_KHR_debug" },
|
||||||
|
{ "unpack-subimage", GDK_GL_FEATURE_UNPACK_SUBIMAGE, "GL_EXT_unpack_subimage" },
|
||||||
|
{ "half-float", GDK_GL_FEATURE_VERTEX_HALF_FLOAT, "GL_OES_vertex_half_float" },
|
||||||
|
{ "sync", GDK_GL_FEATURE_SYNC, "GL_ARB_sync" },
|
||||||
|
{ "bgra", GDK_GL_FEATURE_BGRA, "GL_EXT_texture_format_BGRA8888" },
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct _GdkGLContextPrivate GdkGLContextPrivate;
|
typedef struct _GdkGLContextPrivate GdkGLContextPrivate;
|
||||||
|
|
||||||
struct _GdkGLContextPrivate
|
struct _GdkGLContextPrivate
|
||||||
@ -1699,6 +1707,7 @@ static void
|
|||||||
gdk_gl_context_check_extensions (GdkGLContext *context)
|
gdk_gl_context_check_extensions (GdkGLContext *context)
|
||||||
{
|
{
|
||||||
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
|
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (context);
|
||||||
|
GdkGLFeatures supported_features, disabled_features;
|
||||||
gboolean gl_debug = FALSE;
|
gboolean gl_debug = FALSE;
|
||||||
GdkDisplay *display;
|
GdkDisplay *display;
|
||||||
|
|
||||||
@ -1726,7 +1735,12 @@ gdk_gl_context_check_extensions (GdkGLContext *context)
|
|||||||
!gdk_gl_version_greater_equal (&priv->gl_version, &GDK_GL_VERSION_INIT (3, 2)))
|
!gdk_gl_version_greater_equal (&priv->gl_version, &GDK_GL_VERSION_INIT (3, 2)))
|
||||||
priv->is_legacy = TRUE;
|
priv->is_legacy = TRUE;
|
||||||
|
|
||||||
priv->features = gdk_gl_context_check_features (context);
|
supported_features = gdk_gl_context_check_features (context);
|
||||||
|
disabled_features = gdk_parse_debug_var ("GDK_GL_DISABLE",
|
||||||
|
gdk_gl_feature_keys,
|
||||||
|
G_N_ELEMENTS (gdk_gl_feature_keys));
|
||||||
|
|
||||||
|
priv->features = supported_features & ~disabled_features;
|
||||||
|
|
||||||
gdk_gl_context_init_memory_flags (context);
|
gdk_gl_context_init_memory_flags (context);
|
||||||
|
|
||||||
@ -1736,19 +1750,29 @@ gdk_gl_context_check_extensions (GdkGLContext *context)
|
|||||||
glGetIntegerv (GL_MAX_LABEL_LENGTH, &priv->max_debug_label_length);
|
glGetIntegerv (GL_MAX_LABEL_LENGTH, &priv->max_debug_label_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
if (GDK_DISPLAY_DEBUG_CHECK (display, OPENGL))
|
||||||
int max_texture_size;
|
{
|
||||||
glGetIntegerv (GL_MAX_TEXTURE_SIZE, &max_texture_size);
|
int i, max_texture_size;
|
||||||
GDK_DISPLAY_DEBUG (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context)), OPENGL,
|
glGetIntegerv (GL_MAX_TEXTURE_SIZE, &max_texture_size);
|
||||||
"%s version: %d.%d (%s)\n"
|
gdk_debug_message ("%s version: %d.%d (%s)\n"
|
||||||
"* GLSL version: %s\n"
|
"* GLSL version: %s\n"
|
||||||
"* Max texture size: %d\n",
|
"* Max texture size: %d\n",
|
||||||
gdk_gl_context_get_use_es (context) ? "OpenGL ES" : "OpenGL",
|
gdk_gl_context_get_use_es (context) ? "OpenGL ES" : "OpenGL",
|
||||||
gdk_gl_version_get_major (&priv->gl_version), gdk_gl_version_get_minor (&priv->gl_version),
|
gdk_gl_version_get_major (&priv->gl_version), gdk_gl_version_get_minor (&priv->gl_version),
|
||||||
priv->is_legacy ? "legacy" : "core",
|
priv->is_legacy ? "legacy" : "core",
|
||||||
glGetString (GL_SHADING_LANGUAGE_VERSION),
|
glGetString (GL_SHADING_LANGUAGE_VERSION),
|
||||||
max_texture_size);
|
max_texture_size);
|
||||||
}
|
gdk_debug_message ("Enabled features (use GDK_GL_DISABLE env var to disable):");
|
||||||
|
for (i = 0; i < G_N_ELEMENTS (gdk_gl_feature_keys); i++)
|
||||||
|
{
|
||||||
|
gdk_debug_message (" %s: %s",
|
||||||
|
gdk_gl_feature_keys[i].key,
|
||||||
|
(priv->features & gdk_gl_feature_keys[i].value) ? "YES" :
|
||||||
|
((disabled_features & gdk_gl_feature_keys[i].value) ? "disabled via env var" :
|
||||||
|
(((supported_features & gdk_gl_feature_keys[i].value) == 0) ? "not supported" :
|
||||||
|
"Hum, what? This should not happen.")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
priv->extensions_checked = TRUE;
|
priv->extensions_checked = TRUE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user