Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 >

mercredi 7 février 2018

[Build your own automatic toolchain]: CMake-based MinGW-w64 Cross Toolchain [Modified for MinGW-w64 5.0.3]

Project on Githhub

Pros Cons
  • MinGW-w64 points to the GitHub repository (head/master bran), which is pretty a wrong choice because it can break stability for any program. Better to get it pointing to 5.0.3 (stable version)
  • Not portable because it depends on some packages being installed on your system like GMP version.... But it can be easily fixed by adding/building theses dependancies GMP/MPC/MPFR in the toolchain -- not covered here !!!--

Some notes

I will recommend this project because it uses cmake so it can be maintained easily. Its code is pretty understandable. Surely better than pure bash script. MXE is pretty well-known to install a cross toolchain quickly. But if you were wondering if there is any other project that can do it, I will say that this one is prety cool. You can
  • reuse its code
  • add/build your own packages
  • Cmake-language is a nice language -- just one or 2 levels over shell script
For the incoming weeks I think I will add GMP/MPC/MPFR to make it portable. Keeping in mind that this project was not supposed to be portable that should be interesting to test this -- maybe a fork !!! ---

Install dependancies

apt install git gcc g++ ragel make ninja-build gyp mercurial nasm autotools-dev autoconf automake libgmp-dev libmpfr-dev libmpc-dev

Update my PATH to poin to Meson 0.44.0, ninja 1.8.2 et cmake (Optional because my Ubuntu is 14.10)

export PATH=/opt/ninja/1.8.2/bin/:/opt/meson/0.44.0/bin/:${PATH}
export PYTHONPATH=/opt/meson/0.44.0/lib/python3.4/site-packages/:$PYTHONPATH
export PATH=/opt/cmake/3.9.3/bin/:$PATH

Download/Build and Install some packages

Download Sources

root@amdgaming:/opt/Sources# git clone https://github.com/lachs0r/mingw-w64-cmake.git
Clonage dans 'mingw-w64-cmake'...
remote: Counting objects: 1685, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 1685 (delta 0), reused 0 (delta 0), pack-reused 1682
Réception d'objets: 100% (1685/1685), 385.48 KiB | 482.00 KiB/s, fait.
Résolution des deltas: 100% (1146/1146), fait.
Vérification de la connectivité... fait.

