четверг, 1 августа 2024 г.

Nvidia 650 kernel-open vs steam .

Steam и NVIDIA drivers 650.

Открытые nvidia модули доступны с 2022 года, скоро будут "по умолчанию". В Gentoo для компилияции открытых модулей есть USE флаг kernel-open (подробнее см вики).

$ cat /proc/driver/nvidia/version

NVRM version: NVIDIA UNIX Open Kernel Module for x86_64  560.28.03  Release Build  (portage@localhost)  Wed Jul 31 10:48:51 AM MSK 2024
GCC version:  gcc version 14.1.1 20240720 (Gentoo 14.1.1_p20240720 p4) 

Все что будет ниже справедливо для KDE-6 сессии wayland.

Запуск сессии exec dbus-launch --exit-with-session startplasma-wayland

"важные" переменные (у меня определены .bash_profile) но разумнее использовать $HOME/.config/plasma-workspace/env/


# fix: kwin_wayland_drm: atomic commit failed: Invalid argument
export WLR_DRM_NO_ATOMIC=1

#bug: QT_QPA_PLATFORMTHEME not set: transparency performance issues (disable 560)
#export QT_QPA_PLATFORMTHEME=qt6ct

# High DPI Support in Qt
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export QT_QPA_PLATFORM=wayland

export XDG_CURRENT_DESKTOP=KDE
export XDG_SESSION_DESKTOP=KDE
export XDG_BACKEND=wayland


#kwin:  Q подтормаживает;  O2ES - нет курсора? wtf.
export KWIN_COMPOSE=O2

#VSYNC DISABLE
export KWIN_X11_NO_SYNC_TO_VBLANK=1
export KWIN_X11_FORCE_SOFTWARE_VSYNC=1

# https://community.kde.org/KWin/Environment_Variables#KWIN_USE_BUFFER_AGE
# export KWIN_USE_BUFFER_AGE=0

# nVidia Explicit Sync с 555 .
export KWIN_EXPLICIT_SYNC=1

#gsync
export __GL_GSYNC_ALLOWED=0
#gsync flipping
export __GL_VRR_ALLOWED=0



#EAC for apex:
export SDL_VIDEODRIVER='wayland,x11,windows'

так же должны быть созданы и определены XDG_CACHE_HOME XDG_RUNTIME_DIR XDG_RUNTIME_DIR

специфичные nvidia настройки.

в /etc/modprobe.d/nvidia.conf

  • options nvidia-drm modeset=1
  • options nvidia-drm fbdev=1
  • blacklist nouveau

зависимости:

  • DRM KMS must be enabled (см вики).
  • Xwayland с c468d34c коммита.
  • libxcb => 1.13
  • egl-wayland => 1.1.7

подробнее тут

$ bzcat /usr/share/doc/nvidia-drivers-560.28.03-r3/README.txt.bz2


steam

С чем столкнулся:

GLib-GIO-WARNING **: Can't find module 'dconf' specified in GSETTINGS_BACKEND

см багрепотр

решение: GSETTINGS_BACKEND=keyfile steam

Если игре нужен ЕАС, то помимо переменной SDL_VIDEODRIVER='wayland,x11,windows' нужно пересобрать sys-libs/glibc-2.40 c USE-флагом hash-sysv-compat

В 560 игра не запускается (хотя без проблем работала в 555, правда без открытых модулей).

Можно "запустить" с PROTON_USE_WINED3D=1 %command% будет хорошее слайдшоу и беда с текстурами


В итоге запускает в gamescope все без проблем работает.

Ещё потребуются:

  • games-util/gamemode
  • gui-wm/gamescope

launch options:

gamemoderun gamescope -W 1920 -H 1080 -r 144 --fullscreen --force-grab-cursor --grab --steam %command%

Если нужно несколько языков в чате то еще придется добавить примерно такое (у меня по клавише L-super) XKB_DEFAULT_LAYOUT=us,ru XKB_DEFAULT_OPTIONS=grp:lwin_toggle

для других вариантов: grep grp /usr/share/X11/xkb/rules/evdev.lst

вторник, 2 июля 2024 г.

ffmpeg hw acceleration в 2024г.

Заметка под аффектом от ffmpeg.

В двух вещах понадобился ffmpeg и как оказалось что он гораздо круче gui тулз.

  1. Совместить видео и аудио без декодирования.

Хотел скачать видео в дорогу с youtube через savefrom

Насколько понимаю отдельно лежат video и аудиофайлы, при скачивании в нужном мне качестве имеем два файла (videoplayback.mp4 и звук - videoplayback.m4a) собрать из них один очень просто (скорость моментальная):

time ffmpeg -i videoplayback.mp4 -i videoplayback.m4a  -vcodec copy -acodec copy output.mp4

real    0m1.677s
user    0m0.287s
sys     0m0.105s
  1. Грабинг DVD h256.

Раньше (когда дотрагивался) этот процесс занимал целую вечность, сейчас при аппаратном ускорении буквально минуты, да и размер файла оказывается минимальным.

ffmpeg дб собрать с поддержкой HW-acceleration, для nvivdia -- nvenc

equery u  ffmpeg |grep nvenc
+nvenc

ffmpeg -hwaccels shows
...
Hardware acceleration methods:
vdpau
cuda
vaapi
opencl
vulkan

...

В папке DVD (как правило VIDEO_TS) находятся видеофайлы. Для уменьшения размера выходного файла оставляем только нужную дорожку:

ffprobe VTS_01_1.VOB
...
  Stream #0:0[0x1bf]: Data: dvd_nav_packet
  Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x576 [SAR 64:45 DAR 16:9], 25 fps, 25 tbr, 90k tbn
    Side data:
      cpb: bitrate max/min/avg: 8500000/0/0 buffer size: 1835008 vbv_delay: N/A
  Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:3[0x81]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s

Имеется 2 аудио-дорожки, искомая (0:2) - отображается в mpv как 1 звуковая дорожка, 0:1 - видео дорожка.

Ну и сам граббинг

time ffmpeg -i concat:VTS_01_1.VOB\|VTS_01_2.VOB\|VTS_01_3.VOB\|VTS_01_4.VOB\|VTS_01_5.VOB -map 0:1 -map 0:2 -c:v hevc_nvenc  output.mp4
real    3m44.409s
user    5m39.764s
sys     0m11.438s

за 4 минуты из 6Гб выходной файл размером в 1.5Гб, при этом мне кажется даже карта особо не напрягается -- каеф...