Debian Bug report logs - #1073812
OpenGL ES 1.1 doesn't work using Mesa

version graph

Package: libgl1-mesa-dri; Maintainer for libgl1-mesa-dri is Debian X Strike Force <[email protected]>; Source for libgl1-mesa-dri is src:mesa (PTS, buildd, popcon).

Reported by: Zack Middleton <[email protected]>

Date: Wed, 19 Jun 2024 01:27:01 UTC

Severity: important

Tags: patch

Found in version mesa/24.0.8-1

Reply or subscribe to this bug.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to [email protected], Debian X Strike Force <[email protected]>:
Bug#1073812; Package libgl1-mesa-dri. (Wed, 19 Jun 2024 01:27:03 GMT) (full text, mbox, link).


Acknowledgement sent to Zack Middleton <[email protected]>:
New Bug report received and forwarded. Copy sent to Debian X Strike Force <[email protected]>. (Wed, 19 Jun 2024 01:27:03 GMT) (full text, mbox, link).


Message #5 received at [email protected] (full text, mbox, reply):

From: Zack Middleton <[email protected]>
To: [email protected]
Subject: OpenGL ES 1.1 doesn't work using Mesa
Date: Tue, 18 Jun 2024 20:23:02 -0500
[Message part 1 (text/plain, inline)]
Package: libgl1-mesa-dri
Version: 24.0.8-1
Severity: important
Tags: patch

Dear Maintainer,

OpenGL ES 1 contexts cannot be created when using Mesa on Debian Testing
(trixie). However it works on Debian 12 (bookworm). It can be fixed in
Testing by building Mesa with "-Dgles1=enabled" in the mesa source package
"debian/rules" file.


OpenGL ES 1 contexts can be tested by installing mesa-utils package and running
es2_info under the executable name es1_info:

$ ln -s /usr/bin/es2_info es1_info
$ ./es1_info


On Debian Testing es1_info fails to create an OpenGL ES 1 context:

$ ./es1_info
Error: eglCreateContext failed


On Debian Testing with libgl1-mesa-dri patched to use -Dgles1=enabled it prints
the OpenGL ES 1 context information (GL_VERSION: OpenGL ES-CM 1.1):

$ ./es1_info
EGL_VERSION: 1.5
EGL_VENDOR: Mesa Project
EGL_EXTENSIONS:
    EGL_ANDROID_blob_cache, EGL_ANDROID_native_fence_sync,
    EGL_CHROMIUM_sync_control, EGL_ANGLE_sync_control_rate,
    EGL_EXT_buffer_age, EGL_EXT_create_context_robustness,
    EGL_EXT_image_dma_buf_import, EGL_EXT_image_dma_buf_import_modifiers,
    EGL_EXT_query_reset_notification_strategy,
    EGL_EXT_swap_buffers_with_damage, EGL_IMG_context_priority,
    EGL_KHR_cl_event2, EGL_KHR_config_attribs, EGL_KHR_context_flush_control,
    EGL_KHR_create_context, EGL_KHR_create_context_no_error,
    EGL_KHR_fence_sync, EGL_KHR_get_all_proc_addresses, EGL_KHR_gl_colorspace,
    EGL_KHR_gl_renderbuffer_image, EGL_KHR_gl_texture_2D_image,
    EGL_KHR_gl_texture_3D_image, EGL_KHR_gl_texture_cubemap_image,
    EGL_KHR_image, EGL_KHR_image_base, EGL_KHR_image_pixmap,
    EGL_KHR_no_config_context, EGL_KHR_reusable_sync,
    EGL_KHR_surfaceless_context, EGL_KHR_swap_buffers_with_damage,
    EGL_EXT_pixel_format_float, EGL_KHR_wait_sync,
    EGL_MESA_configless_context, EGL_MESA_drm_image, EGL_MESA_gl_interop,
    EGL_MESA_image_dma_buf_export, EGL_MESA_query_driver,
    EGL_NOK_texture_from_pixmap, EGL_WL_bind_wayland_display
