telegramdesktop / tdesktop

Telegram Desktop messaging app
https://desktop.telegram.org/
Other
26.35k stars 5.24k forks source link

High CPU usage with snap - libEGL warning: egl: failed to create dri2 screen #26787

Closed Master811129 closed 1 year ago

Master811129 commented 1 year ago

Steps to reproduce

  1. open telegram and simply work with it.

Expected behaviour

Telegram with lower cpu usage

Actual behaviour

Telegram with high cpu usage (~50%).

More Info about the issue:

On Wayland/Nvidia, Telegram has high CPU usage when the screen is getting updated so running animations, scrolling, etc give me high CPU usage... So hw acceleration might be disabled. Running telegram from terminal shows this:

[ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112)
libEGL warning: egl: failed to create dri2 screen
QPainter::begin: Paint device returned engine == 0, type: 2
QWidget::render: Cannot render with an inactive painter

(telegram-desktop:7745): Gtk-WARNING **: 18:19:44.977: Theme parsing error: <data>:1:0: Expected a valid selector
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed

** (telegram-desktop:7745): WARNING **: 18:20:07.146: atk-bridge: get_device_events_reply: unknown signature
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.gui.imageio.jpeg: Corrupt JPEG data: premature end of data segment
qt.gui.imageio.jpeg: Corrupt JPEG data: premature end of data segment

note this: libEGL warning: egl: failed to create dri2 screen probably you should ship the snap package with proper libs. BTW Installing libnvidia-egl-wayland1 with apt usually solves this issue on host OS. maybe you should add this as a stage-package to snap container? Im not sure.

Operating system

kubuntu 23.04

Version of Telegram Desktop

4.9.5

Installation source

Snap

Crash ID

No response

Logs

