Torizon OS上でQtアプリケーションコンテナ(qtdemo-debug)を開発中です。
Qtアプリのグラフィック描画速度向上のため、GPU使用を検討していて、Qt6のGPUコンテナ(torizon/qt6-wayland-vivante:3)も起動するようにdocker-compose.ymlを修正して起動したところ、
qt6-wayland-vivanteコンテナが起動後、すぐに停止状態になり、GPUが使用できない状態です。
アプリケーション自体は、GPUを使用していない状態で起動できています。
試したこと:
docker-compose.ymlで、westonコンテナ(torizon/weston-vivante:3)を起動することで、QtアプリケーションがGPUを使用していない状態で起動できていました。
そこで、docker-compose.ymlファイルにtorizon/qt6-wayland-vivante:3を起動するように以下のように修正しました。
(修正前 docker-compose.yml)
version: "3.9"
services:
qtdemo-debug:
build:
context: .
dockerfile: Dockerfile.debug
image: ${LOCAL_REGISTRY}:5002/pxtqtdemo-debug:${TAG}
ports:
# SSH debug
- 2231:2231
# gdbserver
- 2232:2232
# qml debug
- 2233:2233
devices:
- "/dev/ttyRPMSG31:/dev/ttyRPMSG31"
- "/dev/snd"
volumes:
- type: bind
source: /tmp
target: /tmp
- type: bind
source: /dev
target: /dev
read_only: false
- type: bind
bind:
propagation: shared
source: /media
target: /media
device_cgroup_rules:
# ... for tty0
- "c 4:0 rmw"
# ... for tty7
- "c 4:7 rmw"
# ... for /dev/input devices
- "c 13:* rmw"
- "c 199:* rmw"
# ... for /dev/dri devices
- "c 226:* rmw"
depends_on: [
weston
]
weston:
image: torizon/weston-vivante:3
environment:
- ACCEPT_FSL_EULA=1
# Required to get udev events from host udevd via netlink
network_mode: host
volumes:
- type: bind
source: /tmp
target: /tmp
- type: bind
source: /dev
target: /dev
- type: bind
source: /run/udev
target: /run/udev
- type: bind
source: /etc/xdg/weston/
target: /etc/xdg/weston/
cap_add:
- CAP_SYS_TTY_CONFIG
# Add device access rights through cgroup...
device_cgroup_rules:
# ... for tty0
- "c 4:0 rmw"
# ... for tty1
- "c 4:1 rmw"
# ... for tty7
- "c 4:7 rmw"
# ... for /dev/input devices
- "c 13:* rmw"
- "c 199:* rmw"
# ... for /dev/dri devices
- "c 226:* rmw"
(修正後 docker-compose.yml)
version: "3.9"
services:
qtdemo-debug:
build:
context: .
dockerfile: Dockerfile.debug
image: ${LOCAL_REGISTRY}:5002/pxtqtdemo-debug:${TAG}
ports:
# SSH debug
- 2231:2231
# gdbserver
- 2232:2232
# qml debug
- 2233:2233
devices:
- "/dev/ttyRPMSG31:/dev/ttyRPMSG31"
- "/dev/snd"
volumes:
- type: bind
source: /tmp
target: /tmp
- type: bind
source: /dev
target: /dev
read_only: false
- type: bind
bind:
propagation: shared
source: /media
target: /media
device_cgroup_rules:
# ... for tty0
- "c 4:0 rmw"
# ... for tty7
- "c 4:7 rmw"
# ... for /dev/input devices
- "c 13:* rmw"
- "c 199:* rmw"
# ... for /dev/dri devices
- "c 226:* rmw"
depends_on:
qt6:
condition: service_started
weston:
image: torizon/weston-vivante:3
environment:
- ACCEPT_FSL_EULA=1
# Required to get udev events from host udevd via netlink
network_mode: host
volumes:
- type: bind
source: /tmp
target: /tmp
- type: bind
source: /dev
target: /dev
- type: bind
source: /run/udev
target: /run/udev
- type: bind
source: /etc/xdg/weston/
target: /etc/xdg/weston/
cap_add:
- CAP_SYS_TTY_CONFIG
# Add device access rights through cgroup...
device_cgroup_rules:
# ... for tty0
- "c 4:0 rmw"
# ... for tty1
- "c 4:1 rmw"
# ... for tty7
- "c 4:7 rmw"
# ... for /dev/input devices
- "c 13:* rmw"
- "c 199:* rmw"
# ... for /dev/dri devices
- "c 226:* rmw"
qt6:
image: torizon/qt6-wayland${GPU}:3
environment:
- ACCEPT_FSL_EULA=1
- QT_QPA_PLATFORM=wayland
volumes:
- /tmp:/tmp
- /dev:/dev
device_cgroup_rules:
# ... for tty0
- "c 4:0 rmw"
# ... for tty1
- "c 4:1 rmw"
# ... for tty7
- "c 4:7 rmw"
# ... for /dev/input devices
- "c 13:* rmw"
- "c 199:* rmw"
# ... for /dev/dri devices
- "c 226:* rmw"
depends_on:
weston:
condition: service_started
質問1:
Torizon OS上で動作するQtアプリケーションからGPU(vivante)を使用するには、weston-vivanteコンテナとqt6-wayland-vivanteコンテナを両方動作させる必要があるという認識であっていますか。
質問2:
質問1の認識が間違いない場合、qt6-wayland-vivanteコンテナを動作させ、QtアプリケーションからGPUを使用する方法を教えて欲しいです。