簡體   English   中英

Kivy:我的應用程序沒有硬件加速

[英]Kivy: my application isn't hardware accelerated

目前我正在構建一個 Kivy 應用程序來控制打開和關閉儲物櫃的自定義硬件。 為此,我使用 Raspberry Pi 3B+ 以及連接到我的樹莓派的自定義 10" 觸摸屏。我使用的操作系統是 Raspberry Pi OS(32 位)。我已按照所有步驟操作安裝 Kivy 中詳細介紹了安裝 Kivy並因此安裝了預編譯的輪子。一切正常,但似乎我無法讓我的應用程序硬件加速。

當我嘗試運行我的應用程序時,我看到以下內容:

[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'3.1 Mesa 20.3.5'>
[INFO   ] [GL          ] OpenGL vendor <b'Mesa/X.org'>
[INFO   ] [GL          ] OpenGL renderer <b'llvmpipe (LLVM 11.0.1, 128 bits)'>
[INFO   ] [GL          ] OpenGL parsed version: 3, 1
[INFO   ] [GL          ] Shading version <b'1.40'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked

根據這個頁面,這意味着我的應用程序沒有硬件加速。 因此,按照那里詳述的步驟,我使用了groups <user>來檢查我的用戶是否在渲染組中,它是:

<user>: <user> adm dialout cdrom sudo audio video plugdev games users input render netdev spi i2c gpio lpadmin docker

我通過設置 KIVY_GL_BACKEND 和 KIVY_WINDOW 嘗試了幾種組合,但沒有任何效果。 目前我正在使用以下函數來啟動我的應用程序(尚未設置我的環境變量,但將來會這樣做):

def initialize(self):
    if os.environ.get('DISPLAY','') == '':
        os.environ.__setitem__('DISPLAY', ':0.0')
        os.environ['KIVY_GL_BACKEND'] = 'sdl2'
        os.environ['KIVY_WINDOW'] = 'sdl2'

並使用以下幾行使我的應用程序最大化:

from kivy.config import Config
Config.set('graphics', 'fullscreen', 'auto')

我怎樣才能使我的應用程序硬件加速?

更新1:

重新安裝了 32 位版本的樹莓派操作系統(帶桌面)。 我已經嘗試安裝所需的庫: sudo apt-get install python3-pip build-essential git python3 python3-dev ffmpeg libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev zlib1g-dev 然后我運行python -m pip install "kivy[base]" kivy_examples --no-binary kivy kivy 從源代碼構建 kivy。 然后我使用sudo apt-get -y remove libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev SDL2 並按照說明安裝SDL2, SDL2_image, SDL2_mixer, SDL2_ttf並使用命令sudo ldconfig -v更新動態庫緩存,再次檢查組並查看我的用戶在渲染組中,然后運行一個簡單的 kivy 應用程序:

import kivy
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):

    def build(self):
        return Label(text='Hello world')

if __name__ == '__main__':
    MyApp().run()

反過來又向我展示了:

[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'3.1 Mesa 20.3.5'>
[INFO   ] [GL          ] OpenGL vendor <b'Mesa/X.org'>
[INFO   ] [GL          ] OpenGL renderer <b'llvmpipe (LLVM 11.0.1, 128 bits)'>
[INFO   ] [GL          ] OpenGL parsed version: 3, 1
[INFO   ] [GL          ] Shading version <b'1.40'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked

更新 2:

  1. 進入sudo raspi-config
  2. 進入“1 系統選項配置系統設置”
  3. 選擇“S5 Boot / Auto Login Select boot into desktop or to command line”選項
  4. 選擇選項“B2 控制台自動登錄文本控制台,以“用戶”身份自動登錄。
  5. 重新啟動到無頭控制台並從更新 1 重新運行小型測試腳本。
  6. 我受到以下人員的歡迎:
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <sdl2>
[INFO   ] [GL          ] OpenGL version <b'2.1 Mesa 20.3.5'>
[INFO   ] [GL          ] OpenGL vendor <b'Broadcom'>
[INFO   ] [GL          ] OpenGL renderer <b'VC4 V3D 2.1'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 1
[INFO   ] [GL          ] Shading version <b'1.20'>
[INFO   ] [GL          ] Texture max size <2048>
[INFO   ] [GL          ] Texture max units <16>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
  1. 利潤!

如果您想在控制台而不是桌面環境上加速 kivy 應用程序硬件,則需要從源代碼編譯 SDL2。 遵循此說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM