mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-12 20:00:09 +00:00
Merge branch 'default-to-gles' into 'main'
Use GLES by default Closes #6170 See merge request GNOME/gtk!6520
This commit is contained in:
commit
833d307695
@ -66,7 +66,7 @@ style-check-diff:
|
|||||||
junit:
|
junit:
|
||||||
- "${CI_PROJECT_DIR}/_build/report-x11.xml"
|
- "${CI_PROJECT_DIR}/_build/report-x11.xml"
|
||||||
- "${CI_PROJECT_DIR}/_build/report-wayland.xml"
|
- "${CI_PROJECT_DIR}/_build/report-wayland.xml"
|
||||||
- "${CI_PROJECT_DIR}/_build/report-wayland_gles.xml"
|
- "${CI_PROJECT_DIR}/_build/report-wayland_gles2.xml"
|
||||||
- "${CI_PROJECT_DIR}/_build/report-broadway.xml"
|
- "${CI_PROJECT_DIR}/_build/report-broadway.xml"
|
||||||
name: "gtk-${CI_COMMIT_REF_NAME}"
|
name: "gtk-${CI_COMMIT_REF_NAME}"
|
||||||
paths:
|
paths:
|
||||||
@ -103,8 +103,8 @@ fedora-x86_64:
|
|||||||
${FEATURE_FLAGS}
|
${FEATURE_FLAGS}
|
||||||
_build
|
_build
|
||||||
- meson compile -C _build
|
- meson compile -C _build
|
||||||
- .gitlab-ci/run-tests.sh _build wayland
|
- .gitlab-ci/run-tests.sh _build wayland_gl
|
||||||
- .gitlab-ci/run-tests.sh _build wayland_gles
|
- .gitlab-ci/run-tests.sh _build wayland_gles2
|
||||||
|
|
||||||
release-build:
|
release-build:
|
||||||
extends: .build-fedora-default
|
extends: .build-fedora-default
|
||||||
@ -129,6 +129,7 @@ release-build:
|
|||||||
- meson install -C _build
|
- meson install -C _build
|
||||||
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
|
- PKG_CONFIG_PATH=${CI_PROJECT_DIR}/_install/lib64/pkgconfig:${CI_PROJECT_DIR}/_install/share/pkgconfig meson setup _build_hello examples/hello
|
||||||
- LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 meson compile -C _build_hello
|
- LD_LIBRARY_PATH=${CI_PROJECT_DIR}/_install/lib64 meson compile -C _build_hello
|
||||||
|
- .gitlab-ci/run-tests.sh _build wayland
|
||||||
- .gitlab-ci/run-tests.sh _build x11
|
- .gitlab-ci/run-tests.sh _build x11
|
||||||
|
|
||||||
fedora-clang:
|
fedora-clang:
|
||||||
@ -424,7 +425,7 @@ asan-build:
|
|||||||
_build
|
_build
|
||||||
- ninja -C _build
|
- ninja -C _build
|
||||||
- .gitlab-ci/run-tests.sh _build wayland
|
- .gitlab-ci/run-tests.sh _build wayland
|
||||||
- .gitlab-ci/run-tests.sh _build wayland_gles
|
- .gitlab-ci/run-tests.sh _build wayland_gles2
|
||||||
- .gitlab-ci/run-tests.sh _build x11
|
- .gitlab-ci/run-tests.sh _build x11
|
||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
|
@ -232,8 +232,14 @@ A number of options affect behavior instead of logging:
|
|||||||
`gl-legacy`
|
`gl-legacy`
|
||||||
: Use a legacy OpenGL context
|
: Use a legacy OpenGL context
|
||||||
|
|
||||||
`gl-gles`
|
`gl-disable-gl`
|
||||||
: Use a GLES OpenGL context
|
: Don't allow the use of OpenGL GL API. This forces GLES to be used
|
||||||
|
|
||||||
|
`gl-disable-gles`
|
||||||
|
: Don't allow the use of OpenGL GLES API. This forces GL to be used
|
||||||
|
|
||||||
|
`gl-prefer-gl`
|
||||||
|
: Prefer OpenGL over OpenGL ES. This was the default behavior before GTK 4.14.
|
||||||
|
|
||||||
`gl-egl`
|
`gl-egl`
|
||||||
: Use an EGL context on X11 or Windows
|
: Use an EGL context on X11 or Windows
|
||||||
|
@ -127,7 +127,9 @@ static const GdkDebugKey gdk_debug_keys[] = {
|
|||||||
{ "gl-fractional", GDK_DEBUG_GL_FRACTIONAL, "Enable fractional scaling for OpenGL (experimental)" },
|
{ "gl-fractional", GDK_DEBUG_GL_FRACTIONAL, "Enable fractional scaling for OpenGL (experimental)" },
|
||||||
{ "gl-debug", GDK_DEBUG_GL_DEBUG, "Insert debugging information in OpenGL" },
|
{ "gl-debug", GDK_DEBUG_GL_DEBUG, "Insert debugging information in OpenGL" },
|
||||||
{ "gl-legacy", GDK_DEBUG_GL_LEGACY, "Use a legacy OpenGL context" },
|
{ "gl-legacy", GDK_DEBUG_GL_LEGACY, "Use a legacy OpenGL context" },
|
||||||
{ "gl-gles", GDK_DEBUG_GL_GLES, "Only allow OpenGL GLES API" },
|
{ "gl-disable-gl", GDK_DEBUG_GL_DISABLE_GL, "Only allow OpenGL GLES API" },
|
||||||
|
{ "gl-disable-gles", GDK_DEBUG_GL_DISABLE_GLES, "Don't allow OpenGL GLES API" },
|
||||||
|
{ "gl-prefer-gl", GDK_DEBUG_GL_PREFER_GL, "Prefer GL over GLES API" },
|
||||||
{ "gl-egl", GDK_DEBUG_GL_EGL, "Use EGL on X11 or Windows" },
|
{ "gl-egl", GDK_DEBUG_GL_EGL, "Use EGL on X11 or Windows" },
|
||||||
{ "gl-glx", GDK_DEBUG_GL_GLX, "Use GLX on X11" },
|
{ "gl-glx", GDK_DEBUG_GL_GLX, "Use GLX on X11" },
|
||||||
{ "gl-wgl", GDK_DEBUG_GL_WGL, "Use WGL on Windows" },
|
{ "gl-wgl", GDK_DEBUG_GL_WGL, "Use WGL on Windows" },
|
||||||
|
@ -46,17 +46,19 @@ typedef enum {
|
|||||||
GDK_DEBUG_GL_DISABLE = 1 << 16,
|
GDK_DEBUG_GL_DISABLE = 1 << 16,
|
||||||
GDK_DEBUG_GL_FRACTIONAL = 1 << 17,
|
GDK_DEBUG_GL_FRACTIONAL = 1 << 17,
|
||||||
GDK_DEBUG_GL_LEGACY = 1 << 18,
|
GDK_DEBUG_GL_LEGACY = 1 << 18,
|
||||||
GDK_DEBUG_GL_GLES = 1 << 19,
|
GDK_DEBUG_GL_DISABLE_GL = 1 << 19,
|
||||||
GDK_DEBUG_GL_DEBUG = 1 << 20,
|
GDK_DEBUG_GL_DISABLE_GLES = 1 << 20,
|
||||||
GDK_DEBUG_GL_EGL = 1 << 21,
|
GDK_DEBUG_GL_PREFER_GL = 1 << 21,
|
||||||
GDK_DEBUG_GL_GLX = 1 << 22,
|
GDK_DEBUG_GL_DEBUG = 1 << 22,
|
||||||
GDK_DEBUG_GL_WGL = 1 << 23,
|
GDK_DEBUG_GL_EGL = 1 << 23,
|
||||||
GDK_DEBUG_VULKAN_DISABLE = 1 << 24,
|
GDK_DEBUG_GL_GLX = 1 << 24,
|
||||||
GDK_DEBUG_VULKAN_VALIDATE = 1 << 25,
|
GDK_DEBUG_GL_WGL = 1 << 25,
|
||||||
GDK_DEBUG_DEFAULT_SETTINGS= 1 << 26,
|
GDK_DEBUG_VULKAN_DISABLE = 1 << 26,
|
||||||
GDK_DEBUG_HIGH_DEPTH = 1 << 27,
|
GDK_DEBUG_VULKAN_VALIDATE = 1 << 27,
|
||||||
GDK_DEBUG_NO_VSYNC = 1 << 28,
|
GDK_DEBUG_DEFAULT_SETTINGS= 1 << 28,
|
||||||
GDK_DEBUG_DMABUF_DISABLE = 1 << 29,
|
GDK_DEBUG_HIGH_DEPTH = 1 << 29,
|
||||||
|
GDK_DEBUG_NO_VSYNC = 1 << 30,
|
||||||
|
GDK_DEBUG_DMABUF_DISABLE = 1 << 31,
|
||||||
} GdkDebugFlags;
|
} GdkDebugFlags;
|
||||||
|
|
||||||
extern guint _gdk_debug_flags;
|
extern guint _gdk_debug_flags;
|
||||||
|
@ -389,17 +389,24 @@ gdk_gl_context_realize_egl (GdkGLContext *context,
|
|||||||
{
|
{
|
||||||
GdkDisplay *display = gdk_gl_context_get_display (context);
|
GdkDisplay *display = gdk_gl_context_get_display (context);
|
||||||
GdkGLContext *share = gdk_display_get_gl_context (display);
|
GdkGLContext *share = gdk_display_get_gl_context (display);
|
||||||
|
GdkDebugFlags flags;
|
||||||
GdkGLAPI api, preferred_api;
|
GdkGLAPI api, preferred_api;
|
||||||
gboolean prefer_legacy;
|
gboolean prefer_legacy;
|
||||||
|
|
||||||
|
flags = gdk_display_get_debug_flags(display);
|
||||||
|
|
||||||
if (share && gdk_gl_context_is_api_allowed (context,
|
if (share && gdk_gl_context_is_api_allowed (context,
|
||||||
gdk_gl_context_get_api (share),
|
gdk_gl_context_get_api (share),
|
||||||
NULL))
|
NULL))
|
||||||
preferred_api = gdk_gl_context_get_api (share);
|
preferred_api = gdk_gl_context_get_api (share);
|
||||||
else if (gdk_gl_context_is_api_allowed (context, GDK_GL_API_GL, NULL))
|
else if ((flags & GDK_DEBUG_GL_PREFER_GL) != 0 &&
|
||||||
|
gdk_gl_context_is_api_allowed (context, GDK_GL_API_GL, NULL))
|
||||||
preferred_api = GDK_GL_API_GL;
|
preferred_api = GDK_GL_API_GL;
|
||||||
else if (gdk_gl_context_is_api_allowed (context, GDK_GL_API_GLES, NULL))
|
else if (gdk_gl_context_is_api_allowed (context, GDK_GL_API_GLES, NULL))
|
||||||
preferred_api = GDK_GL_API_GLES;
|
preferred_api = GDK_GL_API_GLES;
|
||||||
|
else if ((flags & GDK_DEBUG_GL_PREFER_GL) == 0 &&
|
||||||
|
gdk_gl_context_is_api_allowed (context, GDK_GL_API_GL, NULL))
|
||||||
|
preferred_api = GDK_GL_API_GL;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g_set_error_literal (error, GDK_GL_ERROR,
|
g_set_error_literal (error, GDK_GL_ERROR,
|
||||||
@ -408,7 +415,7 @@ gdk_gl_context_realize_egl (GdkGLContext *context,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
prefer_legacy = (gdk_display_get_debug_flags(display) & GDK_DEBUG_GL_LEGACY) ||
|
prefer_legacy = (flags & GDK_DEBUG_GL_LEGACY) ||
|
||||||
(share != NULL && gdk_gl_context_is_legacy (share));
|
(share != NULL && gdk_gl_context_is_legacy (share));
|
||||||
|
|
||||||
if (preferred_api == GDK_GL_API_GL)
|
if (preferred_api == GDK_GL_API_GL)
|
||||||
@ -1277,18 +1284,38 @@ gdk_gl_context_is_api_allowed (GdkGLContext *self,
|
|||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self);
|
GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self);
|
||||||
|
GdkDebugFlags flags;
|
||||||
|
GdkGLAPI allowed_apis;
|
||||||
|
|
||||||
if (gdk_display_get_debug_flags (gdk_gl_context_get_display (self)) & GDK_DEBUG_GL_GLES)
|
allowed_apis = priv->allowed_apis;
|
||||||
|
|
||||||
|
flags = gdk_display_get_debug_flags (gdk_gl_context_get_display (self));
|
||||||
|
|
||||||
|
if (flags & GDK_DEBUG_GL_DISABLE_GLES)
|
||||||
{
|
{
|
||||||
if (!(api & GDK_GL_API_GLES))
|
if (api == GDK_GL_API_GLES)
|
||||||
{
|
{
|
||||||
g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
|
g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
|
||||||
_("Anything but OpenGL ES disabled via GDK_DEBUG"));
|
_("OpenGL ES disabled via GDK_DEBUG"));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allowed_apis &= ~GDK_GL_API_GLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->allowed_apis & api)
|
if (flags & GDK_DEBUG_GL_DISABLE_GL)
|
||||||
|
{
|
||||||
|
if (api == GDK_GL_API_GL)
|
||||||
|
{
|
||||||
|
g_set_error_literal (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
|
||||||
|
_("OpenGL disabled via GDK_DEBUG"));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
allowed_apis &= ~GDK_GL_API_GL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (allowed_apis & api)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
g_set_error (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
|
g_set_error (error, GDK_GL_ERROR, GDK_GL_ERROR_NOT_AVAILABLE,
|
||||||
|
@ -1198,7 +1198,7 @@ gdk_win32_display_init_gl (GdkDisplay *display,
|
|||||||
* Disable defaulting to EGL as EGL is used more as a compatibility layer
|
* Disable defaulting to EGL as EGL is used more as a compatibility layer
|
||||||
* on Windows rather than being a native citizen on Windows
|
* on Windows rather than being a native citizen on Windows
|
||||||
*/
|
*/
|
||||||
if (gdk_display_get_debug_flags (display) & (GDK_DEBUG_GL_EGL|GDK_DEBUG_GL_GLES))
|
if (gdk_display_get_debug_flags (display) & (GDK_DEBUG_GL_EGL|GDK_DEBUG_GL_DISABLE_GL))
|
||||||
{
|
{
|
||||||
init_gl_hdc = GetDC (display_win32->hwnd);
|
init_gl_hdc = GetDC (display_win32->hwnd);
|
||||||
|
|
||||||
|
@ -734,7 +734,9 @@ get_inspector_display (void)
|
|||||||
|
|
||||||
flags = gdk_display_get_debug_flags (gdk_display_get_default ());
|
flags = gdk_display_get_debug_flags (gdk_display_get_default ());
|
||||||
|
|
||||||
gdk_display_set_debug_flags (display, flags & (GDK_DEBUG_GL_GLES | GDK_DEBUG_GL_GLX));
|
gdk_display_set_debug_flags (display, flags & (GDK_DEBUG_GL_DISABLE_GL |
|
||||||
|
GDK_DEBUG_GL_DISABLE_GLES |
|
||||||
|
GDK_DEBUG_GL_GLX));
|
||||||
gtk_set_display_debug_flags (display, 0);
|
gtk_set_display_debug_flags (display, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ foreach renderer : renderers
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if compare_xfails_small_texture.contains(testname)
|
if compare_xfails_small_texture.contains(testname)
|
||||||
suites += 'wayland_gles_failing'
|
suites += 'wayland_gles2_failing'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
test_env = [
|
test_env = [
|
||||||
|
@ -16,12 +16,16 @@ exclude_unstable = ['flaky', 'failing']
|
|||||||
setups = [
|
setups = [
|
||||||
{ 'backend': 'x11', 'if': x11_enabled, },
|
{ 'backend': 'x11', 'if': x11_enabled, },
|
||||||
{ 'backend': 'wayland', 'if': wayland_enabled, 'is_default': true, },
|
{ 'backend': 'wayland', 'if': wayland_enabled, 'is_default': true, },
|
||||||
{ 'name': 'wayland_gles',
|
{ 'name': 'wayland_gles2',
|
||||||
'backend': 'wayland', 'if': wayland_enabled,
|
'backend': 'wayland', 'if': wayland_enabled,
|
||||||
'env': ['GDK_DEBUG=gl-gles,default-settings',
|
'env': ['GDK_DEBUG=default-settings',
|
||||||
'MESA_GLES_VERSION_OVERRIDE=2.0',
|
'MESA_GLES_VERSION_OVERRIDE=2.0',
|
||||||
'GSK_MAX_TEXTURE_SIZE=1024',
|
'GSK_MAX_TEXTURE_SIZE=1024',
|
||||||
], },
|
], },
|
||||||
|
{ 'name': 'wayland_gl',
|
||||||
|
'backend': 'wayland', 'if': wayland_enabled,
|
||||||
|
'env': ['GDK_DEBUG=gl-prefer-gl,default-settings',
|
||||||
|
], },
|
||||||
{ 'backend': 'win32', 'if': os_win32 },
|
{ 'backend': 'win32', 'if': os_win32 },
|
||||||
{ 'backend': 'broadway', 'if': broadway_enabled, },
|
{ 'backend': 'broadway', 'if': broadway_enabled, },
|
||||||
{ 'backend': 'win32', 'if': os_win32 },
|
{ 'backend': 'win32', 'if': os_win32 },
|
||||||
@ -37,8 +41,9 @@ foreach setup : setups
|
|||||||
exclude += 'gsk-compare-broadway'
|
exclude += 'gsk-compare-broadway'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if name == 'wayland_gles'
|
if name == 'wayland_gles2'
|
||||||
exclude += 'wayland_gles_failing'
|
# exclude tests that are failing with the small texture size in this setup
|
||||||
|
exclude += 'wayland_gles2_failing'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
env = common_env + [
|
env = common_env + [
|
||||||
|
Loading…
Reference in New Issue
Block a user