Modify the project to point to MinGW-w64 version 5.0.3

    Go to the folder et edit toolchain/CMakeLists.txt
  • root@amdgaming:/opt/Sources# cd mingw-w64-cmake/
     root@amdgaming:/opt/Sources/mingw-w64-cmake# vim toolchain/CMakeLists.txt 
     
  • Comment line 36 and add a new line to point to MinGW-w64 version 5.0.3
     1 ExternalProject_Add(binutils
     2     URL "https://ftp.gnu.org/gnu/binutils/binutils-2.29.1.tar.xz"
     3     URL_HASH SHA256=e7010a46969f9d3e53b650a518663f98a5dde3c3ae21b7d71e5e6803bc36b577
     4     CONFIGURE_COMMAND /configure
     5         --target=${TARGET_ARCH}
     6         --prefix=${CMAKE_INSTALL_PREFIX}
     7         --with-sysroot=${CMAKE_INSTALL_PREFIX}
     8         --disable-multilib
     9         --disable-nls
    10         --disable-shared
    11     BUILD_COMMAND make -j${MAKEJOBS}
    12     INSTALL_COMMAND make install
    13     LOG_DOWNLOAD 1 LOG_CONFIGURE 1 LOG_BUILD 1 LOG_INSTALL 1
    14 )
    15 
    16 find_program(PKGCONFIG NAMES pkg-config)
    17 
    18 ExternalProject_Add_Step(binutils basedirs
    19     DEPENDEES download
    20     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}
    21     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/bin
    22     COMMAND ${CMAKE_COMMAND} -E create_symlink ${PKGCONFIG} ${CMAKE_INSTALL_PREFIX}/bin/${TARGET_ARCH}-pkg-config
    23     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/${TARGET_ARCH}
    24     COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_INSTALL_PREFIX}/${TARGET_ARCH} ${CMAKE_INSTALL_PREFIX}/mingw
    25     COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/${TARGET_ARCH}/lib
    26     COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_INSTALL_PREFIX}/${TARGET_ARCH}/lib ${CMAKE_INSTALL_PREFIX}/${TARGET_ARCH}/lib64
    27     COMMENT "Setting up target directories and symlinks"
    28 )
    29 
    30 ExternalProject_Add(mingw-w64-headers
    31     PREFIX mingw-w64-prefix
    32     STAMP_DIR mingw-w64-prefix/src/mingw-w64-stamp
    33     SOURCE_DIR mingw-w64-prefix/src/mingw-w64
    34     BINARY_DIR mingw-w64-prefix/src/mingw-w64-headers-build
    35     DEPENDS binutils
    36 #    GIT_REPOSITORY git://git.code.sf.net/p/mingw-w64/mingw-w64
    37     URL "http://download2.nust.na/pub4/sourceforge/m/mi/mingw-w64/mingw-w64/mingw-w64-release/mingw-w64-v5.0.3.tar.bz2"
    38     UPDATE_COMMAND ""
    

Configure the project for Linux 32 Bits

root@amdgaming:/opt/Sources/mingw-w64-cmake# mkdir build-32
root@amdgaming:/opt/Sources/mingw-w64-cmake# cd build-32/
root@amdgaming:/opt/Sources/mingw-w64-cmake/build-32# cmake -DTARGET_ARCH=i686-w64-mingw32 -DCMAKE_INSTALL_PREFIX=/opt/mingw32 -G Ninja ..
-- The C compiler identification is GNU 4.9.1
-- The CXX compiler identification is GNU 4.9.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Parsing package crossc
-- Parsing package icu
-- Parsing package shaderc
-- Parsing package vulkan
-- Parsing package libsoxr
-- Parsing package libzimg
-- Parsing package angle
-- Parsing package gmp
-- Parsing package xz
-- Parsing package lzo
-- Parsing package uchardet
-- Parsing package rubberband
-- Parsing package zlib
-- Parsing package bzip2
-- Parsing package libzip
-- Parsing package libjpeg
-- Parsing package lcms2
-- Parsing package lame
-- Parsing package ogg
-- Parsing package vorbis
-- Parsing package opus
-- Parsing package speex
-- Parsing package libmodplug
-- Parsing package libvpx
-- Parsing package xvidcore
-- Parsing package game-music-emu
-- Parsing package libgpg_error
-- Parsing package libgcrypt
-- Parsing package libpng
-- Parsing package x264
-- Parsing package libdvdcss
-- Parsing package libdvdread
-- Parsing package libdvdnav
-- Parsing package libiconv
-- Parsing package sdl2
-- Parsing package sdl2_mixer
-- Parsing package luajit
-- Parsing package openal-soft
-- Parsing package fribidi
-- Parsing package expat
-- Parsing package boost
-- Parsing package wxWidgets
-- Parsing package libarchive
-- Parsing package freetype2
-- Parsing package sdl2_ttf
-- Parsing package taisei
-- Parsing package libaacs
-- Parsing package libbdplus
-- Parsing package libbluray
-- Parsing package harfbuzz
-- Parsing package libass
-- Parsing package ffmpeg
-- Parsing package mujs
-- Parsing package mpv
-- Configuring done
-- Generating done
-- Build files have been written to: /opt/Sources/mingw-w64-cmake/build-32

Initialize the pre-built toolchain by building a first package

Let's take an easy one zlib
root@amdgaming:/opt/Sources/mingw-w64-cmake/build-32# ninja zlib
[2/58] Performing download step (download, verify and extract) for 'binutils'
-- binutils download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/binutils-prefix/src/binutils-stamp/binutils-download-*.log
[6/58] Performing configure step for 'binutils'
-- binutils configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/binutils-prefix/src/binutils-stamp/binutils-configure-*.log
[7/58] Performing build step for 'binutils'
-- binutils build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/binutils-prefix/src/binutils-stamp/binutils-build-*.log
[8/58] Performing install step for 'binutils'
-- binutils install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/binutils-prefix/src/binutils-stamp/binutils-install-*.log
[11/58] Performing download step (git clone) for 'mingw-w64-headers'
-- mingw-w64-headers download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-stamp/mingw-w64-headers-download-*.log
[14/58] Performing autoreconf step for 'mingw-w64-headers'
-- mingw-w64-headers autoreconf command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-stamp/mingw-w64-headers-autoreconf-*.log
[15/58] Performing configure step for 'mingw-w64-headers'
-- mingw-w64-headers configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-stamp/mingw-w64-headers-configure-*.log
[17/58] Performing install step for 'mingw-w64-headers'
-- mingw-w64-headers install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-stamp/mingw-w64-headers-install-*.log
[20/58] Performing download step (download, verify and extract) for 'gcc-base'
-- gcc-base download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/gcc-prefix/src/gcc-stamp/gcc-base-download-*.log
[22/58] Performing patch step for 'gcc-base'
patching file libstdc++-v3/config/os/mingw32-w64/os_defines.h
[23/58] Performing configure step for 'gcc-base'
-- gcc-base configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/gcc-prefix/src/gcc-stamp/gcc-base-configure-*.log
[24/58] Performing build step for 'gcc-base'
-- gcc-base build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/gcc-prefix/src/gcc-stamp/gcc-base-build-*.log
[25/58] Performing install step for 'gcc-base'
-- gcc-base install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/gcc-prefix/src/gcc-stamp/gcc-base-install-*.log
[35/58] Performing configure step for 'winpthreads'
-- winpthreads configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/winpthreads-stamp/winpthreads-configure-*.log
[36/58] Performing build step for 'winpthreads'
-- winpthreads build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/winpthreads-stamp/winpthreads-build-*.log
[37/58] Performing install step for 'winpthreads'
-- winpthreads install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/winpthreads-stamp/winpthreads-install-*.log
[39/58] Performing configure step for 'mingw-w64-crt'
-- mingw-w64-crt configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-crt-stamp/mingw-w64-crt-configure-*.log
[40/58] Performing build step for 'mingw-w64-crt'
-- mingw-w64-crt build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-crt-stamp/mingw-w64-crt-build-*.log
[41/58] Performing install step for 'mingw-w64-crt'
-- mingw-w64-crt install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/mingw-w64-prefix/src/mingw-w64-crt-stamp/mingw-w64-crt-install-*.log
[48/58] Performing build step for 'gcc'
-- gcc build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/gcc-prefix/src/gcc-stamp/gcc-build-*.log
[49/58] Performing install step for 'gcc'
-- gcc install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/toolchain/gcc-prefix/src/gcc-stamp/gcc-install-*.log
[52/58] Performing download step (download, verify and extract) for 'zlib'
-- zlib download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/zlib-prefix/src/zlib-stamp/zlib-download-*.log
[54/58] Performing patch step for 'zlib'
patching file Makefile.in
patching file configure
[55/58] Performing configure step for 'zlib'
-- zlib configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/zlib-prefix/src/zlib-stamp/zlib-configure-*.log
[56/58] Performing build step for 'zlib'
-- zlib build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/zlib-prefix/src/zlib-stamp/zlib-build-*.log
[57/58] Performing install step for 'zlib'
-- zlib install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/zlib-prefix/src/zlib-stamp/zlib-install-*.log
[58/58] Completed 'zlib'

Let's install others packages for fun: bzip2, xz, lzo, libiconv, expat

root@amdgaming:/opt/Sources/mingw-w64-cmake/build-32# ninja xz bzip2 lzo
[4/27] Performing download step (download, verify and extract) for 'bzip2'
-- bzip2 download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/bzip2-prefix/src/bzip2-stamp/bzip2-download-*.log
[5/27] Performing patch step for 'bzip2'
patching file bzip2.c
patching file bzlib.h
[8/27] Performing build step for 'bzip2'
-- bzip2 build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/bzip2-prefix/src/bzip2-stamp/bzip2-build-*.log
[9/27] Performing install step for 'bzip2'
-- bzip2 install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/bzip2-prefix/src/bzip2-stamp/bzip2-install-*.log
[11/27] Performing download step (download, verify and extract) for 'lzo'
-- lzo download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/lzo-prefix/src/lzo-stamp/lzo-download-*.log
[14/27] Performing configure step for 'lzo'
-- lzo configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/lzo-prefix/src/lzo-stamp/lzo-configure-*.log
[15/27] Performing build step for 'lzo'
-- lzo build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/lzo-prefix/src/lzo-stamp/lzo-build-*.log
[16/27] Performing install step for 'lzo'
-- lzo install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/lzo-prefix/src/lzo-stamp/lzo-install-*.log
[18/27] Performing download step (git clone) for 'xz'
-- xz download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/xz-prefix/src/xz-stamp/xz-download-*.log
[19/27] Performing force-update step for 'xz'
-- xz force-update command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/xz-prefix/src/xz-stamp/xz-force-update-*.log
[22/27] Performing autogen step for 'xz'
-- xz autogen command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/xz-prefix/src/xz-stamp/xz-autogen-*.log
[23/27] Performing configure step for 'xz'
-- xz configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/xz-prefix/src/xz-stamp/xz-configure-*.log
[24/27] Performing build step for 'xz'
-- xz build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/xz-prefix/src/xz-stamp/xz-build-*.log
[26/27] Performing install step for 'xz'
-- xz install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/xz-prefix/src/xz-stamp/xz-install-*.log
[27/27] Completed 'xz'
root@amdgaming:/opt/Sources/mingw-w64-cmake/build-32# ninja libiconv
[2/8] Performing download step (download, verify and extract) for 'libiconv'
-- libiconv download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/libiconv-prefix/src/libiconv-stamp/libiconv-download-*.log
[5/8] Performing configure step for 'libiconv'
-- libiconv configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/libiconv-prefix/src/libiconv-stamp/libiconv-configure-*.log
[6/8] Performing build step for 'libiconv'
-- libiconv build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/libiconv-prefix/src/libiconv-stamp/libiconv-build-*.log
[7/8] Performing install step for 'libiconv'
-- libiconv install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/libiconv-prefix/src/libiconv-stamp/libiconv-install-*.log
[8/8] Completed 'libiconv'
root@amdgaming:/opt/Sources/mingw-w64-cmake/build-32# ninja expat
[2/8] Performing download step (download, verify and extract) for 'expat'
-- expat download command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/expat-prefix/src/expat-stamp/expat-download-*.log
[5/8] Performing configure step for 'expat'
-- expat configure command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/expat-prefix/src/expat-stamp/expat-configure-*.log
[6/8] Performing build step for 'expat'
-- expat build command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/expat-prefix/src/expat-stamp/expat-build-*.log
[7/8] Performing install step for 'expat'
-- expat install command succeeded.  See also /opt/Sources/mingw-w64-cmake/build-32/packages/expat-prefix/src/expat-stamp/expat-install-*.log
[8/8] Completed 'expat'

samedi 3 février 2018

Useful links for Wine and Co

Some links to keep in my notes

vendredi 2 février 2018

[Open Source Drivers] Build DXVK on Linux-32Bits from scratch

My PC is based on a Linux Ubuntu 14.10 with a frozen base system. Only graphic stuff (Xorg Server, Open Source Drivers and its libraries ) and Linux Kernel are kept up-to-date. Building DXVK on this PC was a nice challenge.

Documentation is available here

For those curious
  • as quoted from its original author, Vulkan-based compatibility layer for Direct3D 11 which allows running 3D applications on Linux using Wine
  • DXVK on Github https://github.com/doitsujin/dxvk

jeudi 18 janvier 2018

[LinuxGaming] Some benchmarks on Linux 4.8.17 | AMDGPU DRM | Mesa 17.3.1

Upgrade to kernel 4.8.17 | Switched from RADEON to AMDGPU

This week -- over Monday 15-Jan-2018 -- I upgraded my Linux kernel from 4.4 serie to 4.8 serie. It was the occasion to switch from Radeon module kernel to AMGGPU module kernel.

Some notes to keep in mind

  • Kernel 4.8.17 is an outdated kernel. At the date of writing this ticket, the most recent/stable kernel is 4.14
  • AMDGPU module is quite experimental
For those wondering my rig is a Linux 32 bit. (Yes it is even in 2018!). It is used
  • as multimedia workstation (Youtube, Mail)
  • for gaming -- only for small games, not AAA games --.
  • my own tests with Wine but on Linux 32 Bits for retro-compatibilty with some old libraries
AMDGPU module was built within kernel 4.8.17
root@amdgaming:~# grep -i AMDGPU /boot/config-4.8.17
CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMDGPU_CIK=y
CONFIG_DRM_AMDGPU_USERPTR=y
CONFIG_DRM_AMDGPU_GART_DEBUGFS=y
I had to blacklist RADEON
  • root@amdgaming:~# cat /etc/modprobe.d/blacklist-radeon.conf
    blacklist radeon
    
  • Once booted on this kernel, files used by kernel 4.8.17 were refreshed
    update-initramfs -u -k $(uname -r) && reboot
This is the command line I am currently using
root@amdgaming:~# cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.8.17 root=UUID=8092ec20-bb12-4e08-9863-8ab86481aced ro \
amdgpu.dpm=1 amdgpu.deep_color=1 amdgpu.pcie_gen2=1 amdgpu.powerplay=1 amdgpu.exp_hw_support=1 amdgpu.smc_load_fw=1 amdgpu.audio=0 \
radeon.modeset=0 radeon.pcie_gen2=0 radeon.audio=0 radeon.dpm=0 nouveau.pstate=1 kvm.ignore_msrs=1 intel_iommu=on,igfx_off vfio_iommu_type1.allow_unsafe_interrupts=1 \
i915.enable_hd_vgaarb=1 quiet splash nomdmonddf nomdmonisw vt.handoff=7
It implies to build xf86-video-amdgpu -- for Xorg Server as driver--. Refer to https://cgit.freedesktop.org/xorg/driver/xf86-video-amdgpu/
mkdir -pv /opt/Sources
cd /opt/Sources
git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-amdgpu
mkdir -pv /opt/Builds/xf86-video-amdgpu_build
cd  /opt/Builds/xf86-video-amdgpu_build
/opt/Sources/xf86-video-amdgpu/autogen.sh --enable-maintainer-mode --prefix=/usr/ --enable-glamor --enable-udev
make -j4 && make install

Is it worth switching from RADEON to AMDGPU?

That was my main concern for this week...

But my Linux systems works perfectly for the past days. No real issue with this kernel and this driver.

The only solution is to run some benchmarks tests through Wine and natively on Linux. This way I should be able to discriminate

For the tests shown below I had to switch ShadowPrimary to Off. -- Its default value is "Off --. But since I used this parameter explicitly in my configuration file, this is a personal reminder for myself

david@amdgaming:~$ cat /etc/X11/xorg.conf.d/01-amdgpu-glamor-dri3.conf
Section "Screen"
       Identifier     "Screen"
       DefaultDepth    24
       SubSection      "Display"
               Depth   24
       EndSubSection
EndSection

Section "Device"
	Identifier "AMDGPU"
	Driver "amdgpu"
	Option "Accel" "on"
	Option "AccelMethod" "glamor"
	Option "DRI" "3"
	Option "TearFree" "on"
	Option "ShadowPrimary" "off"	
EndSection

Test 1: Unigine Valley: Wine-Staging 2.21 | Gallium-Nine | Mesa 17.3.1 | AMDGPU | Kernel 4.8.17 | RX 290X

Back in 2015, Gallium Nine performed pretty well. Here I am doing the same test but for
  • Quality = High
  • Vsync = Off
To be honest I keep it mind that performances depends on 4 metrics
  • 3D Engine used for the game
  • Your 3D Drivers
  • The GPU
  • Wine features for 3D Rendering
But this quick test should be useful compared to the test I did 2 years ago

Test 2: Unigine Heaven 4.0: Natively on Linux | Mesa 17.3.1 | AMDGPU | Kernel 4.8.17 | RX 290X

  • Quailty = Ultra
  • Tessellation = Extreme
  • Anti-aliasing = x8
Compared to a few videos I watched on youtube, I came to the conclusion that it works pretty well

Conclusion: Yes AMDGPU runs pretty well!!!

Bye RADEON!!!