Good day, Packmans! Apologies for taking so long to get back to this, I have been busy, and my testing took a while.
Long email to follow, I hope it doesn't get rejected by the listserver for size. Manfred, for my AMD GPU, the results (extract) of vdpauinfo for the OpenSUSE Factory Mesa drivers are as follows: Decoder capabilities: name level macbs width height ---------------------------------------------------- MPEG1 --- not supported --- MPEG2_SIMPLE 3 65536 4096 4096 MPEG2_MAIN 3 65536 4096 4096 H264_BASELINE --- not supported --- H264_MAIN --- not supported --- H264_HIGH --- not supported --- VC1_SIMPLE --- not supported --- VC1_MAIN --- not supported --- VC1_ADVANCED --- not supported --- MPEG4_PART2_SP 3 65536 4096 4096 MPEG4_PART2_ASP 5 65536 4096 4096 DIVX4_QMOBILE --- not supported --- DIVX4_MOBILE --- not supported --- DIVX4_HOME_THEATER --- not supported --- DIVX4_HD_1080P --- not supported --- DIVX5_QMOBILE --- not supported --- DIVX5_MOBILE --- not supported --- DIVX5_HOME_THEATER --- not supported --- DIVX5_HD_1080P --- not supported --- H264_CONSTRAINED_BASELINE --- not supported --- H264_EXTENDED --- not supported --- H264_PROGRESSIVE_HIGH --- not supported --- H264_CONSTRAINED_HIGH --- not supported --- H264_HIGH_444_PREDICTIVE --- not supported --- VP9_PROFILE_0 --- not supported --- VP9_PROFILE_1 --- not supported --- VP9_PROFILE_2 --- not supported --- VP9_PROFILE_3 --- not supported --- HEVC_MAIN --- not supported --- HEVC_MAIN_10 --- not supported --- HEVC_MAIN_STILL --- not supported --- HEVC_MAIN_12 --- not supported --- HEVC_MAIN_444 --- not supported --- HEVC_MAIN_444_10 --- not supported --- HEVC_MAIN_444_12 --- not supported --- AV1_MAIN --- not supported --- AV1_HIGH --- not supported --- AV1_PROFESSIONAL --- not supported --- For both the Packman and my custom-built Mesa drivers, the output is different: Decoder capabilities: name level macbs width height ---------------------------------------------------- MPEG1 --- not supported --- MPEG2_SIMPLE 3 65536 4096 4096 MPEG2_MAIN 3 65536 4096 4096 H264_BASELINE 52 65536 4096 4096 H264_MAIN 52 65536 4096 4096 H264_HIGH 52 65536 4096 4096 VC1_SIMPLE 1 65536 4096 4096 VC1_MAIN 2 65536 4096 4096 VC1_ADVANCED 4 65536 4096 4096 MPEG4_PART2_SP 3 65536 4096 4096 MPEG4_PART2_ASP 5 65536 4096 4096 DIVX4_QMOBILE --- not supported --- DIVX4_MOBILE --- not supported --- DIVX4_HOME_THEATER --- not supported --- DIVX4_HD_1080P --- not supported --- DIVX5_QMOBILE --- not supported --- DIVX5_MOBILE --- not supported --- DIVX5_HOME_THEATER --- not supported --- DIVX5_HD_1080P --- not supported --- H264_CONSTRAINED_BASELINE 0 65536 4096 4096 H264_EXTENDED --- not supported --- H264_PROGRESSIVE_HIGH --- not supported --- H264_CONSTRAINED_HIGH --- not supported --- H264_HIGH_444_PREDICTIVE --- not supported --- VP9_PROFILE_0 --- not supported --- VP9_PROFILE_1 --- not supported --- VP9_PROFILE_2 --- not supported --- VP9_PROFILE_3 --- not supported --- HEVC_MAIN 186 65536 4096 4096 HEVC_MAIN_10 --- not supported --- HEVC_MAIN_STILL --- not supported --- HEVC_MAIN_12 --- not supported --- HEVC_MAIN_444 --- not supported --- HEVC_MAIN_444_10 --- not supported --- HEVC_MAIN_444_12 --- not supported --- AV1_MAIN --- not supported --- AV1_HIGH --- not supported --- AV1_PROFESSIONAL --- not supported --- Support for eight codecs gets added! I have updated my HOWTO for building your own Mesa drivers locally. For those who have already got the link, you may just redownload it from the same link. For those who don't and want a copy, drop me a direct *(Private!) *email. There were a few minor corrections and additions, but mainly what I added was a whole new section on benchmarking. There is no harm in posting that and my test results here, I think. Please see below: Benchmarking Nearly a month after writing the first version of this document, I have managed to do some benchmarking for these drivers, by way of comparison, using the Phoronix Test Suite. These tests take a long time to run, and I wasn’t able to run them continuously, because I needed that machine for other purposes. So, what I did was run these tests overnight, while I was asleep. On a multitasking OS like Linux, it is difficult to eliminate operating system interference while the tests are running, but I did try to eliminate CPU and drive usage from cron jobs, by disabling certain services. For example: > systemctl disable mlocate Note, however, for this service, I had to remove and reinstall it again after I had finished. Reenabling it with systemctl didn’t work as expected. My test procedure also was to only start the tests after a reboot, without opening any big applications, (not even Firefox), and I ensured that after a reboot, only a few of the lightweight default KDE apps were open, such as Konsole, Dolphin and Kate. On a rolling release like Tumbleweed, it is also difficult to isolate changes to the base operating system, given that Tumbleweed updates daily. Because days went by between tests, as I recall, there were also kernel updates between each test. Nevertheless, I think the results I obtained gave a fair indication of the relative performance of the different drivers. The Phoronix website: http://www.phoronix-test-suite.com/ The Phoronix GitHub page: https://github.com/phoronix-test-suite/ To install the Phoronix test suite: > git clone https://github.com/phoronix-test-suite/phoronix-test-suite.git > cd phoronix-test-suite/ > sudo ./install-sh > sudo zypper in php8 php8-zip php8-gd php8-zlib php8-bz2 php8-pcntl php8-posix php8-curl php8-sockets php8-readline To list available tests suites: > phoronix-test-suite list-available-suites At first glance, these were the tests that I believe would test GPU performance: pts/desktop-graphics pts/graphics-magick pts/ffmpeg pts/fluidx3d pts/imaging pts/raytracing pts/renderers pts/video-encoding pts/vulkan-compute pts/vulkan-rt Probably, because this driver change mainly has to do with hardware acceleration of codecs, these would be the two best candidates to run: pts/ffmpeg pts/video-encoding However, my main use case has more to do with the general performance of my desktop graphics, namely music visualisation, and emulators for obsolete gaming platforms. So, I ended up running this test: > phoronix-test-suite run pts/desktop-graphics The first time you run this test, it will download and install several games and other graphical test applications, which takes a while. Not that I had a problem installing glmark2. The build process gave me some sort of C++14–related compiler error. I tried fiddling around with the build options, but was unable to resolve the issue. So, I cheated: > sudo zypper in glmark2 In: ~/.phoronix-test-suite/installed-tests/pts/glmark2-1.3.0/pts-install.json I changed it to look like this: "test_installation": { "status": "INSTALLED", #!/bin/sh In: ~/.phoronix-test-suite/installed-tests/pts/glmark2-1.3.0/glmark2 I changed it to look like this: #/bin/sh glmark2 $@ > $LOG_FILE 2>&1 echo $? > ~/test-exit-status After the whole test suite has been run, it will give you the option to start the results viewer. However, you can do that at any time by running this command: > phoronix-test-suite start-result-viewer I ran the test suite three times, once against the default OpenSUSE Factory drivers, once against the Packman drivers, and once against my custom-built drivers, as per the instruction above. These were built on Sunday, the 29th of January 2023, from the following src packages: Mesa-22.3.4-1435.1.src.rpm Mesa-drivers-22.3.4-1435.1.src.rpm (Just a note here, after I had concluded all these tests, I tried to reinstall my custom-built drivers, but rpm refused to install them. The cause was that, in the meantime, the Mesa drivers had gone through a minor version update. I downloaded the latest src rpms and rebuilt those. So, it would seem that one might need to rebuild the Mesa drivers from source every time there is a major or minor version update from the repos, if you use this method.) The run times for my tests were as follows: testc1-packman February 14 12 Hours, 16 Minutes testb-opensuse February 09 11 Hours, 48 Minutes testa-custom February 03 11 Hours, 54 Minutes This was the test result output: testc1-packman, testb-opensue, testa-custom AMD Opteron X3216 APU testing with a HPE ProLiant MicroServer Gen10 (5.12 BIOS) and AMD Radeon R5 512MB on openSUSE 20230213 via the Phoronix Test Suite - Packman Drivers testb-opensue: AMD Opteron X3216 APU testing with a HPE ProLiant MicroServer Gen10 (5.12 BIOS) and AMD Radeon R5 512MB on openSUSE 20230208 via the Phoronix Test Suite. - Factory drivers testa-custom: AMD Opteron X3216 APU testing with a HPE ProLiant MicroServer Gen10 (5.12 BIOS) and AMD Radeon R5 512MB on openSUSE 20230201 via the Phoronix Test Suite. - Custom Build testc1-packman: Processor: AMD Opteron X3216 APU @ 1.60GHz (1 Core / 2 Threads), Motherboard: HPE ProLiant MicroServer Gen10 (5.12 BIOS), Chipset: AMD 15h, Memory: 8GB, Disk: 250GB VB0250EAVER + 320GB Western Digital WD3200AAKS-0 + 500GB Seagate ST500DM002-1BD14 + 3001GB Seagate ST3000DM008-2DM1, Graphics: AMD Radeon R5 512MB, Audio: AMD Kabini HDMI/DP, Monitor: LG Ultra HD, Network: 2 x Broadcom NetXtreme BCM5720 PCIe + Realtek RTL8192EE PCIe OS: openSUSE 20230213, Kernel: 6.1.10-1-default (x86_64), Desktop: KDE Plasma 5.27.0, Display Server: X Server 1.21.1.7, OpenGL: 4.6 Mesa 22.3.5 (LLVM 15.0.7 DRM 3.49), Compiler: GCC 12.2.1 20230124 [revision 193f7e62815b4089dfaed4c2bd34fd4f10209e27] + Clang 15.0.7 + LLVM 15.0.7, File-System: xfs, Screen Resolution: 3840x2160 testb-opensuse: Processor: AMD Opteron X3216 APU @ 1.60GHz (1 Core / 2 Threads), Motherboard: HPE ProLiant MicroServer Gen10 (5.12 BIOS), Chipset: AMD 15h, Memory: 8GB, Disk: 250GB VB0250EAVER + 320GB Western Digital WD3200AAKS-0 + 500GB Seagate ST500DM002-1BD14 + 3001GB Seagate ST3000DM008-2DM1, Graphics: AMD Radeon R5 512MB, Audio: AMD Kabini HDMI/DP, Monitor: LG Ultra HD, Network: 2 x Broadcom NetXtreme BCM5720 PCIe + Realtek RTL8192EE PCIe OS: openSUSE 20230208, Kernel: 6.1.10-1-default (x86_64), Desktop: KDE Plasma 5.26.5, Display Server: X Server 1.21.1.7, OpenGL: 4.6 Mesa 22.3.4 (LLVM 15.0.7 DRM 3.49), Compiler: GCC 12.2.1 20230124 [revision 193f7e62815b4089dfaed4c2bd34fd4f10209e27] + Clang 15.0.7 + LLVM 15.0.7, File-System: xfs, Screen Resolution: 3840x2160 testa-custom: Processor: AMD Opteron X3216 APU @ 1.60GHz (1 Core / 2 Threads), Motherboard: HPE ProLiant MicroServer Gen10 (5.12 BIOS), Chipset: AMD 15h, Memory: 8GB, Disk: 250GB VB0250EAVER + 320GB Western Digital WD3200AAKS-0 + 500GB Seagate ST500DM002-1BD14 + 3001GB Seagate ST3000DM008-2DM1 + 32GB USB Flash Drive, Graphics: AMD Radeon R5 512MB, Audio: AMD Kabini HDMI/DP, Monitor: LG Ultra HD, Network: 2 x Broadcom NetXtreme BCM5720 PCIe + Realtek RTL8192EE PCIe OS: openSUSE 20230201, Kernel: 6.1.8-1-default (x86_64), Desktop: KDE Plasma 5.26.5, Display Server: X Server 1.21.1.6, OpenGL: 4.6 Mesa 22.3.4 (LLVM 15.0.7 DRM 3.49), Compiler: GCC 12.2.1 20230124 [revision 193f7e62815b4089dfaed4c2bd34fd4f10209e27] + Clang 15.0.7 + LLVM 15.0.7, File-System: xfs, Screen Resolution: 3840x2160 OpenArena 0.8.8 Resolution: 1920 x 1080 Frames Per Second > Higher Is Better testc1-packman . 18.1 |======================================================== testb-opensuse . 18.2 |======================================================== testa-custom ... 18.1 |======================================================== OpenArena 0.8.8 Resolution: 1920 x 1080 - Total Frame Time Milliseconds < Lower Is Better testc1-packman . MIN: 6.0 AVG: 55.3 MAX: 94.0 testb-opensuse . MIN: 6.0 AVG: 55.4 MAX: 97.0 testa-custom ... MIN: 6.0 AVG: 55.7 MAX: 96.0 Tesseract 2014-05-12 Resolution: 3840 x 2160 Frames Per Second > Higher Is Better testc1-packman . 12.10 |======================================================= testb-opensuse . 12.13 |======================================================= testa-custom ... 12.13 |======================================================= Unigine Heaven 4.0 Resolution: 3840 x 2160 - Mode: Fullscreen - Renderer: OpenGL Frames Per Second > Higher Is Better testc1-packman . 1.04564 |===================================================== testb-opensuse . 1.04544 |===================================================== testa-custom ... 1.04591 |===================================================== Unigine Valley 1.0 Resolution: 3840 x 2160 - Mode: Fullscreen - Renderer: OpenGL Frames Per Second > Higher Is Better testc1-packman . 1.03202 |===================================================== testb-opensuse . 1.03296 |===================================================== testa-custom ... 1.03386 |===================================================== Xonotic 0.8.5 Resolution: 3840 x 2160 - Effects Quality: Low Frames Per Second > Higher Is Better testc1-packman . 25.87 |====================================================== testb-opensuse . 25.80 |====================================================== testa-custom ... 26.28 |======================================================= Xonotic 0.8.5 Resolution: 3840 x 2160 - Effects Quality: High Frames Per Second > Higher Is Better testc1-packman . 11.11 |======================================================= testb-opensuse . 11.09 |======================================================= testa-custom ... 11.18 |======================================================= Xonotic 0.8.5 Resolution: 3840 x 2160 - Effects Quality: Ultra Frames Per Second > Higher Is Better testc1-packman . 10.17 |======================================================= testb-opensuse . 10.16 |======================================================= testa-custom ... 10.22 |======================================================= Xonotic 0.8.5 Resolution: 3840 x 2160 - Effects Quality: Ultimate Frames Per Second > Higher Is Better testc1-packman . 8.4478494 |=================================================== testb-opensuse . 8.4382181 |=================================================== testa-custom ... 8.4188414 |=================================================== GLmark2 2021.08.30 Resolution: 3840 x 2160 Score > Higher Is Better testc1-packman . 84 |========================================================= testb-opensuse . 83 |======================================================== testa-custom ... 86 |========================================================== ParaView 5.10.1 Test: Many Spheres - Resolution: 3840 x 2160 Frames / Sec > Higher Is Better testc1-packman . 2.33 |======================================================= testb-opensuse . 2.35 |======================================================== testa-custom ... 2.36 |======================================================== ParaView 5.10.1 Test: Many Spheres - Resolution: 3840 x 2160 MiPolys / Sec > Higher Is Better testc1-packman . 233.88 |===================================================== testb-opensuse . 235.35 |====================================================== testa-custom ... 236.55 |====================================================== ParaView 5.10.1 Test: Wavelet Volume - Resolution: 3840 x 2160 Frames / Sec > Higher Is Better testc1-packman . 6.31 |======================================================= testb-opensuse . 6.42 |======================================================== testa-custom ... 6.35 |======================================================= ParaView 5.10.1 Test: Wavelet Volume - Resolution: 3840 x 2160 MiVoxels / Sec > Higher Is Better testc1-packman . 101.03 |===================================================== testb-opensuse . 102.75 |====================================================== testa-custom ... 101.60 |===================================================== ParaView 5.10.1 Test: Wavelet Contour - Resolution: 3840 x 2160 Frames / Sec > Higher Is Better testc1-packman . 1.24 |======================================================= testb-opensuse . 1.25 |======================================================== testa-custom ... 1.26 |======================================================== ParaView 5.10.1 Test: Wavelet Contour - Resolution: 3840 x 2160 MiPolys / Sec > Higher Is Better testc1-packman . 12.90 |====================================================== testb-opensuse . 13.05 |====================================================== testa-custom ... 13.17 |======================================================= You can probably see the comparisons better from the PDF report, which you may download here: https://app.box.com/s/i34b7v3i3saql0cpbl5wcv6f4pq15w2v Out of sixteen tests, the custom-built drivers were the fastest for twelve tests; the Packman drivers were the fastest for one test, and the OpenSUSE Factory drivers were the fastest for three tests. Out of sixteen tests, the custom-built drivers were the slowest for two tests, the Packman drivers were the slowest for nine tests, and the OpenSUSE factory drivers were the slowest for five tests. Conclusions If your use case is highly performant desktop graphics, such as a gaming machine, and you want to squeeze every last bit of performance out of your hardware, and you also want to take advance of hardware acceleration for your codecs, it is probably worth the time and effort it will require to build the Mesa drivers from source, according to the method outlined herein. If your use case is hardware acceleration of video codecs, and you are on Tumbleweed, the Packman drivers are probably your best, (and certainly easiest), option. However, at the time of this writing, the Mesa drivers for Leap 15.4 and 15.5 Beta are still unavailable from the Packman repo. Building from source is your only option. At this point, I do not know why my custom-built drivers are faster than the Packman drivers; I am not sure what the difference is in build environments. Perhaps the Packman maintainers can have a look at this Probably, running the ffmpeg and video-encoding test suites will give you a better indication of the impact of these different drivers on hardware acceleration. I leave that as an exercise for the reader, although I may some day find the time to do it, and will update this document accordingly. Kind regards, Steven. On Tue, 24 Jan 2023 at 20:10, Manfred Hollstein <[email protected]> wrote: > Update: > > I have compared the output from running vdpauinfo in the following > situations: > > 1. original Mesa packages from TW > 2. original Mesa packages from PMBS without the patch > 3. Mesa packages from PMBS with the patch applied in my home > repository on PMBS > > The result on my Intel based systems is that there is *no* difference. I > therefore suggested to revoke the patch. If you think there might be a > difference on an AMD/Nvidia based graphics stack, feel free to test with > it. > > Sorry for the noise! > > Cheers. > > l8er > manfred > > On Tue, 24 Jan 2023, 15:24:15 +0100, Manfred Hollstein wrote: > > Hi there, > > > > On Tue, 24 Jan 2023, 10:45:02 +0100, Manfred Hollstein wrote: > > > [...] > > > On Tue, 24 Jan 2023, 09:16:24 +0100, Masaru Nomiya wrote: > > > > [...] > > > > This has nothing to do with the video codec problem, but Steven > > > > didn't say he couldn't compile Mesa-drivers, so .... (_ _? > > > > > > This is effectively needed to fix Mesa.spec: > > > > > > %if "%{flavor}" == "drivers" > > > %if %{video_codecs} > > > BuildRequires: pkgconfig(x264) > > > BuildRequires: pkgconfig(x265) > > > %endif > > > %endif > > > > > > I'll try to get that pushed into openSUSE.org:X11:Xorg/Mesa, which > would > > > then fix our Essentials/A_tw-Mesa package. > > > > my request has just been accepted and forwarded to openSUSE:Factory > > > > <https://build.opensuse.org/request/show/1060658> > > > > I'll track that and send an update once it's in Factory! > > > > Cheers. > > > > l8er > > manfred > _______________________________________________ > Packman mailing list > [email protected] > https://lists.links2linux.de/cgi-bin/mailman/listinfo/packman _______________________________________________ Packman mailing list [email protected] https://lists.links2linux.de/cgi-bin/mailman/listinfo/packman
