Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-82948

The new handling of Client Buffer Integration causes a crash

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Reported
    • Priority: P1: Critical
    • Resolution: Unresolved
    • Affects Version/s: 5.14.1
    • Fix Version/s: 5.14.2
    • Component/s: QPA: Wayland
    • Labels:
    • Platform/s:
      Linux/Wayland

      Description

      I'm filing this bug upon another investigations done by my colleagues. The crash occurs with Qt which is build w/o "-opengl es2" configure option when running an app using Qt 3D on top of Qt Application Manager. The the below copy from emails with investigations done by Dominik Holland and see the links to the related issues:

      when staring Neptune3 with "--verbose", it shows the following:

      [*WARN*| qt.waylandcompositor.hardwareintegration] Failed to initialize
      EGL display. Could not get EglDisplay for window.
      [*WARN*| qt.waylandcompositor.hardwareintegration] Failed to initialize
      hardware for client buffer integration: "wayland-egl"
      [*WARN*| qt.waylandcompositor.hardwareintegration] No client buffer
      integration was loaded, this means that clients will fall back to use
      CPU buffers (wl_shm) for transmitting buffers instead of using zero-copy
      GPU buffer hand
      les. Expect serious performance impact with OpenGL clients due to
      potentially multiple copies between CPU and GPU memory per buffer.
      See the QtWayland readme for more info about how to build and configure
      Qt for your device.

      [*WARN*| default| qml-launcher] Failed to determine what client buffer
      integration to use
      [*WARN*| am.graphics| qml-launcher] Failed to create the global shared
      OpenGL context.

      So the problem is that because wayland-egl couldn't be initialized on
      the compositor side, the client-side also cannot use it.

      By explitly setting the client-buffer integration you can force the old
      behavior:

      QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=wayland-egl QSG_INFO=1 ./neptune3-ui

      A workaround for the issue could be to set the env variable in neptune3,
      but i'm not sure whether this is really a good idea, especially as this
      won't work on targets where a special client-integration is needed, e.g.
      on imx6 targets.

      The commit which introduced the change is the following:

      commit 137966a6293b50f6b248d130a2e36e67df49335e
      Author: Johan Klokkhammer Helsing <johan.helsing@qt.io>
      Date: Tue Oct 22 13:41:49 2019 +0200

        Attachments

          Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            Activity

              People

              Assignee:
              qt.team.graphics.and.multimedia Qt Graphics Team Oslo
              Reporter:
              vminenko Vladimir Minenko
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Dates

                Created:
                Updated:

                  Gerrit Reviews

                  There are no open Gerrit changes