Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to use EGLFS platform plugin with a VNC server ?

How to use EGLFS platform plugin with a VNC server ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
7 Posts 5 Posters 4.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    S. Carretero
    wrote on 18 Jan 2018, 09:37 last edited by
    #1

    Hello,
    I work with a IMX6 for a Embedded Linux ARM (armv7).
    I would like to start my app Qt5.9 with the EGLFS platform plugin and a VNC server.
    When I run my program, I get this error :

    ~# ./testQtArm -platform vnc
    This plugin does not support createPlatformOpenGLContext!
    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))
    Aborted
    

    And this is the qtbase's configure (backends)

    QPA backends:
      DirectFB ............................... no
      EGLFS .................................. yes
      EGLFS details:
        EGLFS i.Mx6 .......................... yes
        EGLFS i.Mx6 Wayland .................. no
        EGLFS EGLDevice ...................... no
        EGLFS GBM ............................ yes
        EGLFS Mali ........................... no
        EGLFS Raspberry Pi ................... no
        EGL on X11 ........................... no
      LinuxFB ................................ yes
      VNC .................................... yes
      Mir client ............................. no
    

    I can't use X11 with x11vnc. I must use EGLFS.

    Please help me !

    1 Reply Last reply
    0
    • S Offline
      S Offline
      S. Carretero
      wrote on 18 Jan 2018, 12:25 last edited by
      #2

      I have this error only when my Qt project use qml (QtQuick2).
      If I use qtWidget I don't get error (qtWidget don't use OpenGl).

      R 1 Reply Last reply 18 Jan 2018, 12:30
      0
      • S S. Carretero
        18 Jan 2018, 12:25

        I have this error only when my Qt project use qml (QtQuick2).
        If I use qtWidget I don't get error (qtWidget don't use OpenGl).

        R Offline
        R Offline
        raven-worx
        Moderators
        wrote on 18 Jan 2018, 12:30 last edited by
        #3

        @S.-Carretero
        maybe this thread is helpful for you

        --- SUPPORT REQUESTS VIA CHAT WILL BE IGNORED ---
        If you have a question please use the forum so others can benefit from the solution in the future

        1 Reply Last reply
        0
        • S Offline
          S Offline
          S. Carretero
          wrote on 19 Jan 2018, 13:25 last edited by
          #4

          When I use eglfs's platform plugin without server vnc I get this :

          root@Visio:~# export QSG_INFO=1
          root@Visio:~# ./testQtArm -platform eglfs
          QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
          qt.scenegraph.general: threaded render loop
          qt.scenegraph.general: Using sg animation driver
          qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
          qt.scenegraph.general: Using sg animation driver
          qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
          qt.scenegraph.general: texture atlas dimensions: 1024x512
          qt.scenegraph.general: R/G/B/A Buffers:    4 4 4 0
          qt.scenegraph.general: Depth Buffer:       24
          qt.scenegraph.general: Stencil Buffer:     8
          qt.scenegraph.general: Samples:            0
          qt.scenegraph.general: GL_VENDOR:          Vivante Corporation
          qt.scenegraph.general: GL_RENDERER:        Vivante GC2000
          qt.scenegraph.general: GL_VERSION:         OpenGL ES 3.0 V5.0.11.p7.33433
          qt.scenegraph.general: GL_EXTENSIONS:      GL_OES_depth32 GL_EXT_frag_depth GL_OES_element_index_uint GL_OES_EGL_sync GL_OES_depth24 GL_VIV_direct_texture GL_OES_compressed_paletted_texture GL_OES_depth_texture GL_EXT_multisampled_render_to_texture GL_OES_vertex_half_float GL_OES_depth_texture_cube_map GL_OES_fragment_precision_high GL_OES_standard_derivatives GL_EXT_robustness GL_EXT_blend_minmax GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_format_BGRA8888 GL_EXT_multi_draw_arrays GL_EXT_read_format_bgra GL_OES_compressed_ETC1_RGB8_texture GL_OES_vertex_array_object GL_EXT_discard_framebuffer GL_OES_texture_npot GL_OES_packed_depth_stencil  GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_fbo_render_mipmap GL_OES_required_internalformat GL_EXT_texture_filter_anisotropic GL_OES_EGL_image GL_OES_surfaceless_context GL_OES_vertex_type_10_10_10_2 GL_OES_get_program_binary
          qt.scenegraph.general: Max Texture Size:  8192
          qt.scenegraph.general: Debug context:     false
          

          And when I use VNC's platform plugin I get this error :

          root@Visio:~# ./testQtArm -platform vnc
          qt.scenegraph.general: QSG: basic render loop
          qt.scenegraph.general: Using sg animation driver
          This plugin does not support createPlatformOpenGLContext!
          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))
          Aborted
          

          But twice use OpenGL for rendering backend. If I use 2D Renderer it works but Qt Quick 2D renderer has limitations (http://doc.qt.io/QtQuick2DRenderer/qtquick2drenderer-limitations.html) :

          root@Visio:~# export QMLSCENE_DEVICE=softwarecontext
          root@Visio:~# ./testQtArm -platform vnc
          qt.scenegraph.general: Loading backend "softwarecontext"
          QVncServer created on port 5900
          

          How to use VNC platform plugin with OpenGL rendering backend without error ???

          F 1 Reply Last reply 22 Mar 2018, 14:11
          0
          • S S. Carretero
            19 Jan 2018, 13:25

            When I use eglfs's platform plugin without server vnc I get this :

            root@Visio:~# export QSG_INFO=1
            root@Visio:~# ./testQtArm -platform eglfs
            QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
            qt.scenegraph.general: threaded render loop
            qt.scenegraph.general: Using sg animation driver
            qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
            qt.scenegraph.general: Using sg animation driver
            qt.scenegraph.general: Animation Driver: using vsync: 16.67 ms
            qt.scenegraph.general: texture atlas dimensions: 1024x512
            qt.scenegraph.general: R/G/B/A Buffers:    4 4 4 0
            qt.scenegraph.general: Depth Buffer:       24
            qt.scenegraph.general: Stencil Buffer:     8
            qt.scenegraph.general: Samples:            0
            qt.scenegraph.general: GL_VENDOR:          Vivante Corporation
            qt.scenegraph.general: GL_RENDERER:        Vivante GC2000
            qt.scenegraph.general: GL_VERSION:         OpenGL ES 3.0 V5.0.11.p7.33433
            qt.scenegraph.general: GL_EXTENSIONS:      GL_OES_depth32 GL_EXT_frag_depth GL_OES_element_index_uint GL_OES_EGL_sync GL_OES_depth24 GL_VIV_direct_texture GL_OES_compressed_paletted_texture GL_OES_depth_texture GL_EXT_multisampled_render_to_texture GL_OES_vertex_half_float GL_OES_depth_texture_cube_map GL_OES_fragment_precision_high GL_OES_standard_derivatives GL_EXT_robustness GL_EXT_blend_minmax GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_format_BGRA8888 GL_EXT_multi_draw_arrays GL_EXT_read_format_bgra GL_OES_compressed_ETC1_RGB8_texture GL_OES_vertex_array_object GL_EXT_discard_framebuffer GL_OES_texture_npot GL_OES_packed_depth_stencil  GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_fbo_render_mipmap GL_OES_required_internalformat GL_EXT_texture_filter_anisotropic GL_OES_EGL_image GL_OES_surfaceless_context GL_OES_vertex_type_10_10_10_2 GL_OES_get_program_binary
            qt.scenegraph.general: Max Texture Size:  8192
            qt.scenegraph.general: Debug context:     false
            

            And when I use VNC's platform plugin I get this error :

            root@Visio:~# ./testQtArm -platform vnc
            qt.scenegraph.general: QSG: basic render loop
            qt.scenegraph.general: Using sg animation driver
            This plugin does not support createPlatformOpenGLContext!
            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))
            Aborted
            

            But twice use OpenGL for rendering backend. If I use 2D Renderer it works but Qt Quick 2D renderer has limitations (http://doc.qt.io/QtQuick2DRenderer/qtquick2drenderer-limitations.html) :

            root@Visio:~# export QMLSCENE_DEVICE=softwarecontext
            root@Visio:~# ./testQtArm -platform vnc
            qt.scenegraph.general: Loading backend "softwarecontext"
            QVncServer created on port 5900
            

            How to use VNC platform plugin with OpenGL rendering backend without error ???

            F Offline
            F Offline
            forca
            wrote on 22 Mar 2018, 14:11 last edited by
            #5

            @S.-Carretero said in How to use EGLFS platform plugin with a VNC server ?:

            How to use VNC platform plugin with OpenGL rendering backend without error ???

            Did you figured out any solution? I would like to run my qtwebenige-app (on imx6) with vnc support. It is an c++ app (no qml).
            ii qtwebengine 5.9.2+git0+c11c2c8981_cfe armhf

            Now I end up with this:

            QQuickWidget is not supported on this platform.
            qt.quick.focus: QQuickWindowPrivate::setFocusInScope():
            qt.quick.focus: scope: QQuickRootItem(0x612d00)
            qt.quick.focus: scopeSubFocusItem: QObject(0x0)
            qt.quick.focus: item: QQuickItem(0x6128a8)
            qt.quick.focus: activeFocusItem: QObject(0x0)
            qt.quick.focus: QQuickWindowPrivate::setFocusInScope():
            qt.quick.focus: scope: QObject(0x0)
            qt.quick.focus: item: QQuickRootItem(0x612d00)
            qt.quick.focus: activeFocusItem: QObject(0x0)
            This plugin does not support createPlatformOpenGLContext!
            Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlagsQSurfaceFormat::FormatOption(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSi
            [9306:9306:0100/000000.276507:ERROR:zygote_linux.cc(636)] Zygote could not fork: process_type renderer numfds 3 child_pid -1
            [9306:9306:0100/000000.276867:ERROR:zygote_linux.cc(668)] write: Broken pipe

            U 1 Reply Last reply 4 May 2022, 17:10
            0
            • F forca
              22 Mar 2018, 14:11

              @S.-Carretero said in How to use EGLFS platform plugin with a VNC server ?:

              How to use VNC platform plugin with OpenGL rendering backend without error ???

              Did you figured out any solution? I would like to run my qtwebenige-app (on imx6) with vnc support. It is an c++ app (no qml).
              ii qtwebengine 5.9.2+git0+c11c2c8981_cfe armhf

              Now I end up with this:

              QQuickWidget is not supported on this platform.
              qt.quick.focus: QQuickWindowPrivate::setFocusInScope():
              qt.quick.focus: scope: QQuickRootItem(0x612d00)
              qt.quick.focus: scopeSubFocusItem: QObject(0x0)
              qt.quick.focus: item: QQuickItem(0x6128a8)
              qt.quick.focus: activeFocusItem: QObject(0x0)
              qt.quick.focus: QQuickWindowPrivate::setFocusInScope():
              qt.quick.focus: scope: QObject(0x0)
              qt.quick.focus: item: QQuickRootItem(0x612d00)
              qt.quick.focus: activeFocusItem: QObject(0x0)
              This plugin does not support createPlatformOpenGLContext!
              Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlagsQSurfaceFormat::FormatOption(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSi
              [9306:9306:0100/000000.276507:ERROR:zygote_linux.cc(636)] Zygote could not fork: process_type renderer numfds 3 child_pid -1
              [9306:9306:0100/000000.276867:ERROR:zygote_linux.cc(668)] write: Broken pipe

              U Offline
              U Offline
              uwer
              wrote on 4 May 2022, 17:10 last edited by
              #6

              Pretty old thread, but as I'm working on a solution: https://github.com/uwerat/vnc-eglfs

              H 1 Reply Last reply 19 May 2023, 08:25
              0
              • U uwer
                4 May 2022, 17:10

                Pretty old thread, but as I'm working on a solution: https://github.com/uwerat/vnc-eglfs

                H Offline
                H Offline
                HaroldC
                wrote on 19 May 2023, 08:25 last edited by
                #7

                @uwer Great project mate. I noticed it doesn't work for QWidget apps using eglfs. What needs to be done to make it works with QT QWidget apps. I tried removing some validations but ended with 10 VNC server instances, mouse works, but the remote display does not. I'll be happy to work on a PR adding the feature if you give me some light on it.

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved