Wayland/weston, Qt and RDP connection...

Marius Vlad marius.vlad at collabora.com
Tue Jan 17 11:14:56 UTC 2023


On Mon, Jan 16, 2023 at 02:25:25PM +0000, Matti Ristimäki wrote:
> Hi,
Hi,
> 
> 
> 
> Ok, this might be the reason…
> 
> Your Qt app segfaults in the stand-alone RDP Weston instance case. We
> have no idea why that would be, when weston-smoke works. If it is
> because the app requires hardware accelerated OpenGL (or you use a
> proprietary EGL implementation), then it might still
> work with the DRM-backend. This is because the RDP-backend does not
> yet support hardware accelerated OpenGL or Vulkan apps. Normally apps
> will just fall back to Mesa's software renderer, but maybe your app
> needs something extra or maybe you are not using Mesa as your EGL etc.
> 
Right, the proprietary driver can't/won't fallback to a software renderer,
or it doesn't have a pipeline that can do that.

Also, you could probably replicate this without the RDP backend at all,
by just start weston with --use-pixman argument and attempt to start any
client that wants to perform 3D/hardware acceleration and would
probably die out the same.
> 
> 
> ------------------------------------------------------------------------------------
> 
> Testing weston-simple-egl with RDP and HDMI-display
> 
> ------------------------------------------------------------------------------------
> 
> 
> 
> "Force driving" weston-simple-egl to RDP-weston session: (WAYLAND_DISPLAY=wayland-1)
> 
> 
> 
> Command:
> 
> 
> 
> WAYLAND_DISPLAY=wayland-1 weston-simple-egl
> 
> has EGL_EXT_buffer_age and EGL_EXT_swap_buffers_with_damage
> 
> Segmentation fault
> 
> 
> 
> Logging:
> 
> 
> 
> root at sm2s-imx8mp:~# journalctl -f
> 
> -- Journal begins at Mon 2023-01-16 09:50:23 CET. --
> 
> Jan 16 11:47:32 sm2s-imx8mp audit[1569]: ANOM_ABEND auid=0 uid=0 gid=0 ses=5 pid=1569 comm="weston-simple-e" exe="/usr/bin/weston-simple-egl" sig=11 res=1
> 
> Jan 16 11:47:32 sm2s-imx8mp kernel: audit: type=1701 audit(1673866052.888:25): auid=0 uid=0 gid=0 ses=5 pid=1569 comm="weston-simple-e" exe="/usr/bin/weston-simple-egl" sig=11 res=1
> 
> 
> 
> Result:
> 
> 
> 
> Doesn't work.
> 
> 
> 
> 
> 
> And similar error appears, when I’m trying to drive “Qt” application on RDP-weston:
> 
> 
> 
> Jan 16 13:51:55 sm2s-imx8mp audit[2027]: ANOM_ABEND auid=0 uid=0 gid=0 ses=5 pid=2027 comm="QSGRenderThread" exe="/opt/cpx/cpx" sig=11 res=1
> 
> Jan 16 13:51:55 sm2s-imx8mp kernel: audit: type=1701 audit(1673873515.594:33): auid=0 uid=0 gid=0 ses=5 pid=2027 comm="QSGRenderThread" exe="/opt/cpx/cpx" sig=11 res=1
> 
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------------------
> 
> ------------------------------------------------------------------------------------
> 
> 
> 
> 
> 
> "Force driving" weston-simple-egl to a HDMI display (WAYLAND_DISPLAY=wayland-0)
> 
> 
> 
> Command:
> 
> 
> 
> WAYLAND_DISPLAY=wayland-0 weston-simple-egl
> 
> 
> 
> Logging:
> 
> 
> 
> root at sm2s-imx8mp:/opt/cpx# WAYLAND_DISPLAY=wayland-0 weston-simple-egl
> 
> has EGL_EXT_buffer_age and EGL_EXT_swap_buffers_with_damage
> 
> 304 frames in 5 seconds: 60.799999 fps
> 
> 302 frames in 5 seconds: 60.400002 fps
> 
> 302 frames in 5 seconds: 60.400002 fps
> 
> 302 frames in 5 seconds: 60.400002 fps
> 
> 302 frames in 5 seconds: 60.400002 fps
> 
> 
> 
> 
> 
> Result:
> 
> 
> 
> Works fine, animation runs smoothly.
> 
> 
> 
> [cid:image001.png at 01D929AF.41CA1A80]
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------------------
> 
> 
> 
> 
> 
> BR,
> 
> 
> 
> -Matti
> 
> 
> 
> 
> 
> 
> 
> 
> 
> -----Original Message-----
> From: Pekka Paalanen <ppaalanen at gmail.com>
> Sent: maanantai 16. tammikuuta 2023 11.40
> To: Matti Ristimäki <Matti.Ristimaki at planmeca.com>
> Cc: Marius Vlad <marius.vlad at collabora.com>; wayland-devel at lists.freedesktop.org
> Subject: Re: Wayland/weston, Qt and RDP connection...
> 
> 
> 
> On Sat, 14 Jan 2023 11:58:37 +0200
> 
> Marius Vlad <marius.vlad at collabora.com<mailto:marius.vlad at collabora.com>> wrote:
> 
> 
> 
> > On Fri, Jan 13, 2023 at 08:07:07PM +0000, Matti Ristimäki wrote:
> 
> > > Hi,
> 
> > Hi,
> 
> > >
> 
> > >
> 
> > >
> 
> > > Thanks for the reply!
> 
> > >
> 
> > >
> 
> > >
> 
> > > Jep, this might be the reason...
> 
> > >
> 
> > > > --modules=systemd-notify.so --modules=screen.share.so
> 
> > >
> 
> > > This might be a long shot but it is screen-share.so (hyphen).
> 
> 
> 
> Hi,
> 
> 
> 
> this typo would stop Weston from starting, and Weston would clearly say in its log why. The Weston log output is always important to look at. If the compositor doesn't start, also applications will fail to start with "Failed to create wl_display" or other such error.
> 
> 
> 
> If you use Weston's --log option, check the file since Weston won't print its log to the standard output. I might recommend to not use --log, and let the systemd service unit forward the stdout and stderr into the journal instead (which it does by default).
> 
> 
> 
> > Jan 13 08:20:06 sm2s-imx8mp cpx.sh[769]: EGL: Warning: No default
> 
> > display support on wayland
> 
> 
> 
> That means that the application is not checking whether connecting to a Wayland compositor worked or not. This is an application bug, but it is just secondary fallout from the primary failure. Quite likely the application will also crash (segfault).
> 
> 
> 
> The reason is that EGL_DEFAULT_DISPLAY is equal to NULL, so I infer that the application code does not verify that the wl_display is not NULL before using it.
> 
> 
> 
> EGL_DEFAULT_DISPLAY cannot work with Wayland by design.
> 
> 
> 
> > > We did try the RDP-weston -session this way too...
> 
> > >
> 
> > > 1.
> 
> > >
> 
> > > Running RDP-weston -session manually via terminal and after that forcing weston-smoke to the RDP-weston -session.
> 
> > >
> 
> > >
> 
> > >
> 
> > > First weston rdp-backend command via terminal. Notice, that here the
> 
> > > "--modules=screen-share.so" is written correctly: (And after that
> 
> > > WAYLAND_DISPLAY=wayland-0 is running...)
> 
> > >
> 
> > >
> 
> > >
> 
> > > weston --backend=rdp-backend.so --modules=screen-share.so
> 
> > > --rdp-tls-cert=/data/etc/ssh/tls.crt
> 
> > > --rdp-tls-key=/data/etc/ssh/tls.key
> 
> > Just noticed, you already start weston with the RDP backend *and* with
> 
> > the screen-share module. Is that on purpose?
> 
> 
> 
> I suspect that is not intended. Having both rdp-backend and screen-share in the same Weston instance has no use.
> 
> 
> 
> 
> 
> > The screen-share module starts a weston instance with the RDP backend
> 
> > (assuming you have start-on-startup in the ini file) which you connect
> 
> > to.
> 
> >
> 
> > So for instance, if you have the following in your ini file:
> 
> >
> 
> > [core]
> 
> > modules=screen-share.so
> 
> >
> 
> > [screen-share]
> 
> > command=/path/to/weston --backend=rdp-backend.so
> 
> > --shell=fullscreen-shell.so --no-clients-resize
> 
> > --rdp-tls-key=rdp/tls.key --rdp-tls-cert=rdp/tls.crt --no-config
> 
> > start-on-startup=true
> 
> >
> 
> > Then you run it like:
> 
> >
> 
> > $ /path/to/weston --config /path/to/weston.ini
> 
> >
> 
> > It would automatically start *another* weston instance on the machine
> 
> > to connect to. Weston then chooses up, its own a back-end to use
> 
> > locally (for instance the DRM back-end), but also creates another
> 
> > weston instance with the RDP back-end (which is being done by the screen-share module).
> 
> 
> 
> This is the right idea.
> 
> 
> 
> One shall never start the "second" Weston if screen sharing is desired, only the screen-share plugin in the "first" Weston can do that.
> 
> 
> 
> > So, when the second RDP instance is started by screen-share.so it
> 
> > won't really do anything as it won't be able to do a socket bind
> 
> > (being an already RDP server instance on that port).
> 
> >
> 
> > Do you have a display/an output on that local device, or is it without
> 
> > any outputs graphic devices?
> 
> >
> 
> > Can you provide a full weston log when this happens?
> 
> 
> 
> That would be interesting.
> 
> 
> 
> Matti, it could be beneficial to build the set-up in steps:
> 
> 
> 
> 1. No screen-share, no Qt app. Just Weston with its local backend (DRM
> 
>    quite likely) and a demo app, e.g. weston-simple-egl (shows a
> 
>    spinning triangle in OpenGL ES 2).
> 
> 
> 
> 2. Add screen-share, but no Qt app. Make sure both local and RDP
> 
>    outputs look good with a demo app.
> 
> 
> 
> 3. Add the Qt app.
> 
> 
> 
> If you stop at the first point where you encounter problems, it is easier to ask and answer.
> 
> 
> 
> You have already shown that a stand-alone (non-screen-sharing) RDP Weston instance works fine with your weston-smoke experiment.
> 
> 
> 
> Your Qt app segfaults in the stand-alone RDP Weston instance case. We have no idea why that would be, when weston-smoke works. If it is because the app requires hardware accelerated OpenGL (or you use a proprietary EGL implementation), then it might still work with the DRM-backend. This is because the RDP-backend does not yet support hardware accelerated OpenGL or Vulkan apps. Normally apps will just fall back to Mesa's software renderer, but maybe your app needs something extra or maybe you are not using Mesa as your EGL etc.
> 
> implementation.
> 
> 
> 
> A full Weston log would answer many questions.
> 
> 
> 
> Proprietary graphics driver stacks tend to be hard to work with, because obviously we cannot fix them, and they often work only in very narrow circumstances. Some vendors even patch Weston, so it would be good to understand if you are using an upstream Weston or something with downstream patches.
> 
> 
> 
> 
> 
> Thanks,
> 
> pq
> 
> This e-mail may contain confidential or privileged information and is intended solely for the person to whom it is addressed. If you have received this e-mail in error, please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. We will not be liable for direct, indirect, special or consequential damages arising from the alteration of this e-mail, or as a result of any virus being passed on or as of transmission of this e-mail in general.