[2023.09.13 18:44:19] Launched version: 4009005, install beta: [FALSE], alpha: 0, debug mode: [FALSE]
[2023.09.13 18:44:19] Executable dir: /snap/telegram-desktop/5002/usr/bin/, name: telegram-desktop
[2023.09.13 18:44:19] Initial working dir: /home/ubuntu/
[2023.09.13 18:44:19] Working dir: /home/ubuntu/snap/telegram-desktop/5002/.local/share/TelegramDesktop/
[2023.09.13 18:44:19] Command line: /snap/telegram-desktop/5002/usr/bin/telegram-desktop --
[2023.09.13 18:44:19] Executable path before check: /snap/telegram-desktop/5002/usr/bin/telegram-desktop
[2023.09.13 18:44:19] Logs started
[2023.09.13 18:44:19] App ID: telegram-desktop_telegram-desktop
[2023.09.13 18:44:20] Connecting local socket to snap.telegram-desktop.25e22bd3245d7fab37dd981220992d52...
[2023.09.13 18:44:20] Socket connect error 0, starting server and app...
[2023.09.13 18:44:20] Moved logging from '/home/ubuntu/snap/telegram-desktop/5002/.local/share/TelegramDesktop/log_start0.txt' to '/home/ubuntu/snap/telegram-desktop/5002/.local/share/TelegramDesktop/log.txt'!
[2023.09.13 18:44:20] Global devicePixelRatio: 1
[2023.09.13 18:44:20] QT_AUTO_SCREEN_SCALE_FACTOR: 0
[2023.09.13 18:44:20] Primary screen DPI: 96, Base: 96.
[2023.09.13 18:44:20] Computed screen scale: 100
[2023.09.13 18:44:20] DevicePixelRatio: 1
[2023.09.13 18:44:20] ScreenScale: 100
[2023.09.13 18:44:20] Icon theme: Adwaita
[2023.09.13 18:44:20] Fallback icon theme: 
[2023.09.13 18:44:20] System tray available: [TRUE]
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAOpenSansRegular.ttf' loaded 'DAOpenSansRegular'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAVazirRegular.ttf' loaded 'DAVazirRegular'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAOpenSansRegularItalic.ttf' loaded 'DAOpenSansRegularItalic'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAVazirRegular.ttf' loaded 'DAVazirRegular'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAOpenSansSemiboldAsBold.ttf' loaded 'DAOpenSansSemibold'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAOpenSansSemiboldItalicAsBold.ttf' loaded 'DAOpenSansSemiboldItalic'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAOpenSansSemiboldAsBold.ttf' loaded 'DAOpenSansSemibold'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAOpenSansSemiboldItalicAsBold.ttf' loaded 'DAOpenSansSemiboldItalic'
[2023.09.13 18:44:20] Font: from ':/gui/fonts/DAVazirMediumAsBold.ttf' loaded 'DAVazirMedium'
[2023.09.13 18:44:20] App Info: reading settings...
[2023.09.13 18:44:20] App Info: reading encrypted settings...
[2023.09.13 18:44:20] Lang Info: Loaded cached, keys: 5268
[2023.09.13 18:44:20] OpenAL Logging Level: (not set)
[2023.09.13 18:44:20] Audio Playback Devices: Built-in Audio Analog Stereo
[2023.09.13 18:44:20] Audio Playback Default Device: Built-in Audio Analog Stereo
[2023.09.13 18:44:20] Audio Capture Devices: Monitor of Built-in Audio Analog Stereo
[2023.09.13 18:44:20] Audio Capture Default Device: Monitor of Built-in Audio Analog Stereo
[2023.09.13 18:44:20] OpenGL Profile: Compatibility.
[2023.09.13 18:44:20] OpenGL Renderer: llvmpipe (LLVM 15.0.7, 256 bits)
[2023.09.13 18:44:20] OpenGL Vendor: Mesa
[2023.09.13 18:44:20] OpenGL Version: 4.5 (Compatibility Profile) Mesa 23.1.6 - kisak-mesa PPA
[2023.09.13 18:44:20] OpenGL Extensions: GL_ARB_gpu_shader_fp64, GL_ARB_shadow, GL_ARB_transform_feedback3, GL_ARB_draw_instanced, GL_EXT_texture_filter_minmax, GL_ARB_texture_border_clamp, GL_ARB_vertex_buffer_object, GL_ARB_invalidate_subdata, GL_ARB_vertex_shader, GL_EXT_texture_compression_latc, GL_KHR_blend_equation_advanced, GL_NV_fog_distance, GL_ARB_occlusion_query, GL_NV_conditional_render, GL_ARB_derivative_control, GL_EXT_vertex_attrib_64bit, GL_ARB_draw_elements_base_vertex, GL_ATI_texture_compression_3dc, GL_AMD_query_buffer_object, GL_ARB_transform_feedback_overflow_query, GL_EXT_vertex_array_bgra, GL_ARB_sampler_objects, GL_AMD_vertex_shader_layer, GL_EXT_texture_edge_clamp, GL_EXT_texture_sRGB_RG8, GL_ARB_texture_rgb10_a2ui, GL_ARB_shader_draw_parameters, GL_INTEL_shader_atomic_float_minmax, GL_ARB_compute_shader, GL_SGIS_texture_lod, GL_ARB_texture_query_levels, GL_ARB_texture_compression, GL_ARB_fragment_program, GL_EXT_texture, GL_ARB_window_pos, GL_ARB_vertex_attrib_64bit, GL_EXT_texture_compression_s3tc, GL_ANGLE_texture_compression_dxt3, GL_ARB_blend_func_extended, GL_ARB_conservative_depth, GL_ARB_framebuffer_object, GL_ARB_texture_swizzle, GL_ARB_shading_language_include, GL_EXT_shader_framebuffer_fetch_non_coherent, GL_NV_copy_depth_to_color, GL_ARB_parallel_shader_compile, GL_SGIS_texture_edge_clamp, GL_EXT_multi_draw_arrays, GL_ARB_transpose_matrix, GL_NV_depth_clamp, GL_IBM_multimode_draw_arrays, GL_ARB_draw_buffers, GL_KHR_texture_compression_astc_ldr, GL_NV_primitive_restart, GL_ARB_debug_output, GL_ARB_color_buffer_float, GL_ARB_map_buffer_range, GL_EXT_texture_snorm, GL_NV_half_float, GL_ARB_texture_buffer_object_rgb32, GL_EXT_texture_buffer_object, GL_ARB_compressed_texture_pixel_storage, GL_ARB_ES2_compatibility, GL_EXT_framebuffer_multisample, GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_APPLE_packed_pixels, GL_ARB_shading_language_packing, GL_ARB_texture_cube_map_array, GL_EXT_pixel_buffer_object, GL_ARB_multi_draw_indirect, GL_ARB_seamless_cubemap_per_texture, GL_EXT_texture_mirror_clamp, GL_ARB_get_texture_sub_image, GL_NVX_gpu_memory_info, GL_ARB_timer_query, GL_ARB_depth_clamp, GL_ARB_get_program_binary, GL_ARB_texture_multisample, GL_EXT_EGL_sync, GL_ARB_ES3_1_compatibility, GL_EXT_memory_object, GL_ARB_vertex_array_bgra, GL_ARB_texture_filter_minmax, GL_ARB_sample_shading, GL_MESA_window_pos, GL_ARB_shader_image_load_store, GL_ARB_shader_objects, GL_ARB_viewport_array, GL_OES_read_format, GL_ARB_texture_rectangle, GL_ARB_explicit_uniform_location, GL_ARB_ES3_2_compatibility, GL_EXT_texture_env_dot3, GL_NV_texture_env_combine4, GL_NV_light_max_exponent, GL_ARB_shading_language_100, GL_ARB_shader_clock, GL_ARB_tessellation_shader, GL_ATI_meminfo, GL_NV_blend_square, GL_ARB_half_float_vertex, GL_EXT_texture_compression_dxt1, GL_ARB_texture_buffer_object, GL_ARB_separate_shader_objects, GL_EXT_texture_array, GL_AMD_seamless_cubemap_per_texture, GL_EXT_framebuffer_sRGB, GL_EXT_abgr, GL_EXT_shadow_funcs, GL_KHR_parallel_shader_compile, GL_ARB_shading_language_420pack, GL_ARB_shader_ballot, GL_ARB_framebuffer_no_attachments, GL_ARB_enhanced_layouts, GL_ARB_texture_env_combine, GL_ARB_multisample, GL_EXT_packed_depth_stencil, GL_NV_copy_image, GL_EXT_blend_equation_separate, GL_EXT_texture_sRGB, GL_EXT_vertex_array, GL_ARB_texture_view, GL_ARB_half_float_pixel, GL_ARB_fragment_coord_conventions, GL_AMD_vertex_shader_viewport_index, GL_ARB_texture_env_add, GL_EXT_shader_framebuffer_fetch, GL_EXT_texture_lod_bias, GL_EXT_gpu_program_parameters, GL_ARB_shader_storage_buffer_object, GL_SGIS_generate_mipmap, GL_EXT_texture_cube_map, GL_AMD_draw_buffers_blend, GL_IBM_rasterpos_clip, GL_ARB_instanced_arrays, GL_ARB_texture_rg, GL_EXT_texture_swizzle, GL_MESA_pack_invert, GL_INGR_blend_func_separate, GL_ATI_fragment_shader, GL_ANGLE_texture_compression_dxt5, GL_EXT_texture_object, GL_ARB_shader_image_size, GL_EXT_provoking_vertex, GL_EXT_separate_specular_color, GL_AMD_conservative_depth, GL_EXT_point_parameters, GL_EXT_compiled_vertex_array, GL_ARB_gl_spirv, GL_SGIS_texture_border_clamp, GL_ATI_texture_mirror_once, GL_ARB_pixel_buffer_object, GL_AMD_shader_trinary_minmax, GL_EXT_texture_shadow_lod, GL_NV_packed_depth_stencil, GL_NV_shader_atomic_float, GL_EXT_texture_compression_rgtc, GL_ARB_framebuffer_sRGB, GL_S3_s3tc, GL_EXT_blend_color, GL_AMD_shader_stencil_export, GL_ARB_spirv_extensions, GL_ARB_base_instance, GL_EXT_polygon_offset_clamp, GL_ARB_robustness, GL_ARB_vertex_type_10f_11f_11f_rev, GL_EXT_copy_texture, GL_EXT_texture_filter_anisotropic, GL_ARB_ES3_compatibility, GL_ARB_draw_indirect, GL_ARB_internalformat_query, GL_ARB_clear_buffer_object, GL_EXT_texture_sRGB_decode, GL_EXT_secondary_color, GL_EXT_transform_feedback, GL_ARB_shader_precision, GL_ARB_arrays_of_arrays, GL_KHR_robustness, GL_EXT_rescale_normal, GL_NV_texture_barrier, GL_ARB_provoking_vertex, GL_AMD_texture_texture4, GL_ARB_pipeline_statistics_query, GL_ARB_point_parameters, GL_ARB_vertex_attrib_binding, GL_ARB_post_depth_coverage, GL_EXT_texture_integer, GL_EXT_direct_state_access, GL_ARB_occlusion_query2, GL_EXT_texture_rectangle, GL_ARB_gpu_shader_int64, GL_EXT_EGL_image_storage, GL_KHR_context_flush_control, GL_ARB_vertex_type_2_10_10_10_rev, GL_EXT_packed_pixels, GL_ARB_texture_buffer_range, GL_ARB_uniform_buffer_object, GL_ARB_texture_storage_multisample, GL_ARB_texture_mirrored_repeat, GL_MESA_texture_signed_rgba, GL_EXT_blend_func_separate, GL_NV_texture_rectangle, GL_EXT_fog_coord, GL_EXT_texture_shared_exponent, GL_ARB_texture_gather, GL_IBM_texture_mirrored_repeat, GL_EXT_debug_label, GL_ARB_vertex_array_object, GL_KHR_no_error, GL_ARB_explicit_attrib_location, GL_ATI_separate_stencil, GL_EXT_timer_query, GL_ARB_shader_atomic_counters, GL_ARB_compatibility, GL_ARB_query_buffer_object, GL_ARB_vertex_program, GL_ARB_shader_stencil_export, GL_ARB_buffer_storage, GL_NV_texgen_reflection, GL_ARB_depth_texture, GL_ATI_blend_equation_separate, GL_ARB_polygon_offset_clamp, GL_ARB_texture_barrier, GL_ARB_point_sprite, GL_ARB_texture_float, GL_EXT_blend_subtract, GL_ARB_shader_texture_image_samples, GL_EXT_subtexture, GL_ARB_multitexture, GL_ARB_transform_feedback_instanced, GL_KHR_blend_equation_advanced_coherent, GL_ARB_shader_viewport_layer_array, GL_ARB_shader_bit_encoding, GL_ARB_texture_cube_map, GL_KHR_debug, GL_ARB_copy_buffer, GL_ARB_depth_buffer_float, GL_ARB_cull_distance, GL_ARB_fragment_layer_viewport, GL_ARB_fragment_program_shadow, GL_EXT_memory_object_fd, GL_ARB_gpu_shader5, GL_ARB_transform_feedback2, GL_ARB_indirect_parameters, GL_ARB_fragment_shader, GL_ARB_draw_buffers_blend, GL_ARB_seamless_cube_map, GL_MESA_shader_integer_functions, GL_AMD_pinned_memory, GL_EXT_framebuffer_object, GL_ARB_map_buffer_alignment, GL_AMD_multi_draw_indirect, GL_EXT_texture_env_combine, GL_ARB_stencil_texturing, GL_EXT_framebuffer_multisample_blit_scaled, GL_ARB_texture_compression_rgtc, GL_ARB_shader_group_vote, GL_KHR_robust_buffer_access_behavior, GL_OES_EGL_image, GL_EXT_gpu_shader4, GL_ATI_draw_buffers, GL_ARB_direct_state_access, GL_MESA_framebuffer_flip_y, GL_ARB_texture_query_lod, GL_ARB_shader_subroutine, GL_ARB_texture_env_crossbar, GL_EXT_texture_env_add, GL_ARB_internalformat_query2, GL_NV_ES1_1_compatibility, GL_ARB_shader_texture_lod, GL_ARB_program_interface_query, GL_ARB_clip_control, GL_ARB_texture_non_power_of_two, GL_ARB_texture_stencil8, GL_ARB_clear_texture, GL_ARB_conditional_render_inverted, GL_ARB_texture_compression_bptc, GL_MESA_ycbcr_texture, GL_ATI_texture_float, GL_ATI_texture_env_combine3, GL_ARB_multi_bind, GL_ARB_texture_mirror_clamp_to_edge, GL_3DFX_texture_compression_FXT1, GL_EXT_shader_integer_mix, GL_ARB_sync, GL_EXT_framebuffer_blit, GL_EXT_stencil_two_side, GL_EXT_texture3D, GL_SUN_multi_draw_arrays, GL_ARB_copy_image, GL_EXT_blend_minmax, GL_EXT_packed_float, GL_EXT_texture_sRGB_R8, GL_ARB_shader_atomic_counter_ops, GL_ARB_robust_buffer_access_behavior, GL_EXT_draw_range_elements, GL_ARB_texture_filter_anisotropic, GL_EXT_stencil_wrap, GL_KHR_texture_compression_astc_sliced_3d, GL_ARB_texture_env_dot3, GL_EXT_bgra, GL_ARB_texture_storage, GL_ARM_shader_framebuffer_fetch_depth_stencil
[2023.09.13 18:44:20] OpenGL: QOpenGLContext created, version: 4.4.
[2023.09.13 18:44:20] App Info: reading accounts info...
[2023.09.13 18:44:20] App Info: reading encrypted info...
[2023.09.13 18:44:20] App Info: reading map...
[2023.09.13 18:44:20] App Info: reading encrypted map...
[2023.09.13 18:44:20] App Info: reading encrypted user settings...
[2023.09.13 18:44:20] App Info: encrypted user settings read.
[2023.09.13 18:44:20] App Info: reading encrypted mtp data...
[2023.09.13 18:44:20] MTP Info: read keys, current: 5, to destroy: 0
[2023.09.13 18:44:20] Map read time: 0
[2023.09.13 18:44:20] App Info: reading encrypted mtp config...
[2023.09.13 18:44:20] Export Info: Destroy top bar by controller removal.
[2023.09.13 18:44:21] OpenGL: [TRUE] (Window)
[2023.09.13 18:44:21] Unable to get last user input time from org.freedesktop.ScreenSaver: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: An AppArmor policy prevents this sender from sending this message to this recipient; type="method_call", sender=":1.150" (uid=1000 pid=9675 comm="/snap/telegram-desktop/5002/usr/bin/telegram-deskt" label="snap.telegram-desktop.telegram-desktop (enforce)") interface="org.freedesktop.ScreenSaver" member="GetSessionIdleTime" error name="(unset)" requested_reply="0" destination="org.freedesktop.ScreenSaver" (uid=1000 pid=1587 comm="/usr/bin/kwin_wayland --wayland-fd 7 --socket wayl" label="unconfined")
[2023.09.13 18:44:21] Notification daemon product name: Plasma
[2023.09.13 18:44:21] Notification daemon vendor name: KDE
[2023.09.13 18:44:21] Notification daemon version: 5.27.4
[2023.09.13 18:44:21] Notification daemon specification version: 1.2
[2023.09.13 18:44:21] Notification daemon capabilities: body, body-hyperlinks, body-markup, body-images, icon-static, actions, persistence, inline-reply, x-kde-urls, x-kde-origin-name, x-kde-display-appname, inhibitions
ilya-fedin commented 1 year ago

