| Summary: | KDE Plasma on Wayland unable to start with Intel GMA 3100 | ||
|---|---|---|---|
| Product: | [Plasma] plasmashell | Reporter: | Urs Fleisch <ufleisch> |
| Component: | generic-wayland | Assignee: | Plasma Bugs List <plasma-bugs-null> |
| Status: | RESOLVED UPSTREAM | ||
| Severity: | normal | CC: | mgraesslin, simonandric5 |
| Priority: | NOR | ||
| Version First Reported In: | 5.11.0 | ||
| Target Milestone: | 1.0 | ||
| Platform: | Arch Linux | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
This is nothing we can do about. I'm sorry. As you figured out already the problem is from QtQuick interaction with the OpenGL driver. This means the actual issue is deep inside Qt. You would have to report the problem to Qt. |
Overview: When I try to start a Plasma Wayland session from SDDM, it stops with the following dialog: Plasma is unable to start as it could not correctly use OpenGL 2. Please check that your graphics drivers are set up correctly. Steps to Reproduce: In SDDM, select "Plasma (Wayland)", then log in. Actual Results: An error dialog is displayed as described above. The user interface does not react to input, but it is possible to switch to another console using Ctrl-Alt-Fn. Expected Results: Starting of Plasma Desktop with Wayland. Build Date & Platform: Hardware: HP Compaq DC7800 with Intel GMA 3100 graphics (Mesa DRI Intel(R) Q35, OpenGL 2.1, DRI driver: i915) Software: Arch Linux with latest updates as of 2017-10-15. $ pacman -Q plasma-wayland-session qt5-base wayland xorg-server xf86-video-intel linux-lts plasma-wayland-session 5.11.0-2 qt5-base 5.9.2-1 wayland 1.14.0-1 xorg-server 1.19.5-1 xf86-video-intel 1:2.99.917+794+ga384b462-1 linux-lts 4.9.56-1 Additional Information: Plasma Wayland used to work when Arch Linux was at Qt 5.7. I tried to find the source of the problem. The error dialog is opened by /usr/bin/plasmashell, after creating instances of QQuickWindow subclasses (DesktopView, PanelView) in plasma-workspace/shell/shellcorona.cpp, sceneGraphError() is signalled, which will then lead to this dialog. So the problem must be QtQuick on Wayland. Running kwin_wayland seems to work ~~~ export $(dbus-launch) export QT_QPA_PLATFORM=wayland export XKB_DEFAULT_LAYOUT=ch export XKB_DEFAULT_VARIANT=de_sundeadkeys export XKB_DEFAULT_MODEL=pc105 export GDK_BACKEND=wayland kwin_wayland --xwayland --exit-with-session=konsole ~~~ Starting weston seems to work too, so I started Weston and tried to start QtQuick apps from the Weston shell, for instance the Qt Quick Controls 2 gallery example: ~~~ QT_QPA_PLATFORM=wayland-egl EGL_LOG_LEVEL=debug ~/src/quickcontrols2/gallery/gallery Using Wayland-EGL libEGL debug: Native platform type: x11 (build-time configuration) libEGL debug: added egl_dri2 to module array libEGL debug: the best driver is DRI2 (test only) libEGL debug: pci id for fd 6: 8086:29b2, driver i915 libEGL debug: DRI2: dlopen(/usr/lib/xorg/modules/dri/i915_dri.so) libEGL debug: found extension `DRI_Core' libEGL info: found extension DRI_Core version 1 libEGL debug: found extension `DRI_IMAGE_DRIVER' libEGL debug: found extension `DRI_DRI2' libEGL info: found extension DRI_DRI2 version 4 libEGL debug: found extension `DRI_DriverVtable' libEGL debug: found extension `DRI_ConfigOptions' libEGL debug: found extension `DRI_TexBuffer' libEGL info: found extension DRI_TexBuffer version 3 libEGL debug: found extension `DRI2_Fence' libEGL debug: found extension `DRI2_Flush' libEGL info: found extension DRI2_Flush version 3 libEGL debug: found extension `DRI_IMAGE' libEGL info: found extension DRI_IMAGE version 7 libEGL debug: found extension `DRI_RENDERER_QUERY' libEGL debug: found extension `DRI_CONFIG_QUERY' libEGL debug: found extension `DRI_NoError' libEGL debug: found extension `DRI_TexBuffer' libEGL debug: found extension `DRI2_Fence' libEGL info: found extension DRI2_Fence version 1 libEGL debug: found extension `DRI2_Flush' libEGL debug: found extension `DRI_IMAGE' libEGL debug: found extension `DRI_RENDERER_QUERY' libEGL info: found extension DRI_RENDERER_QUERY version 1 libEGL debug: found extension `DRI_CONFIG_QUERY' libEGL info: found extension DRI_CONFIG_QUERY version 1 libEGL debug: found extension `DRI_NoError' libEGL info: found extension DRI_NoError version 1 libEGL debug: did not find optional extension DRI_Robustness version 1 libEGL debug: did not find optional extension DRI2_Interop version 1 libEGL debug: the best driver is DRI2 libpng warning: iCCP: known incorrect sRGB profile Using the 'xdg-shell-v6' shell integration libEGL debug: EGL user error 0x3009 (EGL_BAD_MATCH) in dri2_create_context libEGL debug: EGL user error 0x3009 (EGL_BAD_MATCH) in dri2_create_context QWaylandGLContext: failed to create EGLContext, error=3009 libEGL debug: EGL user error 0x3006 (EGL_BAD_CONTEXT) in eglDestroyContext Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::SwapBehavior(DoubleBuffer), swapInterval 1, profile QSurfaceFormat::OpenGLContextProfile(NoProfile)) ~~~ The error occurs in QSGThreadedRenderLoop::handleExposure() (hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp) the two eglCreateContext() calls fail with EGL_BAD_MATCH: ~~~ m_context = eglCreateContext(m_eglDisplay, m_config, m_shareEGLContext, eglContextAttrs.constData()); if (m_context == EGL_NO_CONTEXT) { m_context = eglCreateContext(m_eglDisplay, m_config, EGL_NO_CONTEXT, eglContextAttrs.constData()); m_shareEGLContext = EGL_NO_CONTEXT; } EGLint error = eglGetError(); if (error != EGL_SUCCESS) { qWarning("QWaylandGLContext: failed to create EGLContext, error=%x", error); return; } ~~~ I do not know enough about OpenGL and EGL to proceed here. The arguments are m_shareEGLContext=0 and eglContextAttrs = { [0] = 12440, [1] = 2, [2] = 12539, [3] = 0, [4] = 12541, [5] = 2, [6] = 12344 }. What I noticed are different outputs of glxinfo -B; eglinfo; es2_info in X11 and Wayland, see appendix below. Wayland seems to use software rendering (llvmpipe). I finally tried the QtQuick apps using software rendering. QT_QPA_PLATFORM=wayland-egl QMLSCENE_DEVICE=softwarecontext ~/src/quickcontrols2/gallery/gallery This looks as if it was running, but it is not fully functional, for example clicking the buttons does not do anything. On X11, it works. QT_QPA_PLATFORM=wayland-egl LIBGL_ALWAYS_SOFTWARE=1 ~/src/quickcontrols2/gallery/gallery This works. So I finally managed to run a Plasma Wayland session using the following configuration: /etc/xdg/plasma-workspace/env/plasma-wayland-env.sh ~~~ if test "$XDG_SESSION_TYPE" = "wayland"; then export LIBGL_ALWAYS_SOFTWARE=1 export XKB_DEFAULT_LAYOUT=ch export XKB_DEFAULT_VARIANT=de_sundeadkeys export XKB_DEFAULT_MODEL=pc105 export GDK_BACKEND=wayland fi ~~~ But I think that this is not how it's meant to be, so I am reporting it anyway. Is there a way to make it work without hacks? ~~~ Appendix: Output of "glxinfo -B; eglinfo; es2_info" on X11 and Wayland. X11: ~~~ name of display: :0 display: :0 screen: 0 direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Vendor: Intel Open Source Technology Center (0x8086) Device: Mesa DRI Intel(R) Q35 (0x29b2) Version: 17.2.2 Accelerated: yes Video memory: 384MB Unified memory: yes Preferred profile: compat (0x2) Max core profile version: 0.0 Max compat profile version: 1.4 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 2.0 OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) Q35 OpenGL version string: 2.1 Mesa 17.2.2 OpenGL shading language version string: 1.20 OpenGL ES profile version string: OpenGL ES 2.0 Mesa 17.2.2 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16 EGL API version: 1.4 EGL vendor string: Mesa Project EGL version string: 1.4 (DRI2) EGL client APIs: OpenGL OpenGL_ES EGL extensions string: EGL_CHROMIUM_sync_control EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses 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_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_NOK_swap_region EGL_NOK_texture_from_pixmap EGL_NV_post_sub_buffer EGL_WL_bind_wayland_display EGL client extensions string: EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_wayland EGL_EXT_platform_x11 EGL_MESA_platform_gbm Configurations: bf lv colorbuffer dp st ms vis cav bi renderable supported id sz l r g b a th cl ns b id eat nd gl es es2 vg surfaces --------------------------------------------------------------------- 0x01 32 0 8 8 8 8 0 0 0 0 0x20TC a y y y win,pb,pix 0x02 32 0 8 8 8 8 24 8 0 0 0x20TC a y y y win,pb,pix 0x03 24 0 8 8 8 0 0 0 0 0 0x20TC y y y y win,pb,pix 0x04 24 0 8 8 8 0 24 8 0 0 0x20TC y y y y win,pb,pix 0x05 32 0 8 8 8 8 0 0 0 0 0x21DC a y y y win,pb,pix 0x06 32 0 8 8 8 8 24 8 0 0 0x21DC a y y y win,pb,pix 0x07 24 0 8 8 8 0 0 0 0 0 0x21DC y y y y win,pb,pix 0x08 24 0 8 8 8 0 24 8 0 0 0x21DC y y y y win,pb,pix EGL_VERSION: 1.4 (DRI2) EGL_VENDOR: Mesa Project EGL_EXTENSIONS: EGL_CHROMIUM_sync_control, EGL_KHR_config_attribs, EGL_KHR_create_context, EGL_KHR_create_context_no_error, EGL_KHR_fence_sync, EGL_KHR_get_all_proc_addresses, 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_wait_sync, EGL_MESA_configless_context, EGL_MESA_drm_image, EGL_NOK_swap_region, EGL_NOK_texture_from_pixmap, EGL_NV_post_sub_buffer, EGL_WL_bind_wayland_display EGL_CLIENT_APIS: OpenGL OpenGL_ES GL_VERSION: OpenGL ES 2.0 Mesa 17.2.2 GL_RENDERER: Mesa DRI Intel(R) Q35 GL_EXTENSIONS: GL_EXT_blend_minmax, GL_EXT_multi_draw_arrays, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_compression_dxt1, GL_EXT_texture_format_BGRA8888, GL_OES_depth24, GL_OES_element_index_uint, GL_OES_fbo_render_mipmap, GL_OES_mapbuffer, GL_OES_rgb8_rgba8, GL_OES_stencil8, GL_OES_texture_3D, GL_OES_texture_npot, GL_OES_EGL_image, GL_OES_depth_texture, GL_OES_packed_depth_stencil, GL_EXT_texture_type_2_10_10_10_REV, GL_OES_get_program_binary, GL_APPLE_texture_max_level, GL_EXT_discard_framebuffer, GL_EXT_read_format_bgra, GL_EXT_frag_depth, GL_NV_fbo_color_attachments, GL_OES_EGL_sync, GL_OES_vertex_array_object, GL_ANGLE_texture_compression_dxt3, GL_ANGLE_texture_compression_dxt5, GL_EXT_unpack_subimage, GL_NV_draw_buffers, GL_NV_read_buffer, GL_NV_read_depth, GL_NV_read_depth_stencil, GL_NV_read_stencil, GL_EXT_draw_buffers, GL_EXT_map_buffer_range, GL_KHR_debug, GL_OES_surfaceless_context, GL_EXT_separate_shader_objects, GL_EXT_draw_elements_base_vertex, GL_EXT_texture_border_clamp, GL_KHR_context_flush_control, GL_OES_draw_elements_base_vertex, GL_OES_texture_border_clamp, GL_KHR_no_error ~~~ Wayland: ~~~ name of display: :1 display: :1 screen: 0 direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Vendor: VMware, Inc. (0xffffffff) Device: llvmpipe (LLVM 5.0, 128 bits) (0xffffffff) Version: 17.2.2 Accelerated: no Video memory: 4884MB Unified memory: no Preferred profile: core (0x1) Max core profile version: 3.3 Max compat profile version: 3.0 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.0 OpenGL vendor string: VMware, Inc. OpenGL renderer string: llvmpipe (LLVM 5.0, 128 bits) OpenGL core profile version string: 3.3 (Core Profile) Mesa 17.2.2 OpenGL core profile shading language version string: 3.30 OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL version string: 3.0 Mesa 17.2.2 OpenGL shading language version string: 1.30 OpenGL context flags: (none) OpenGL ES profile version string: OpenGL ES 3.0 Mesa 17.2.2 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00 EGL API version: 1.4 EGL vendor string: Mesa Project EGL version string: 1.4 (DRI2) EGL client APIs: OpenGL OpenGL_ES EGL extensions string: EGL_KHR_cl_event2 EGL_KHR_config_attribs 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_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_MESA_configless_context EGL client extensions string: EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_wayland EGL_EXT_platform_x11 EGL_MESA_platform_gbm Configurations: bf lv colorbuffer dp st ms vis cav bi renderable supported id sz l r g b a th cl ns b id eat nd gl es es2 vg surfaces --------------------------------------------------------------------- 0x01 32 0 8 8 8 8 0 0 0 0 0x24TC a y y y win,pb,pix 0x02 32 0 8 8 8 8 16 0 0 0 0x24TC a y y y win,pb,pix 0x03 32 0 8 8 8 8 24 0 0 0 0x24TC a y y y win,pb,pix 0x04 32 0 8 8 8 8 24 8 0 0 0x24TC a y y y win,pb,pix 0x05 32 0 8 8 8 8 32 0 0 0 0x24TC a y y y win,pb,pix 0x06 24 0 8 8 8 0 0 0 0 0 0x24TC y y y y win,pb,pix 0x07 24 0 8 8 8 0 16 0 0 0 0x24TC y y y y win,pb,pix 0x08 24 0 8 8 8 0 24 0 0 0 0x24TC y y y y win,pb,pix 0x09 24 0 8 8 8 0 24 8 0 0 0x24TC y y y y win,pb,pix 0x0a 24 0 8 8 8 0 32 0 0 0 0x24TC y y y y win,pb,pix 0x0b 32 0 8 8 8 8 0 0 0 0 0x25DC a y y y win,pb,pix 0x0c 32 0 8 8 8 8 16 0 0 0 0x25DC a y y y win,pb,pix 0x0d 32 0 8 8 8 8 24 0 0 0 0x25DC a y y y win,pb,pix 0x0e 32 0 8 8 8 8 24 8 0 0 0x25DC a y y y win,pb,pix 0x0f 32 0 8 8 8 8 32 0 0 0 0x25DC a y y y win,pb,pix 0x10 24 0 8 8 8 0 0 0 0 0 0x25DC y y y y win,pb,pix 0x11 24 0 8 8 8 0 16 0 0 0 0x25DC y y y y win,pb,pix 0x12 24 0 8 8 8 0 24 0 0 0 0x25DC y y y y win,pb,pix 0x13 24 0 8 8 8 0 24 8 0 0 0x25DC y y y y win,pb,pix 0x14 24 0 8 8 8 0 32 0 0 0 0x25DC y y y y win,pb,pix EGL_VERSION: 1.4 (DRI2) EGL_VENDOR: Mesa Project EGL_EXTENSIONS: EGL_KHR_cl_event2, EGL_KHR_config_attribs, 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_no_config_context, EGL_KHR_reusable_sync, EGL_KHR_surfaceless_context, EGL_KHR_wait_sync, EGL_MESA_configless_context EGL_CLIENT_APIS: OpenGL OpenGL_ES GL_VERSION: OpenGL ES 3.0 Mesa 17.2.2 GL_RENDERER: llvmpipe (LLVM 5.0, 128 bits) GL_EXTENSIONS: GL_EXT_blend_minmax, GL_EXT_multi_draw_arrays, GL_EXT_texture_compression_dxt1, 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_mapbuffer, GL_OES_rgb8_rgba8, GL_OES_standard_derivatives, GL_OES_stencil8, GL_OES_texture_3D, GL_OES_texture_float, GL_OES_texture_float_linear, GL_OES_texture_half_float, GL_OES_texture_half_float_linear, GL_OES_texture_npot, GL_OES_vertex_half_float, GL_EXT_texture_sRGB_decode, GL_OES_EGL_image, GL_OES_depth_texture, GL_OES_packed_depth_stencil, GL_EXT_texture_type_2_10_10_10_REV, GL_OES_get_program_binary, GL_APPLE_texture_max_level, GL_EXT_discard_framebuffer, GL_EXT_read_format_bgra, GL_EXT_frag_depth, GL_NV_fbo_color_attachments, 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_texture_rg, GL_EXT_unpack_subimage, GL_NV_draw_buffers, GL_NV_read_buffer, GL_NV_read_depth, GL_NV_read_depth_stencil, GL_NV_read_stencil, GL_EXT_draw_buffers, GL_EXT_map_buffer_range, GL_KHR_debug, GL_OES_depth_texture_cube_map, GL_OES_surfaceless_context, GL_EXT_color_buffer_float, GL_EXT_separate_shader_objects, GL_EXT_shader_integer_mix, GL_EXT_base_instance, GL_EXT_compressed_ETC1_RGB8_sub_texture, GL_EXT_copy_image, GL_EXT_draw_buffers_indexed, GL_EXT_draw_elements_base_vertex, GL_EXT_polygon_offset_clamp, GL_EXT_texture_border_clamp, GL_KHR_context_flush_control, GL_OES_copy_image, GL_OES_draw_buffers_indexed, GL_OES_draw_elements_base_vertex, GL_OES_texture_border_clamp, GL_OES_texture_stencil8, GL_EXT_blend_func_extended, GL_KHR_no_error, GL_EXT_clip_cull_distance, GL_MESA_shader_integer_functions ~~~