> [13:25:42.289] caught signal 15
> [13:25:42.314] output for input device event0 removed
> [13:25:42.314] output for input device event1 removed
> [13:25:42.314] output for input device event2 removed
> [13:25:42.314] output for input device event3 removed
> [13:25:42.314] output for input device event4 removed
> [13:25:42.314] output for input device event6 removed
> [13:25:42.315] event0  - 30370000.snvs:snvs-powerkey: device removed
> [13:25:42.315] event1  - Logitech USB Receiver: device removed
> [13:25:42.316] event2  - Logitech USB Receiver Mouse: device removed
> [13:25:42.316] event3  - Logitech USB Receiver Consumer Control: device removed
> [13:25:42.316] event4  - Logitech USB Receiver System Control: device removed
> [13:25:42.316] event6  - Logitech USB-PS/2 Optical Mouse: device removed
> Date: 2023-01-16 CET
> [13:25:42.601] weston 9.0.0
>                https://wayland.freedesktop.org
>                Bug reports to: https://gitlab.freedesktop.org/wayland/weston/issues/
>                Build: 9.0.0
> [13:25:42.601] Command line: /usr/bin/weston --log=/run/user/0/weston.log --modules=systemd-notify.so
> [13:25:42.601] OS: Linux, 5.10.35-lts-5.10.y+g0eccd203234b, #1 SMP PREEMPT Wed Nov 23 08:33:43 UTC 2022, aarch64
> [13:25:42.601] Using config file '/etc/xdg/weston/weston.ini'
> [13:25:42.602] Output repaint window is 16 ms maximum.
> [13:25:42.602] Loading module '/usr/lib/libweston-9/drm-backend.so'
> [13:25:42.606] initializing drm backend
> [13:25:42.611] logind: session control granted
> [13:25:42.617] using /dev/dri/card1
> [13:25:42.617] DRM: supports atomic modesetting
> [13:25:42.617] DRM: does not support GBM modifiers
> [13:25:42.617] DRM: supports picture aspect ratio
> [13:25:42.617] Loading module '/usr/lib/libweston-9/gl-renderer.so'
> [13:25:42.623] EGL client extensions: EGL_EXT_client_extensions
>                EGL_EXT_platform_base EGL_KHR_platform_wayland
>                EGL_EXT_platform_wayland EGL_KHR_platform_gbm
> [13:25:42.626] EGL version: 1.5
> [13:25:42.626] EGL vendor: Vivante Corporation
> [13:25:42.626] EGL client APIs: OpenGL_ES
> [13:25:42.626] EGL extensions: EGL_KHR_fence_sync EGL_KHR_reusable_sync
>                EGL_KHR_wait_sync EGL_KHR_image EGL_KHR_image_base
>                EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image
>                EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image
>                EGL_EXT_image_dma_buf_import
>                EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_lock_surface
>                EGL_KHR_create_context EGL_KHR_no_config_context
>                EGL_KHR_surfaceless_context EGL_KHR_get_all_proc_addresses
>                EGL_EXT_create_context_robustness EGL_EXT_protected_surface
>                EGL_EXT_protected_content EGL_EXT_buffer_age
>                EGL_ANDROID_native_fence_sync EGL_WL_bind_wayland_display
>                EGL_WL_create_wayland_buffer_from_image EGL_KHR_partial_update
>               EGL_EXT_swap_buffers_with_damage
>                EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float
> [13:25:42.626] EGL_KHR_surfaceless_context available
> [13:25:42.630] GL version: OpenGL ES 3.1 V6.4.3.p2.336687
> [13:25:42.630] GLSL version: OpenGL ES GLSL ES 3.10
> [13:25:42.630] GL vendor: Vivante Corporation
> [13:25:42.630] GL renderer: Vivante GC7000UL
> [13:25:42.630] GL extensions: GL_OES_vertex_type_10_10_10_2
>                GL_OES_vertex_half_float GL_OES_element_index_uint
>                GL_OES_mapbuffer GL_OES_vertex_array_object
>                GL_OES_compressed_ETC1_RGB8_texture
>                GL_OES_compressed_paletted_texture GL_OES_texture_npot
>                GL_OES_rgb8_rgba8 GL_OES_depth_texture
>                GL_OES_depth_texture_cube_map GL_OES_depth24 GL_OES_depth32
>                GL_OES_packed_depth_stencil GL_OES_fbo_render_mipmap
>                GL_OES_get_program_binary GL_OES_fragment_precision_high
>                GL_OES_standard_derivatives GL_OES_EGL_image
>                GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3
>                GL_OES_EGL_sync GL_OES_texture_stencil8
>                GL_OES_shader_image_atomic
>                GL_OES_texture_storage_multisample_2d_array
>                GL_OES_required_internalformat GL_OES_surfaceless_context
>                GL_OES_draw_buffers_indexed GL_OES_texture_border_clamp
>                GL_OES_texture_buffer GL_OES_texture_cube_map_array
>                GL_OES_draw_elements_base_vertex GL_OES_texture_half_float
>                GL_OES_texture_float GL_KHR_blend_equation_advanced
>                GL_KHR_debug GL_KHR_robustness
>                GL_KHR_robust_buffer_access_behavior
>                GL_EXT_texture_type_2_10_10_10_REV
>                GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888
>                GL_EXT_texture_compression_s3tc GL_EXT_read_format_bgra
>                GL_EXT_multi_draw_arrays GL_EXT_frag_depth
>                GL_EXT_discard_framebuffer GL_EXT_blend_minmax
>                GL_EXT_multisampled_render_to_texture
>                GL_EXT_color_buffer_half_float GL_EXT_color_buffer_float
>                GL_EXT_robustness GL_EXT_texture_sRGB_decode
>                GL_EXT_draw_buffers_indexed GL_EXT_texture_border_clamp
>                GL_EXT_texture_buffer GL_EXT_texture_cube_map_array
>                GL_EXT_multi_draw_indirect GL_EXT_draw_elements_base_vertex
>                GL_EXT_texture_rg GL_EXT_protected_textures GL_EXT_sRGB
>                GL_VIV_direct_texture
> [13:25:42.630] GL ES 2 renderer features:
>                read-back format: BGRA
>                wl_shm sub-image to texture: yes
>                EGL Wayland extension: yes
> [13:25:42.646] event0  - 30370000.snvs:snvs-powerkey: is tagged by udev as: Keyboard
> [13:25:42.646] event0  - 30370000.snvs:snvs-powerkey: device is a keyboard
> [13:25:42.654] event1  - Logitech USB Receiver: is tagged by udev as: Keyboard
> [13:25:42.654] event1  - Logitech USB Receiver: device is a keyboard
> [13:25:42.663] event2  - Logitech USB Receiver Mouse: is tagged by udev as: Mouse
> [13:25:42.663] event2  - Logitech USB Receiver Mouse: device is a pointer
> [13:25:42.672] event3  - Logitech USB Receiver Consumer Control: is tagged by udev as: Keyboard
> [13:25:42.672] event3  - Logitech USB Receiver Consumer Control: device is a keyboard
> [13:25:42.681] event4  - Logitech USB Receiver System Control: is tagged by udev as: Keyboard
> [13:25:42.681] event4  - Logitech USB Receiver System Control: device is a keyboard
> [13:25:42.749] event6  - Logitech USB-PS/2 Optical Mouse: is tagged by udev as: Mouse
> [13:25:42.750] event6  - Logitech USB-PS/2 Optical Mouse: device is a pointer
> [13:25:42.754] event5  - audio-hdmi HDMI Jack: is tagged by udev as: Switch
> [13:25:42.755] event5  - not using input device '/dev/input/event5'
> [13:25:42.771] libinput: configuring device "30370000.snvs:snvs-powerkey".
> [13:25:42.772] libinput: configuring device "Logitech USB Receiver".
> [13:25:42.772] libinput: configuring device "Logitech USB Receiver Mouse".
> [13:25:42.772] libinput: configuring device "Logitech USB Receiver Consumer Control".
> [13:25:42.772] libinput: configuring device "Logitech USB Receiver System Control".
> [13:25:42.772] libinput: configuring device "Logitech USB-PS/2 Optical Mouse".
> [13:25:42.773] DRM: head 'HDMI-A-1' found, connector 35 is connected, EDID make 'LNX', model 'Linux SVGA', serial 'Linux #0'
> [13:25:42.773] Registered plugin API 'weston_drm_output_api_v1' of size 24
> [13:25:42.775] Chosen EGL config details: id:  41 rgba: 8 8 8 0 buf: 24 dep:  0 stcl: 0 int: 1-60 type: win|pix|pbf|swap_preserved vis_id: XRGB8888 (0x34325258)
> [13:25:42.775] Output HDMI-A-1 (crtc 33) video modes:
>                800x600 at 60.3, preferred, current, 40.0 MHz
> [13:25:42.775] associating input device event0 with output HDMI-A-1 (none by udev)
> [13:25:42.775] associating input device event1 with output HDMI-A-1 (none by udev)
> [13:25:42.775] associating input device event2 with output HDMI-A-1 (none by udev)
> [13:25:42.775] associating input device event3 with output HDMI-A-1 (none by udev)
> [13:25:42.775] associating input device event4 with output HDMI-A-1 (none by udev)
> [13:25:42.775] associating input device event6 with output HDMI-A-1 (none by udev)
> [13:25:42.775] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1
> [13:25:42.775] Compositor capabilities:
>                arbitrary surface rotation: yes
>                screen capture uses y-flip: yes
>                presentation clock: CLOCK_MONOTONIC, id 1
>                presentation clock resolution: 0.000000001 s
> [13:25:42.775] Loading module '/usr/lib/weston/kiosk-shell.so'
> [13:25:42.776] Loading module '/usr/lib/weston/screen-share.so'
> [13:25:42.776] Loading module '/usr/lib/weston/systemd-notify.so'
> [13:25:42.777] info: add 1 socket(s) provided by systemd

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/wayland-devel/attachments/20230117/a5859713/attachment-0001.sig>


More information about the wayland-devel mailing list