BTW Installing libnvidia-egl-wayland1 with apt usually solves this issue on host OS. maybe you should add this as a stage-package to snap container?

Are you sure that works? I believe NVIDIA driver is in a separate repository for proprietary packages which is not accessible in snapcraft. NVIDIA userspace libraries also require the same kernel driver version so I guess embedding NVIDIA driver will lead to crashes on every system that uses other driver version. I'm not aware of any snap package embedding NVIDIA driver, I'm highly doubt that's how it should be/how it works. I'm not sure snap as ecosystem is compatible with NVIDIA at all though, wouldn't be surprised if not and you should just avoid it.

ilya-fedin commented 1 year ago

tdesktop doesn't use opengl for the main window though, it's rendered completely on CPU (cause QtWidgets is CPU-based). The only places with OpenGL shaders are the media viewer and the call window, so high CPU consumption on animations is expected, unfortunately, cause it renders on CPU with 7ms timer...

ilya-fedin commented 1 year ago

The only things you can do are disable the animations or migrate to Telegram-A which is based on Electron and so is completely GPU-based.

Master811129 commented 1 year ago

Are you sure that works? I believe NVIDIA driver is in a separate repository for proprietary packages which is not accessible in snapcraft. NVIDIA userspace libraries also require the same kernel driver version so I guess embedding NVIDIA driver will lead to crashes on every system that uses other driver version. I'm not aware of any snap package embedding NVIDIA driver, I'm highly doubt that's how it should be/how it works. I'm not sure snap as ecosystem is compatible with NVIDIA at all though, wouldn't be surprised if not and you should just avoid it.