EGL_CLIENT_APIS: OpenGL OpenGL_ES
GL_VENDOR: AMD
GL_VERSION: OpenGL ES-CM 1.1 Mesa 24.0.8-1
GL_SHADING_LANGUAGE_VERSION: (null)
GL_RENDERER: AMD Radeon RX 6600 (radeonsi, navi23, LLVM 17.0.6, DRM 3.57, 6.7.12-amd64)
GL_EXTENSIONS:
    GL_EXT_blend_minmax, GL_EXT_multi_draw_arrays,
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,
    GL_OES_byte_coordinates, GL_OES_fixed_point, GL_OES_stencil_wrap,
    GL_OES_compressed_paletted_texture, GL_OES_query_matrix,
    GL_OES_read_format, GL_OES_single_precision,
    GL_EXT_texture_compression_dxt1, GL_OES_draw_texture,
    GL_OES_point_size_array, GL_OES_point_sprite,
    GL_EXT_texture_format_BGRA8888, GL_OES_compressed_ETC1_RGB8_texture,
    GL_OES_depth24, GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,
    GL_OES_framebuffer_object, GL_OES_mapbuffer, GL_OES_rgb8_rgba8,
    GL_OES_stencil8, GL_OES_texture_env_crossbar,
    GL_OES_texture_mirrored_repeat, GL_OES_texture_npot, GL_OES_EGL_image,
    GL_OES_packed_depth_stencil, GL_OES_texture_cube_map,
    GL_APPLE_texture_max_level, GL_EXT_discard_framebuffer,
    GL_EXT_read_format_bgra, GL_OES_blend_equation_separate,
    GL_OES_blend_func_separate, GL_OES_blend_subtract,
    GL_OES_EGL_image_external, GL_OES_EGL_sync, GL_OES_vertex_array_object,
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
    GL_APPLE_sync, GL_EXT_map_buffer_range, GL_KHR_debug,
    GL_NV_generate_mipmap_sRGB, GL_OES_required_internalformat,
    GL_OES_surfaceless_context, GL_EXT_debug_label,
    GL_EXT_compressed_ETC1_RGB8_sub_texture, GL_EXT_polygon_offset_clamp,
    GL_KHR_no_error, GL_EXT_demote_to_helper_invocation


On Debian 12 es1_info prints the OpenGL ES 1 context information (even though
the mesa source package disables gles1):

$ ./es1_info
EGL_VERSION: 1.5
EGL_VENDOR: Mesa Project
EGL_EXTENSIONS:
    EGL_ANDROID_blob_cache, EGL_ANDROID_native_fence_sync,
    EGL_CHROMIUM_sync_control, EGL_ANGLE_sync_control_rate,
    EGL_EXT_buffer_age, EGL_EXT_create_context_robustness,
    EGL_EXT_image_dma_buf_import, EGL_EXT_image_dma_buf_import_modifiers,
    EGL_EXT_swap_buffers_with_damage, EGL_IMG_context_priority,
    EGL_KHR_cl_event2, EGL_KHR_config_attribs, EGL_KHR_context_flush_control,
    EGL_KHR_create_context, EGL_KHR_create_context_no_error,
    EGL_KHR_fence_sync, EGL_KHR_get_all_proc_addresses, EGL_KHR_gl_colorspace,
    EGL_KHR_gl_renderbuffer_image, EGL_KHR_gl_texture_2D_image,
    EGL_KHR_gl_texture_3D_image, EGL_KHR_gl_texture_cubemap_image,
    EGL_KHR_image, EGL_KHR_image_base, EGL_KHR_image_pixmap,
    EGL_KHR_no_config_context, EGL_KHR_reusable_sync,
    EGL_KHR_surfaceless_context, EGL_KHR_swap_buffers_with_damage,
    EGL_EXT_pixel_format_float, EGL_KHR_wait_sync,
    EGL_MESA_configless_context, EGL_MESA_drm_image,
    EGL_MESA_image_dma_buf_export, EGL_MESA_query_driver,
    EGL_NOK_texture_from_pixmap, EGL_WL_bind_wayland_display
