View previous topic :: View next topic |
Author |
Message |
vitaly-zdanevich Tux's lil' helper
Joined: 01 Dec 2019 Posts: 106 Location: Belarus
|
Posted: Thu Jun 20, 2024 10:31 am Post subject: Firefox shows that hardware decoding is not available :( |
|
|
Hi, in about:config in Codec Support Information, in the column Hardware Decoding - I see Unsupported for all. Why? My CPU is AMD 7950x.
Code: | Portage 3.0.63 (python 3.12.3-final-0, default/linux/amd64/17.1/no-multilib, gcc-13, glibc-2.39-r9, 6.6.21-gentoo+ x86_64)
=================================================================
System Settings
=================================================================
System uname: Linux-6.6.21-gentoo+-x86_64-AMD_Ryzen_9_7950X_16-Core_Processor-with-glibc2.39
KiB Mem: 65056260 total, 48590360 free
KiB Swap: 0 total, 0 free
Timestamp of repository gentoo: Wed, 19 Jun 2024 12:15:01 +0000
Head commit of repository gentoo: f10decf0ec3bdf75618124534057df0a14b8c61b
Head commit of repository deepin: 7cf5eb8a683836b4e37d3b8b1ba50116de530d26
Timestamp of repository edgets: Mon, 17 Jun 2024 09:48:59 +0000
Head commit of repository edgets: 73e224ef30a04cceef9926f31ce095ced6794d02
Head commit of repository guru: b8d29619de43a844d6b94f313cbf1c94fd01c6f8
Timestamp of repository pentoo: Wed, 19 Jun 2024 12:48:57 +0000
Head commit of repository pentoo: 41d527581678b39d2f992db61d1df20a29c9403c
sh bash 5.1_p16-r11
ld GNU ld (Gentoo 2.42 p3) 2.42.0
app-misc/pax-utils: 1.3.7::gentoo
app-shells/bash: 5.1_p16-r11::gentoo
dev-build/autoconf: 2.13-r8::gentoo, 2.71-r7::gentoo
dev-build/automake: 1.16.5-r2::gentoo
dev-build/cmake: 3.28.5::gentoo
dev-build/libtool: 2.4.7-r4::gentoo
dev-build/make: 4.4.1-r1::gentoo
dev-build/meson: 1.4.0-r1::gentoo
dev-java/java-config: 2.3.3-r1::gentoo
dev-lang/perl: 5.38.2-r3::gentoo
dev-lang/python: 3.9.19_p3::gentoo, 3.11.9-r1::gentoo, 3.12.3-r1::gentoo
dev-lang/rust: 1.77.1::gentoo
sys-apps/baselayout: 2.15::gentoo
sys-apps/openrc: 0.54::gentoo
sys-apps/sandbox: 2.38::gentoo
sys-devel/binutils: 2.42-r1::gentoo
sys-devel/binutils-config: 5.5::gentoo
sys-devel/clang: 17.0.6::gentoo
sys-devel/gcc: 13.2.1_p20240210::gentoo
sys-devel/gcc-config: 2.11::gentoo
sys-devel/lld: 17.0.6::gentoo
sys-devel/llvm: 17.0.6::gentoo
sys-kernel/linux-headers: 6.6-r1::gentoo (virtual/os-headers)
sys-libs/glibc: 2.39-r9::gentoo
Repositories:
gentoo
location: /var/db/repos/gentoo
sync-type: rsync
sync-uri: rsync://rsync2.ru.gentoo.org/gentoo-portage/
priority: -1000
volatile: False
sync-rsync-verify-max-age: 24
sync-rsync-verify-jobs: 1
sync-rsync-extra-opts:
sync-rsync-verify-metamanifest: yes
deepin
location: /var/db/repos/deepin
sync-type: git
sync-uri: https://github.com/zhtengw/deepin-overlay.git
masters: gentoo
volatile: False
edgets
location: /var/db/repos/edgets
sync-type: git
sync-uri: https://github.com/gentoo-mirror/edgets.git
masters: gentoo
volatile: False
guru
location: /var/db/repos/guru
sync-type: git
sync-uri: git@git.gentoo.org:repo/proj/guru.git
masters: gentoo
volatile: False
overlay-of-vitaly-zdanevich
location: /var/db/repos/overlay-of-vitaly-zdanevich
masters: gentoo
volatile: False
pentoo
location: /var/db/repos/pentoo
sync-type: git
sync-uri: https://github.com/gentoo-mirror/pentoo.git
masters: gentoo
volatile: False
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/maven-bin-3.9/conf"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php8.2/ext-active/ /etc/php/cgi-php8.2/ext-active/ /etc/php/cli-php8.2/ext-active/ /etc/php/fpm-php8.2/ext-active/ /etc/php/phpdbg-php8.2/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -march=native -pipe"
DISTDIR="/var/cache/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME"
FCFLAGS="-O2 -march=native -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg-live config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -march=native -pipe"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/ http://gentoo-mirror.alexxy.name/"
LANG="C.UTF8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LEX="flex"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
RUSTFLAGS="-C debuginfo=0 -C target-cpu=native -C opt-level=3"
SHELL="/bin/bash"
USE="X acl amd64 avif bluray bzip2 cli crypt dbus dri dvd egl elogind eme-free exif ffmpeg flac fortran gdbm gdk-pixbuf graphite grub heif iconv jpeg libtirpc lto mp3 ncurses nls ogg opengl openh264 openmp opus pam pcre pgo png pulseaudio rdp readline seccomp split-usr ssl svg svt-av1 test-rust tiff tkip udf unicode v4l vpx vulkan webp x264 x265 xattr xml zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx avx2 avx512f avx512dq avx512cd avx512bw avx512vl avx512vbmi f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 ntrip navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" INPUT_DEVICES="libinput" KERNEL="linux" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LLVM_TARGETS="x64" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres15" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" RUBY_TARGETS="ruby31 ruby32" VIDEO_CARDS="amdgpu radeonsi" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"
Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, MAKEOPTS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, RANLIB, READELF, SIZE, STRINGS, STRIP, YACC, YFLAGS
=================================================================
Package Settings
=================================================================
www-client/firefox-126.0.1::gentoo was built with the following:
USE="X clang dbus eme-free jumbo-build lto openh264 pgo pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry -debug -geckodriver -gmp-autoupdate -hardened -hwaccel -jack -libproxy (-selinux) -sndio -system-png (-valgrind) -wayland -wifi" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -cak -cs -cy -da -de -dsb -el -en-CA -en-GB -eo -es-AR -es-CL -es-ES -es-MX -et -eu -fa -ff -fi -fr -fur -fy -ga -gd -gl -gn -gu -he -hi -hr -hsb -hu -hy -ia -id -is -it -ja -ka -kab -kk -km -kn -ko -lij -lt -lv -mk -mr -ms -my -nb -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -sc -sco -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="17"
CFLAGS="-march=native -pipe"
CXXFLAGS="-march=native -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--undefined-version -Wl,--compress-debug-sections=zlib -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags" |
Maybe this is why YouTube videos sometimes crash for me
Thanks for help. |
|
Back to top |
|
|
eeckwrk99 Apprentice
Joined: 14 Mar 2021 Posts: 231 Location: Gentoo forums
|
Posted: Thu Jun 20, 2024 11:51 am Post subject: |
|
|
vitaly-zdanevich wrote: | Hi, in about:config in Codec Support Information |
(Minor correction: This is visible in about:support)
vitaly-zdanevich wrote: | www-client/firefox-126.0.1::gentoo was built with the following:
USE="X clang dbus eme-free jumbo-build lto openh264 pgo pulseaudio system-av1 system-harfbuzz system-icu system-jpeg system-libevent system-libvpx system-webp telemetry -debug -geckodriver -gmp-autoupdate -hardened -hwaccel -jack -libproxy (-selinux) -sndio -system-png (-valgrind) -wayland -wifi" L10N="-ach -af -an -ar -ast -az -be -bg -bn -br -bs -ca -ca-valencia -cak -cs -cy -da -de -dsb -el -en-CA -en-GB -eo -es-AR -es-CL -es-ES -es-MX -et -eu -fa -ff -fi -fr -fur -fy -ga -gd -gl -gn -gu -he -hi -hr -hsb -hu -hy -ia -id -is -it -ja -ka -kab -kk -km -kn -ko -lij -lt -lv -mk -mr -ms -my -nb -ne -nl -nn -oc -pa -pl -pt-BR -pt-PT -rm -ro -ru -sc -sco -si -sk -sl -son -sq -sr -sv -szl -ta -te -th -tl -tr -trs -uk -ur -uz -vi -xh -zh-CN -zh-TW" LLVM_SLOT="17" |
You need to use hwaccel USE flag:
Code: | % equery u www-client/firefox
hwaccel : Force-enable hardware-accelerated rendering (Mozilla bug 594876) |
Gentoo Wiki - Firefox#Hardware_acceleration should have interesting info too if it's still not working. |
|
Back to top |
|
|
Goverp Advocate
Joined: 07 Mar 2007 Posts: 2177
|
Posted: Thu Jun 20, 2024 7:03 pm Post subject: |
|
|
I've wasted several hours - days even - over the years trying to get a handle on this. AFAIR the hwaccel USE flag only overrides gentoo's initial firefox default runtime configuration (I think media.hardware-video-decoding.force-enabled), but it has absolutely no effect on the code compiled. IIUC it's there for users who don't trust themselves to edit firefox "about:config". Setting it doesn't necessarily mean you will get HW acceleration; that depends on whether firefox thinks it's possible on what it considers to be your hardware.
There are many threads on lots of mailing lists for many distros discussing how to get HW acceleration; most of them end up saying the same thing about a few settings in about:config, though I forget what they are. Whether they take effect at any particular point in time depends on the mages lurking inside the firefox release de jour. Kernel configuration, and the availability of VA-API and/or VDPAU depending on graphics cards. (While checking, I note according to the Arch wiki there is now a new acceleration API, AMF for AMD kit, and one for NVIDIA kit, NVDEC. More to play with ) _________________ Greybeard |
|
Back to top |
|
|
pjp Administrator
Joined: 16 Apr 2002 Posts: 20484
|
Posted: Thu Jun 20, 2024 9:35 pm Post subject: |
|
|
I think that's the oddest functionality of a USE flag I've perceived. Quote: | While disabling the hwaccel USE flag will get rid of the required about:config options, these can be enabled manually regardless of the USE flag status. To disable hardware acceleration, edit about:config with media.hardware-video-decoding.enabled set to false. | (from the above referenced wiki link) _________________ Quis separabit? Quo animo? |
|
Back to top |
|
|
vitaly-zdanevich Tux's lil' helper
Joined: 01 Dec 2019 Posts: 106 Location: Belarus
|
Posted: Fri Jun 21, 2024 12:44 am Post subject: |
|
|
Code: | cat /var/db/repos/gentoo/www-client/firefox/files/gentoo-hwaccel-prefs.js | has:
Code: | /* Force hardware accelerated rendering due to USE=hwaccel */
pref("layers.acceleration.force-enabled", true);
pref("webgl.force-enabled", true); |
I enabled it, restarted Firefox - still the same - Hardware Encoding in Unsupported for every codec name, in about:support#media.
From the wiki:
Quote: | Make sure vaapi works outside Firefox first with vainfo program |
Looks like not working for me?
Code: |
vainfo
Trying display: x11
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib64/va/drivers/radeonsi_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
|
Last edited by vitaly-zdanevich on Sat Jun 22, 2024 12:45 am; edited 1 time in total |
|
Back to top |
|
|
vitaly-zdanevich Tux's lil' helper
Joined: 01 Dec 2019 Posts: 106 Location: Belarus
|
Posted: Fri Jun 21, 2024 12:45 am Post subject: |
|
|
media.hardware-video-decoding.enabled is true for me - this is the default value. |
|
Back to top |
|
|
pjp Administrator
Joined: 16 Apr 2002 Posts: 20484
|
Posted: Fri Jun 21, 2024 3:41 am Post subject: |
|
|
vitaly-zdanevich wrote: | Code: | vainfo
Trying display: x11
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib64/va/drivers/radeonsi_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
|
|
Per PFL, radeonsi_drv_video.so is provided by media-libs/mesa. It has a "vaapi" USE flag. It might be worth checking to make sure it doesn't have any other related flags. _________________ Quis separabit? Quo animo? |
|
Back to top |
|
|
Juippisi Developer
Joined: 30 Sep 2005 Posts: 750 Location: /home
|
Posted: Fri Jun 21, 2024 5:22 am Post subject: |
|
|
Maybe this helps:
https://wiki.gentoo.org/wiki/Firefox#Hardware_acceleration
https://wiki.gentoo.org/wiki/Firefox#Hardware_acceleration_not_working
Goverp wrote: |
I've wasted several hours - days even - over the years trying to get a handle on this. AFAIR the hwaccel USE flag only overrides gentoo's initial firefox default runtime configuration (I think media.hardware-video-decoding.force-enabled), but it has absolutely no effect on the code compiled.
|
It does install vaapitest binary which is required to get hwaccel to work. There was a time when I thought about always enabling hwaccel because as you said, it's a pretty expensive use flag to toggle for small gains, but there were people whose browser crashed with +hwaccel so it better stay as a use flag for now. |
|
Back to top |
|
|
sam_ Developer
Joined: 14 Aug 2020 Posts: 1949
|
Posted: Fri Jun 21, 2024 11:42 am Post subject: |
|
|
Something I've thought about a few times over the years is splitting the config customisation into a separate package with USE so we can easily toggle them without an expensive FF rebuild. |
|
Back to top |
|
|
vitaly-zdanevich Tux's lil' helper
Joined: 01 Dec 2019 Posts: 106 Location: Belarus
|
Posted: Sat Jun 22, 2024 1:39 am Post subject: |
|
|
pjp wrote: | vitaly-zdanevich wrote: | Code: | vainfo
Trying display: x11
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib64/va/drivers/radeonsi_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
|
|
Per PFL, radeonsi_drv_video.so is provided by media-libs/mesa. It has a "vaapi" USE flag. It might be worth checking to make sure it doesn't have any other related flags. |
Thanks, I enabled global USE vaapi and now in about:support I see Hardware Decoding is supported for H264.
Previously I disabled vaapi globally in order to have ffmpeg 6, not 4 - it was a dependency for VLC. |
|
Back to top |
|
|
vitaly-zdanevich Tux's lil' helper
Joined: 01 Dec 2019 Posts: 106 Location: Belarus
|
Posted: Sat Jun 22, 2024 6:24 am Post subject: |
|
|
Hmm but on another machine I also set global vaapi, rebuilt the system, in about:support#media I see Hardware Decoding for vp9, av1, but not for H264, all about:config flags from this page are enabled, what to do?
Code: | $ vainfo
Trying display: x11
libva info: VA-API version 1.21.0
libva info: Trying to open /usr/lib64/va/drivers/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_21
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.21 (libva 2.21.0)
vainfo: Driver version: Mesa Gallium driver 24.0.9 for AMD Radeon Graphics (radeonsi, raphael_mendocino, LLVM 17.0.6, DRM 3.54, 6.6.30-gentoo+)
vainfo: Supported profile and entrypoints
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
VAProfileAV1Profile0 : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc |
media-libs/openh264 is installed.
In about:support#graphics I see
Code: | Compositing: WebRender |
Code: | HARDWARE_VIDEO_DECODING
default available |
|
|
Back to top |
|
|
pjp Administrator
Joined: 16 Apr 2002 Posts: 20484
|
Posted: Sat Jun 22, 2024 3:18 pm Post subject: |
|
|
Per Juippisi's comment regarding troubleshooting, if nothing else helps, maybe the logging will provide more info. _________________ Quis separabit? Quo animo? |
|
Back to top |
|
|
vitaly-zdanevich Tux's lil' helper
Joined: 01 Dec 2019 Posts: 106 Location: Belarus
|
Posted: Sun Jun 23, 2024 1:46 am Post subject: |
|
|
Thanks, I read trubleshooting page
On another Firefox profile - YouTube plays av1....
In logs on the main Firefox profile, on YouTube load page, I see:
Code: | [Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/vp9
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
...
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/vp9
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/vp9
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
[Child 31820: Main Thread]: D/PlatformDecoderModule Sandbox Utility Generic decoder rejects requested type video/avc
...
[Child 31820: MediaSupervisor #62]: D/PlatformDecoderModule Sandbox Utility Generic decoder supports requested type audio/mp4a-latm
[Child 31820: MediaSupervisor #65]: D/PlatformDecoderModule Sandbox Utility Generic decoder supports requested type audio/mp4a-latm
[Child 31820: MediaSupervisor #65]: D/PlatformDecoderModule Sandbox Utility Generic decoder supports requested type audio/mp4a-latm
[Child 31820: MediaSupervisor #65]: D/PlatformDecoderModule Sandbox Utility Generic decoder supports requested type audio/mp4a-latm |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|