I only wanted to tell devs how I fix this warning when it happens on my other Qt apps. I'm not an expert about snaps.

so high CPU consumption on animations is expected,

It is not "expected" to have more than ~50% CPU usage + screaming CPU fan. I have the exact same version of telegram-desktop as a pacman package on the same machine on Arch Linux (I have two linux distros dual-booted) and this problem simply doesn't exist there CPU usage is "expected". this is a packaging issue IMO. on my arch system that EGL warning doesn't exist.

here is telegram running in terminal on arch linux

telegram-desktop 
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed
qt.svg: Error while inflating gzip file: SVG format check failed

and it runs perfectly fine.

ilya-fedin commented 1 year ago

It's indeed weird then cause the main window doesn't use OpenGL

ilya-fedin commented 1 year ago

If it's really about NVIDIA drivers then I'm highly doubt anything could be done :(. Only snapd folks can fix this perhaps.

ilya-fedin commented 1 year ago

Marking as can't reproduce since no tdesktop developer has NVIDIA hardware

Master811129 commented 1 year ago

Sad, Im just posting additional info; running the app with this flag gives this result showing that libEGL fails to find some files in the snap sandbox: LIBGL_DEBUG=verbose telegram-desktop

[ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112)
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
libEGL warning: egl: failed to create dri2 screen
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/ubuntu/snap/telegram-desktop/5002/.drirc: No such file or directory.
QPainter::begin: Paint device returned engine == 0, type: 2
QWidget::render: Cannot render with an inactive painter
ilya-fedin commented 1 year ago

You may get a better result by reporting this to snapd. I believe that's the only component that can give access to NVIDIA drivers.

ilya-fedin commented 1 year ago

Sad, Im just posting additional info; running the app with this flag gives this result showing that libEGL fails to find some files in the snap sandbox:

Apparently it just logs all possible paths given that you set verbose log level? The thing it searches for is likely $SNAP/usr/share/drirc.d/00-mesa-defaults.conf. It's just a config with per-app workarounds.

ilya-fedin commented 1 year ago

I noticed this thread on snapcraft forum: https://forum.snapcraft.io/t/snaps-dont-detect-nvidia-driver-in-wayland/35065. Looks like your issue.

maxiberta commented 1 year ago

Same here. 400% cpu usage while the animated GIF picker is open on nvidia + wayland.

I noticed this thread on snapcraft forum: https://forum.snapcraft.io/t/snaps-dont-detect-nvidia-driver-in-wayland/35065. Looks like your issue.

This issue has been just fixed in gnome-42-2204 by adding libnvidia-egl-wayland1 to stage-packages and exporting __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS "$SNAP_DESKTOP_RUNTIME/usr/share/egl/egl_external_platform.d".

ilya-fedin commented 1 year ago

Hm, we need a fix without gnome extension...

Master811129 commented 1 year ago

Hello again. today my client got automatically updated to 4.10.3 by snapd. and my CPU usage issue has been solved! I have expected CPU usage, just like before. here is the output of the new version of the app.

telegram-desktop
[ALSOFT] (EE) Failed to connect PipeWire event context (errno: 112)
libEGL warning: egl: failed to create dri2 screen
QPainter::begin: Paint device returned engine == 0, type: 2
QWidget::render: Cannot render with an inactive painter
[libvpx-vp9 @ 0x7fd546f75900] v1.11.0
[libvpx-vp9 @ 0x7fd546f75900] v1.11.0

** (telegram-desktop:36640): WARNING **: 21:25:51.558: atk-bridge: get_device_events_reply: unknown signature

Screenshot_20231003_213017

Note that the new blue libvpx-vpx stuff plus the absence of qt.svg errors in the terminal. It seems that the new stuff is being utilized? I'm almost sure the the latest commit on snapcraft.yml (716cc6e) fixed it.🤷‍♂️ Thanks @ilya-fedin.

Still, I have the libegl warning issue.🙁

ilya-fedin commented 1 year ago

No, it means this was unrelated, just like I assumed initially (there's no OpenGL usage in main window after all). It's likely it was emoji cache update, there was another report about this: #26851. It happens every time emojis are updated to a new Unicode standard. Now apparently the cache has finally done regenerating on your machine so it no longer consumes CPU.

maxiberta commented 1 year ago

Hm, we need a fix without gnome extension...

Fwiw, the fix in the gnome extension is just two lines of generic code: libnvidia-egl-wayland1 was added to stage-packages, and __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS exported.

Master811129 commented 1 year ago

It's likely it was emoji cache update, there was another report about this: #26851. It happens every time emojis are updated to a new Unicode standard. Now apparently the cache has finally done regenerating on your machine so it no longer consumes CPU.

I'm sure 100% It wasn't caching thing. because at that time, disabling animations, more-or-less fixed the problem for me... even without disabling animations if the app had static screen without any moving section (spinning wheel for proxy or spoiler animation on texts, etc.) the CPU usage was normal.

ilya-fedin commented 1 year ago

Then the commit you referenced is unlikely to help either, it's not related to animations in any way. It's a workaround of a crash on startup.