EGL_CLIENT_APIS: OpenGL OpenGL_ES
GL_VENDOR: AMD
GL_VERSION: OpenGL ES-CM 1.1 Mesa 22.3.6
GL_SHADING_LANGUAGE_VERSION: (null)
GL_RENDERER: AMD Radeon RX 6600 (navi23, LLVM 15.0.6, DRM 3.49, 6.1.0-20-amd64)
GL_EXTENSIONS:
    GL_EXT_blend_minmax, GL_EXT_multi_draw_arrays,
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,
    GL_OES_byte_coordinates, GL_OES_fixed_point, GL_OES_stencil_wrap,
    GL_OES_compressed_paletted_texture, GL_OES_query_matrix,
    GL_OES_read_format, GL_OES_single_precision,
    GL_EXT_texture_compression_dxt1, GL_OES_draw_texture,
    GL_OES_point_size_array, GL_OES_point_sprite,
    GL_EXT_texture_format_BGRA8888, GL_OES_compressed_ETC1_RGB8_texture,
    GL_OES_depth24, GL_OES_element_index_uint, GL_OES_fbo_render_mipmap,
    GL_OES_framebuffer_object, GL_OES_mapbuffer, GL_OES_rgb8_rgba8,
    GL_OES_stencil8, GL_OES_texture_env_crossbar,
    GL_OES_texture_mirrored_repeat, GL_OES_texture_npot, GL_OES_EGL_image,
    GL_OES_packed_depth_stencil, GL_OES_texture_cube_map,
    GL_APPLE_texture_max_level, GL_EXT_discard_framebuffer,
    GL_EXT_read_format_bgra, GL_OES_blend_equation_separate,
    GL_OES_blend_func_separate, GL_OES_blend_subtract,
    GL_OES_EGL_image_external, GL_OES_EGL_sync, GL_OES_vertex_array_object,
    GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5,
    GL_EXT_map_buffer_range, GL_KHR_debug, GL_OES_required_internalformat,
    GL_OES_surfaceless_context, GL_EXT_debug_label,
    GL_EXT_compressed_ETC1_RGB8_sub_texture, GL_EXT_polygon_offset_clamp,
    GL_KHR_no_error, GL_EXT_demote_to_helper_invocation


Debian 12 (Mesa 22.3) and Testing (Mesa 24.0) packages both specify disabling
gles1. Before Mesa 23.1, this disabled the Mesa specific libGLESv1_CM library
but not the OpenGL ES 1 context support.

The glvnd system provides the libGLESv1_CM shim library that passes calls to
Mesa or Nvidia's driver. This made OpenGL ES 1 usable with Mesa in Debian 12.
The contexts have stopped working in Debian Testing due to Mesa 23.1 changing
the implementation of the gles1 option to cause it to disable OpenGL ES 1
context support.

Using "-Dgles1=enabled" would restore support to the level of Debian 12.
Building Mesa with glvnd enabled (as Debian does) no longer builds the Mesa
specific libGLESv1_CM library when gles1 is enabled. I don't think applying
this change would require other packaging changes.

I tested this by fetching the Debian Testing mesa source package, building, and
installing libgl1-mesa-dri with gles1 enabled. It allows OpenGL ES 1 contexts
to be created and used on Debian Testing.

--- debian/rules    2024-06-18 22:28:08.426053432 +0000
+++ debian/rules    2024-06-18 22:45:19.826044739 +0000
@@ -158,7 +158,7 @@
 VULKAN_LAYERS := $(patsubst %,'%',$(VULKAN_LAYERS))
 VULKAN_LAYERS_LIST := $(subst $(space),$(comma),$(VULKAN_LAYERS))
 
-confflags_GLES = -Dgles1=disabled -Dgles2=enabled
+confflags_GLES = -Dgles1=enabled -Dgles2=enabled
 confflags_GALLIUM += -Dgallium-drivers="[$(GALLIUM_DRIVERS_LIST)]"
 
 confflags += \

For reference:

es2_info uses the source code of es1_info and the ES version is based on the
executable name at run-time:
https://gitlab.freedesktop.org/mesa/demos/-/blob/main/src/egl/opengles1/es1_info.c
https://gitlab.freedesktop.org/mesa/demos/-/blob/main/src/egl/opengles2/es2_info.c

This Mesa 23.1 change made disabling the gles1 option disable the context support:
("mesa: optimize out _mesa_is_desktop_gl*() and _mesa_is_gles*() calls when not built")
https://gitlab.freedesktop.org/mesa/mesa/-/commit/adbe8b6c17a76bb5ee0b924d927473f81c593eba

This Mesa 23.2 change properly rejects OpenGL ES 1 context when it's disabled
instead of crashing:
("mesa/main: Exit early when trying to create an unsupported context API")
https://gitlab.freedesktop.org/mesa/mesa/-/commit/8bb1ecaa02177720758255bdd7ec34a5d15feca4
[Message part 2 (text/html, inline)]

Send a report that this bug log contains spam.


Debian bug tracking system administrator <[email protected]>. Last modified: Tue May 13 09:03:14 2025; Machine Name: buxtehude

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU General Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.