• Home
  • /
  • Raspberry PI3
  • /
  • Аппаратное ускорение графики в Raspberry PI3

Аппаратное ускорение графики в Raspberry PI3

Изначально в Raspberry PI3 MESA драйвер (исходный образ 2017-09-07-raspbian-stretch) работает через llvmpipe , т.е. с помощью софтверного рендерера opengl, который использует llvm и архитектуру gallium.

Vendor: VMware, Inc. (0xffffffff)
Device: llvmpipe (LLVM 3.9, 128 bits) (0xffffffff)
Version: 13.0.0
Accelerated: no
Video memory: 925MB
Unified memory: no
Preferred profile: core (0x1)

Для того  чтобы включить полноценное аппаратное ускорение рабочего окружения необходимо проделать операции , описанные здесь (VC4 Complete Raspbian Upgrade). Перед обновлением драйверов обязательно включите ssh через raspi-config:

  1. Обновляем систему и перезагружаемся:
    sudo apt-get update
    sudo apt-get dist-upgrade
     
    sudo apt-get install ccache
    export PATH=/usr/lib/ccache:$PATH
  2. Cкачиваем , компилируем и устанавливаем libdrm:
    sudo apt-get install \
        xutils-dev libpthread-stubs0-dev \
        automake autoconf libtool \
    git clone git://anongit.freedesktop.org/mesa/drm
    cd drm
    ./autogen.sh \
        --prefix=/usr \
        --libdir=/usr/lib/arm-linux-gnueabihf
    make
    sudo make install
  3. Скачиваем , компилируем и устанавливаем MESA:
    sudo apt-get install \
        flex bison python-mako \
        libxcb-dri3-dev libxcb-dri2-0-dev \
        libxcb-glx0-dev libx11-xcb-dev \
        libxcb-present-dev libxcb-sync-dev \
        libxshmfence-dev \
        libxdamage-dev libxext-dev libxfixes-dev \
        x11proto-dri2-dev x11proto-dri3-dev \
        x11proto-present-dev x11proto-gl-dev \
        libexpat1-dev libudev-dev gettext
     
    git clone git://anongit.freedesktop.org/mesa/mesa
    cd mesa
    ./autogen.sh \
        --prefix=/usr \
        --libdir=/usr/lib/arm-linux-gnueabihf \
        --with-gallium-drivers=vc4 \
        --with-dri-drivers= \
        --with-egl-platforms=x11,drm
    make
    sudo make install
  4. Пересобираем X Server
    sudo apt-get install \
        libepoxy-dev libpixman-1-dev \
        libevdev-dev libmtdev-dev \
        libfontenc-dev libxkbfile-dev \
        libpciaccess-dev libssl-dev \
        x11proto-bigreqs-dev x11proto-composite-dev \
        x11proto-dri2-dev x11proto-dri3-dev \
        x11proto-damage-dev x11proto-fixes-dev x11proto-fonts-dev \
        x11proto-input-dev x11proto-kb-dev \
        x11proto-randr-dev x11proto-render-dev \
        x11proto-record-dev x11proto-resource-dev \
        x11proto-scrnsaver-dev x11proto-video-dev \
        x11proto-xinerama-dev \
        x11proto-xcmisc-dev x11proto-xf86dri-dev \
        x11proto-xf86vidmode-dev 
     
    # Raspbian needs its protos updated
    git clone git://git.freedesktop.org/git/xorg/proto/xproto
    (cd xproto && ./autogen.sh --prefix=/usr && make && sudo make install)
     
    git clone git://git.freedesktop.org/git/xorg/proto/randrproto
    (cd randrproto && ./autogen.sh --prefix=/usr && make && sudo make install)
     
    # Raspbian is missing libxfont2.
    git clone git://git.freedesktop.org/git/xorg/lib/libXfont
    (cd libXfont && ./autogen.sh --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf && make && sudo make install)
     
    git clone git://git.freedesktop.org/git/xorg/xserver
    cd xserver
    ./autogen.sh \
        --prefix=/usr \
        --libdir=/usr/lib/arm-linux-gnueabihf \
        --with-log-dir=/var/log \
        --enable-install-setuid
    make
    sudo make install
     
    # Build the evdev driver, since it's not included in the server.
    git clone git://git.freedesktop.org/git/xorg/driver/xf86-input-evdev
    (cd xf86-input-evdev/ && ./autogen.sh --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf && make && sudo make install)

    Перезагружаемся.

    sudo reboot
  5. По идее всё должно было заработать. Однако после этого может перестать работать мышь с клавиатурой. Для того, чтобы они вновь заработали , проделываем следующее уже на PC:
    ssh pi@айпиадресмалины
    dpkg -S /usr/share/X11/xorg.conf.d
    отобразятся пакеты , которые используются в этой директории
    apt-get --reinstall install прописываем через пробел те пакеты , которые используются в этой директории
  6. Просматриваем информацию об установленном драйвере и запускаем glxgears, в тесте мы должны получить 60fps:
    LIBGL_DEBUG=verbose glxinfo
    glxgears

    Аппаратное ускорение графики в Raspberry PI3 Аппаратное ускорение графики в Raspberry PI3

  7. А теперь самое интересное , любой запуск приложений , скомпилированных в Qt и работающих поверх рабочего окружения X11 с использованием OpenGLES, будет заканчиваться следующей ошибкой:
    * failed to add service - already in use ?

    Сслыки на данную проблему:
    https://www.raspberrypi.org/forums/viewtopic.php?t=12581
    https://stackoverflow.com/questions/40490113/eglfs-on-raspberry2-failed-to-add-service-already-in-use