Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Grabación CD/DVD - X-CD-RoastInstalar Ant Commander en GNU/Linux

Instalar AMDGPU desde cero

Página - 1Página - 2




Instalar AMDGPU desde cero




Copyright

Copyright © José Luis Lara Carrascal  2023-2024   http://manualinux.es



Sumario

Introducción
Libdrm (32/64 bits)
Libglvnd (32/64 bits)
Libvdpau
Libva
OpenCL Headers
OpenCL ICD Loader (32/64 bits)
Mesa (32/64 bits)
Xf86-video-amdgpu
GLU
FreeGLUT
Mesa demos
Clinfo (32/64 bits)
Configurar el inicio de AMDGPU
Iniciamos AMDGPU
Aceleración 3D por software con LLVMpipe
Configurar la aceleración 3D con Adriconf
Uso de OpenCL con AMDGPU
Crear un firmware personalizado para tener RGB completo en el puerto HDMI
Aplicaciones auxiliares de AMDGPU
Enlaces




Introducción  

AMDGPU
es un controlador de gráficos de código abierto, alternativo al controlador original de las tarjetas gráficas de AMD. Tiene soporte de modelos de tarjeta gráfica, desde AMD Radeon HD 7750 hasta los últimos modelos lanzados a fecha de publicación de este manual. Las similitudes de este manual con el de Nouveau, son bastante obvias, ya que el mismo se ha creado a partir de este último, adaptándolo a las características propias de utilizar un controlador de gráficos, en lugar de otro.

El cambio de tarjeta gráfica por mi parte, convierte a este manual en el predefinido a la hora de actualizar contenidos, respecto al otro manual. El cansancio de ver el poco o nulo progreso del desarrollo de nouveau, lo que me obliga a tener que utilizar el controlador de gráficos original de NVIDIA (que más tarde o más temprano dejará de dar soporte a mi tarjeta gráfica), me ha llevado a probar el mundo de las Radeon de AMD, el cómo sea dicha experiencia será plasmada como siempre, en este documento.

Toda la configuración del manual se centra en el uso del modelo AMD Radeon RX 580 2048SP, lo que viene a reducir archivos, en lo que respecta al uso del firmware requerido para poder cargar un determinado modelo de tarjeta.



Libdrm (32/64 bits)

Librería encargada de gestionar el acceso de los controladores gráficos en sus diversas variantes (Mesa, DRI, X, etc) al hardware de la tarjeta gráfica a traves del DRM del kernel.

Instalación

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Libdrm para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.0)
* Meson - (1.3.2)
* Ninja - (1.11.1)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Libatomic_ops - (7.8.2)
* Valgrind - (3.22)



Descarga

libdrm-2.4.120.tar.xz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales para la versión de 32 bits

Optimizaciones de CPU para Intel en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=pentium4'

Optimizaciones de CPU para AMD en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=athlon-xp'

Establecer la variable de entorno adecuada para pkg-config en sistemas de 64 bits multiarquitectura
$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=' -L/usr/lib -L/usr/local/lib -L/opt/gcc13/lib'
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador en modo de 32 bits, en sistemas de 64 bits multiarquitectura
GCC
$ export CC="gcc -m32" CXX="g++ -m32"
Clang
$ export CC="clang -m32" CXX="clang++ -m32"

Parámetros adicionales para la versión de 64 bits

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Parámetros adicionales globales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Extracción  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf libdrm-2.4.120.tar.xz
$ cd libdrm-2.4.120

Configuración de la versión de 32 bits

$ meson build32 --prefix=/usr --buildtype=release --strip \
-D{nouveau,intel}=disabled -Dcairo-tests=disabled -Dtests=false \
--libdir=/usr/lib

Explicación de los comandos

--prefix=/usr : Instala la librería en el directorio principal /usr.
--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g
--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

-D{nouveau,intel}=disabled : Desactiva el soporte de otros controladores gráficos. 

-Dcairo-tests=disabled : Desactiva la generación de los tests dependientes de la librería Cairo, innecesarios para la construcción de los binarios del paquete.

-Dtests=false : Lo mismo que arriba, tests innecesarios para la construcción de los binarios del paquete.

--libdir=/usr/lib : Instala las librerías de 32 bits en /usr/lib. La ubicación y el nombre de este directorio, puede variar en función de la distribución que cada usuario use.

Compilación

ninja -C build32

Parámetros de compilación opcionales

-v : Muestra más información en el proceso de compilación.

-j$(nproc) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su
# ninja -C build32 install
# ldconfig -v

Configuración de la versión de 64 bits

$ meson build64 --prefix=/usr --buildtype=release --strip \
-D{nouveau,intel}=disabled -Dcairo-tests=disabled -Dtests=false

Compilación

ninja -C build64

Instalación como root

$ su
# ninja -C build64 install
# ldconfig -v

Estadísticas de Compilación e Instalación de Libdrm

Estadísticas de Compilación e Instalación de Libdrm
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.7.8-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BORE
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.0
Compilador Clang 18.1.0
Parámetros de optimización de la versión de 32 bits -03 -march=i686 -mtune=athlon-xp -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de optimización de la versión de 64 bits -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -v -j12
Tiempo de compilación 2"
Archivos instalados 55
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 12
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 1,1 MB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "ninja -C build{32,64} uninstall"

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

libdrm-2.4.120-scripts.tar.gz

$ su
# tar zxvf libdrm-2.4.120-scripts.tar.gz
# cd libdrm-2.4.120-scripts
# ./Desinstalar_libdrm-2.4.120

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf libdrm-2.4.120-scripts.tar.gz
# cd libdrm-2.4.120-scripts
# ./Respaldar_libdrm-2.4.120

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_libdrm-2.4.120



Libglvnd (32/64 bits)

Librerías OpenGL proporcionadas por NVIDIA, que permiten coexistir, diferentes controladores de gráficos en un mismo sistema y facilita la alternancia de uso entre los controladores de código abierto y el controlador de gráficos original de NVIDIA, sin tener que hacer malabares ni eliminar archivos. 

Instalación

Dependencias


Herramientas de Compilación

Entre paréntesis la versión con la que se ha compilado Libglvnd para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.0)
* Meson - (1.3.2)
* Ninja - (1.11.1)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.11)
   LibX11 - (1.8.7)
   LibXext - (1.3.6)
   Xorgproto - (2023.2)



Descarga

libglvnd-1.7.0.tar.gz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales para la versión de 32 bits

Optimizaciones de CPU para Intel en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=pentium4'

Optimizaciones de CPU para AMD en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=athlon-xp'

Establecer la variable de entorno adecuada para pkg-config en sistemas de 64 bits multiarquitectura
$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=' -L/usr/lib -L/usr/local/lib -L/opt/gcc13/lib'
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador en modo de 32 bits, en sistemas de 64 bits multiarquitectura
GCC
$ export CC="gcc -m32" CXX="g++ -m32"
Clang
$ export CC="clang -m32" CXX="clang++ -m32"

Parámetros adicionales para la versión de 64 bits

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Parámetros adicionales globales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Extracción  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf libglvnd-1.7.0.tar.gz
$ cd libglvnd-1.7.0

Configuración de la versión de 32 bits

$ meson build32 --prefix=/usr --buildtype=release --strip --libdir=/usr/lib

Explicación de los comandos


--prefix=/usr : Instala la librería en el directorio principal /usr.
--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g
--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

--libdir=/usr/lib : Instala las librerías de 32 bits en /usr/lib. La ubicación y el nombre de este directorio, puede variar en función de la distribución que cada usuario use.

Compilación

$ ninja -C build32

Parámetros de compilación opcionales

Instalación como root

$ su
# ninja -C build32 install
# ldconfig -v

Configuración de la versión de 64 bits

$ meson build64 --prefix=/usr --buildtype=release --strip

Compilación

$ ninja -C build64

Instalación como root

$ su
# ninja -C build64 install
# ldconfig -v

Estadísticas de Compilación e Instalación de Libglvnd

Estadísticas de Compilación e Instalación de Libglnvd
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM
32 GB
Sistema de archivos XFS
Versión del Kernel 6.7.8-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BORE
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.0
Compilador Clang 18.1.0
Parámetros de optimización de la versión de 32 bits -03 -march=i686 -mtune=athlon-xp -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de optimización de la versión de 64 bits -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -v -j12
Tiempo de compilación 4"
Archivos instalados 52
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 28
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 5,2 MB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "ninja -C build{32,64} uninstall"

2) MODO MANUALINUX

libglvnd-1.7.0-scripts.tar.gz

$ su
# tar zxvf libglvnd-1.7.0-scripts.tar.gz
# cd libglvnd-1.7.0-scripts
# ./Desinstalar_libglvnd-1.7.0

Copia de Seguridad como root

$ su
# tar zxvf libglvnd-1.7.0-scripts.tar.gz
# cd libglvnd-1.7.0-scripts
# ./Respaldar_libglvnd-1.7.0

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_libglvnd-1.7.0



Libvdpau

Librería utilizada por las aplicaciones para acceder a la interfaz de programación de aplicaciones, VDPAU, y así poder tener aceleración por hardware a través de la GPU en la decodificación de vídeo. En el caso de AMDGPU es necesario compilar el soporte del controlador gallium, radeonsi, en las librerías Mesa, para poder hacer uso de esta característica.

Instalación

Dependencias


Herramientas de Compilación

Entre paréntesis la versión con la que se ha compilado Libvdpau para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.0)
* Meson - (1.3.2)
* Ninja - (1.11.1)
* CMake - (3.28.3)
* Gawk - (5.3.0)
* M4 - (1.4.19)
* Libtool - (2.4.7)
* Make - (4.4.1)
* Automake - (1.16.5)
* Autoconf - (2.72)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.11)
   LibX11 - (1.8.7)
   LibXext - (1.3.6)
   Xorgproto - (2023.2)



Descarga

libvdpau-1.5.tar.bz2  |  vdpauinfo-1.5.tar.bz2

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración de Libvdpau  Bloc de Notas Información general sobre el uso de los comandos

$ tar jxvf libvdpau-1.5.tar.bz2
$ cd libvdpau-1.5
$ meson build --prefix=/usr --buildtype=release --strip -Ddocumentation=false

Explicación de los comandos

--prefix=/usr : Instala la librería en el directorio principal /usr.
--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g
--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

-Ddocumentation=false : No instala la documentación del paquete.

Compilación

$ ninja -C build

Parámetros de compilación opcionales

Instalación como root

$ su
# ninja -C build install
# ldconfig -v

Estadísticas de Compilación e Instalación de Libvdpau

Estadísticas de Compilación e Instalación de Libvdpau
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.7.8-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BORE
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.0
Compilador Clang 18.1.0
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -j12
Tiempo de compilación 1"
Archivos instalados 6
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 4
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 304 KB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "ninja -C build uninstall"

2) MODO MANUALINUX

libvdpau-1.5-scripts.tar.gz

$ su
# tar zxvf libvdpau-1.5-scripts.tar.gz
# cd libvdpau-1.5-scripts
# ./Desinstalar_libvdpau-1.5

Copia de Seguridad como root

$ su
# tar zxvf libvdpau-1.5-scripts.tar.gz
# cd libvdpau-1.5-scripts
# ./Respaldar_libvdpau-1.5

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_libvdpau-1.5

Extracción y Configuración de Vdpauinfo  Bloc de Notas Información general sobre el uso de los comandos

$ tar jxvf vdpauinfo-1.5.tar.bz2
$ cd vdpauinfo-1.5
$ ./autogen.sh --prefix=/usr

Explicación de los comandos

--prefix=/usr : Instala el programa en el directorio principal /usr.

Compilación

$ make

Instalación como root

$ su -c "make install-strip"

Estadísticas de Compilación e Instalación de Vdpauinfo

Estadísticas de Compilación e Instalación de Vdpauinfo
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.7.8-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BORE
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.0
Compilador Clang 18.1.0
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Tiempo de compilación 1"
Archivos instalados 1
/usr/bin/vdpauinfo
Ocupación de espacio en disco 28 KB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "make uninstall"

2) MODO MANUALINUX

vdpauinfo-1.5-scripts.tar.gz

$ su
# tar zxvf vdpauinfo-1.5-scripts.tar.gz
# cd vdpainfo-1.5-scripts
# ./Desinstalar_vdpainfo-1.5

Copia de Seguridad como root

$ su
# tar zxvf vdpauinfo-1.5-scripts.tar.gz
# cd vdpauinfo-1.5-scripts
# ./Respaldar_vdpauinfo-1.5

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_vdpauinfo-1.5



Libva

Librería utilizada por las aplicaciones para acceder a la interfaz de programación de aplicaciones, VA-API, y así poder tener aceleración por hardware a través de la GPU, en la decodificación y codificación de vídeo.

Instalación

Dependencias


Herramientas de Compilación

Entre paréntesis la versión con la que se ha compilado Libva para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.2)
* Meson - (1.3.2)
* Ninja - (1.11.1)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.11)
   LibX11 - (1.8.8)
   LibXext - (1.3.6)
   LibXfixes - (6.0.1)
   Libdrm - (2.4.120)
Libglvnd - (1.7.0)
* Wayland - (1.22.0)



Descarga

libva-2.21.0.tar.gz  |  libva-utils-2.21.0.tar.gz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración de Libva  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf libva-2.21.0.tar.gz
$ cd libva-2.21.0
$ meson build --prefix=/usr --buildtype=release --strip

Explicación de los comandos

--prefix=/usr : Instala la librería en el directorio principal /usr.
--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g

--strip
: Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

Compilación

$ ninja -C build

Parámetros de compilación opcionales

Instalación como root

$ su
# ninja -C build install
# ldconfig -v

Estadísticas de Compilación e Instalación de Libva

Estadísticas de Compilación e Instalación de Libva
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.8.2-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.39
Enlazador dinámico GNU gold (GNU Binutils 2.42) 1.16
Compilador Clang 18.1.2
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin
Parámetros de compilación -v -j12
Tiempo de compilación 3"
Archivos instalados 47
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 10
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 1,2 MB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "ninja -C build uninstall"

2) MODO MANUALINUX

libva-2.21.0-scripts.tar.gz

$ su
# tar zxvf libva-2.21.0-scripts.tar.gz
# cd libva-2.21.0-scripts
# ./Desinstalar_libva-2.21.0

Copia de Seguridad como root

$ su
# tar zxvf libva-2.21.0-scripts.tar.gz
# cd libva-2.21.0-scripts
# ./Respaldar_libva-2.21.0

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_libva-2.21.0

Extracción y Configuración de Libva-utils  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf libva-utils-2.21.0.tar.gz
$ cd libva-utils-2.21.0
$ meson build --prefix=/usr --buildtype=release --strip

Explicación de los comandos

--prefix=/usr
: Instala el programa en el directorio principal /usr.
--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g
--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

Compilación

$ ninja -C build

Parámetros de compilación opcionales

Instalación como root

$ su -c "ninja -C build install"

Estadísticas de Compilación e Instalación de Libva-utils

Estadísticas de Compilación e Instalación de Libva-utils
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.8.2-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.2
Compilador Clang 18.1.2
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -v -j12
Tiempo de compilación 2"
Archivos instalados 25
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 3,1 MB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "ninja -C build uninstall"

2) MODO MANUALINUX

libva-utils-2.21.0-scripts.tar.gz

$ su
# tar zxvf libva-utils-2.21.0-scripts.tar.gz
# cd libva-utils-2.21.0-scripts
# ./Desinstalar_libva-utils-2.21.0

Copia de Seguridad como root

$ su
# tar zxvf libva-utils-2.21.0-scripts.tar.gz
# cd libva-utils-2.21.0-scripts
# ./Respaldar_libva-utils-2.21.0

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_libva-utils-2.21.0



OpenCL Headers

Cabeceras de OpenCL requeridas para la compilación del soporte de OpenCL con Mesa y del cargador OpenCL ICD Loader.

Instalación

Descarga

OpenCL-Headers-2023.12.14.tar.gz

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf OpenCL-Headers-2023.12.14.tar.gz
$ cd OpenCL-Headers-2023.12.14
$ cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTING=OFF -G Ninja

Explicación de los comandos

-S . -B build : Establece el directorio del código fuente y crea de forma automática el directorio de compilación.

-DCMAKE_INSTALL_PREFIX=/usr : Instala la librería en el directorio principal /usr.

-DBUILD_TESTING=OFF : Desactiva la compilación de los tests.

-G Ninja : Utiliza Ninja en lugar de GNU Make para compilar el paquete (opcional).

Instalación como root

$ su -c "ninja -C build install"

Estadísticas de Instalación de OpenCL Headers

Estadísticas de Instalación de OpenCL Headers
Sistema de archivos XFS
Archivos instalados 22
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 412 KB.

Desinstalación como root

1) MODO TRADICIONAL

Este paquete no tiene soporte para desinstalación con el comando 'ninja uninstall'

2) MODO MANUALINUX

OpenCL-Headers-2023.12.14-scripts.tar.gz

$ su
# tar zxvf OpenCL-Headers-2023.12.14-scripts.tar.gz
# cd OpenCL-Headers-2023.12.14-scripts
# ./Desinstalar_OpenCL-Headers-2023.12.14

Copia de Seguridad como root

$ su
# tar zxvf OpenCL-Headers-2023.12.14-scripts.tar.gz
# cd OpenCL-Headers-2023.12.14-scripts
# ./Respaldar_OpenCL-Headers-2023.12.14

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_OpenCL-Headers-2023.12.14



OpenCL ICD Loader (32/64 bits)

Cargador OpenCL independiente de la librería utilizada por cada proveedor de librerías OpenCL. Lo mismo que Libglvnd para OpenGL.

Instalación

Dependencias


Herramientas de Compilación

Entre paréntesis la versión con la que se ha compilado OpenCL ICD Loader para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.0)
* CMake - (3.28.1)
* Ninja - (1.11.1)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* OpenCL-Headers - (2023.12.14)



Descarga

OpenCL-ICD-Loader-2023.12.14.tar.gz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.
Unified LTO
LTO >> ThinLTO
$ export {C,CXX}FLAGS+=' -flto -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=thin'
ThinLTO >> LTO
$ export {C,CXX}FLAGS+=' -flto=thin -funified-lto'
$ export LDFLAGS+=' -Wl,--lto=full'
La aplicación de esta optimización es aplicable, a partir de Clang 17, y sólo es combinable con LLD.

Parámetros adicionales para la versión de 32 bits

Optimizaciones de CPU para Intel en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=pentium4'

Optimizaciones de CPU para AMD en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=athlon-xp'

Establecer la variable de entorno adecuada para pkg-config en sistemas de 64 bits multiarquitectura
$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=' -L/usr/lib -L/usr/local/lib -L/opt/gcc13/lib'
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador en modo de 32 bits, en sistemas de 64 bits multiarquitectura
GCC
$ export CC="gcc -m32" CXX="g++ -m32"
Clang
$ export CC="clang -m32" CXX="clang++ -m32"

Parámetros adicionales para la versión de 64 bits

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Parámetros adicionales globales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(expr $(nproc) / 2)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(expr $(nproc) / 2)"

Extracción Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf OpenCL-ICD-Loader-2023.12.14.tar.gz
$ cd OpenCL-ICD-Loader-2023.12.14

Configuración de la versión de 32 bits

$ cmake -S . -B build32 -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF -DCMAKE_INSTALL_DATAROOTDIR=lib -G Ninja

Explicación de los comandos

-S . -B build32 : Establece el directorio del código fuente y crea de forma automática el directorio de compilación.

-DCMAKE_INSTALL_PREFIX=/usr : Instala la librería en el directorio principal /usr.

-DCMAKE_BUILD_TYPE=Release : Compila la versión optimizada de OpenCL ICD Loader.

-DBUILD_TESTING=OFF : Desactiva la compilación de los tests.

-DCMAKE_INSTALL_DATAROOTDIR=lib : Evita que los archivos de configuración de CMake se instalen en /usr/share/cmake, siendo el lugar correcto, /usr/lib/cmake, ya que esto sí es una librería. La ubicación y el nombre de este directorio, puede variar en función de la distribución que cada usuario use.

-G Ninja : Utiliza Ninja en lugar de GNU Make para compilar el paquete (opcional).

Compilación

$ ninja -C build32

Parámetros de compilación opcionales

Instalación como root

$ su
# ninja -C build32 install/strip
# ldconfig -v

Configuración de la versión de 64 bits

$ cmake -S . -B build64 -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF -DCMAKE_INSTALL_DATAROOTDIR=lib64 -G Ninja ..

Explicación de los comandos

-S . -B build64 : Establece el directorio del código fuente y crea de forma automática el directorio de compilación.

-DCMAKE_INSTALL_DATAROOTDIR=lib64 : Evita que los archivos de configuración de CMake se instalen en /usr/share/cmake, siendo el lugar correcto, /usr/lib64/cmake, ya que esto sí es una librería. La ubicación y el nombre de este directorio, puede variar en función de la distribución que cada usuario use.

Compilación

$ ninja -C build64

Instalación como root

$ su
# ninja -C build64 install/strip
# ldconfig -v

Estadísticas de Compilación e Instalación de OpenCL ICD Loader

Estadísticas de Compilación e Instalación de OpenCL ICD Loader
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.7.8-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BORE
Versión de Glibc 2.39
Enlazador dinámico LLD 18.1.0
Compilador Clang 18.1.0
Parámetros de optimización de la versión de 32 bits -03 -march=i686 -mtune=athlon-xp -fexperimental-new-pass-manager -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de optimización de la versión de 64 bits -03 -march=znver3 -mtune=znver3 -fexperimental-new-pass-manager -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto -funified-lto -Wl,--lto=thin -Wl,--thinlto-jobs=6 -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -v -j12
Tiempo de compilación 2"
Archivos instalados 13
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 4
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 228 KB

Desinstalación como root

1) MODO TRADICIONAL

Este paquete no tiene soporte para desinstalación con el comando 'ninja uninstall'

2) MODO MANUALINUX

OpenCL-ICD-Loader-2023.12.14-scripts.tar.gz

$ su
# tar zxvf OpenCL-ICD-Loader-2023.12.14-scripts.tar.gz
# cd OpenCL-ICD-Loader-2023.12.14-scripts
# ./Desinstalar_OpenCL-ICD-Loader-2023.12.14

Copia de Seguridad como root

$ su
# tar zxvf OpenCL-ICD-Loader-2023.12.14-scripts.tar.gz
# cd OpenCL-ICD-Loader-2023.12.14-scripts
# ./Respaldar_OpenCL-ICD-Loader-2023.12.14

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_OpenCL-ICD-Loader-2023.12.14



Mesa (32/64 bits)

Conjunto de librerías encargadas de proporcionar un sistema basado en OpenGL para representar gráficos en 3D de forma interactiva en sistemas operativos derivados de UNIX. Proporcionan el controlador de gráficos en 3D para AMDGPU.

Instalación

Dependencias


Herramientas de Compilación

Entre paréntesis la versión con la que se ha compilado Mesa para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (18.1.4)
* Rust - (1.77.2)
   Rust-bindgen - (0.69.4)
   Rustfmt - (1.7.0)
* Meson - (1.3.2) [1]
* Ninja - (1.12.0)
* Pkg-config - (0.29.2)
* Bison - (3.8.2)
* Flex - (2.6.4)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.13)
   LibX11 - (1.8.9)
   LibXdamage - (1.1.6)
   LibXext - (1.3.6)
   LibXfixes - (6.0.1)
   LibXrandr - (1.5.4)
   LibXxf86vm - (1.1.5)
   Libdrm - (2.4.120)
   Libxcb - (1.17)
   Xorgproto - (2024.1)
* Elfutils - (0.191)
* Expat - (2.6.2)
* Glslang - (13.1.1)
* LibPolly - (18.1.4)
* LibPollyISL - (18.1.4)
* Libclang-cpp - (18.1.4)
* Libclc - (18.1.4)
* Libglvnd - (1.7.0)
* Libunwind - (1.8.1)
* Libva - (2.21.0)
* Libvdpau - (1.5)
* Libzstd - (1.5.6)
* LLVM - (18.1.4)
* Lm_sensors - (3.6.0)
* SPIRV-LLVM-Translator - (18.1.0)
* SPIRV-Tools - (2024.1)
* Valgrind - (3.22.0)

Intérpretes de Lenguaje de Programación

* Python - (3.12.3)

[1] No es compatible con la versión 1.4.0, en la compilación de la versión de 32 bits. Más información en este enlace.



Descarga

mesa-24.0.6.tar.xz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'

Parámetros adicionales para la versión de 32 bits

Optimizaciones de CPU para Intel en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=pentium4'

Optimizaciones de CPU para AMD en sistemas de 64 bits multiarquitectura
$ export {C,CXX}FLAGS='-O3 -march=i686 -mtune=athlon-xp'

Establecer la variable de entorno adecuada para pkg-config en sistemas de 64 bits multiarquitectura
$ export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:\
/opt/llvm18/lib:pkgconfig/:/opt/llvm18/share/pkgconfig/:usr/share/pkgconfig:$PKG_CONFIG_PATH

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=' -L/usr/lib -L/usr/local/lib -L/opt/gcc13/lib'
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador en modo de 32 bits, en sistemas de 64 bits multiarquitectura
GCC
$ export CC="gcc -m32" CXX="g++ -m32"
Clang
$ export CC="clang -m32" CXX="clang++ -m32"

Parámetros adicionales para la versión de 64 bits

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Parámetros adicionales globales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'

Extracción  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf mesa-24.0.6.tar.xz
$ cd mesa-24.0.6

Configuración de la versión de 32 bits

$ meson build32 --prefix=/usr -Dplatforms=x11 -Dgallium-drivers=radeonsi,swrast \
-Dosmesa=true -Dvulkan-drivers=amd --buildtype=release --cross-file x86-linux \
-Dglvnd=true -Dgallium-opencl=icd -Dopencl-spirv=true -Dgallium-rusticl=true \
-Dgallium-vdpau=disabled --strip
$ sed -i '/main_format_utils.c.o.d$/{n;n;s/-mllvm -polly -mllvm -polly-vectorizer=stripmine//;}' build32/build.ninja
 
Explicación de los comandos

--prefix=/usr : Instala las librerías en el directorio principal /usr.
-Dplatforms=x11 : Activa la compilación del soporte de EGL para el servidor gráfico X.

-Dgallium-drivers=radeonsi,swrast : Activa la compilación de los controladores gallium de gráficos en 3D, radeonsi (requerido para el uso de OpenCL a través de Rusticl) y swrast, este último utilizado en la renderización por software.

-Dosmesa=true : Activa la compilación de la librería de renderizado por software, libOSMesa.
-Dvulkan-drivers=amd : Compila el controlador Vulkan por hardware para AMD.

--buildtype=release : Compila la versión optimizada del paquete, ya que Meson compila por defecto los paquetes con los parámetros -O2 -g.

--cross-file x86-linux : Establece el archivo de configuración de Meson, requerido para la compilación cruzada, ubicado en ~/.local/share/meson/cross. Un ejemplo con Clang y otro ejemplo con GCC.

-Dglvnd=true : Activa el soporte de Libglvnd, lo que evita que se sobrescriban las librerías proporcionadas por este último, y facilita la coexistencia de los controladores de código abierto con el controlador de gráficos original de NVIDIA, como controlador de OpenGL, sin necesidad de sobrescribir archivos de instalación.

-Dgallium-opencl=icd : Activa el soporte de OpenCL con la interfaz Clover de Gallium, haciéndolo compatible con OpenCL-ICD-Loader. La versión máxima de OpenCL, soportada por esta interfaz es la 1.2.

-Dopencl-spirv=true : Activa el soporte del uso de SPIR-V en la interfaz Clover de Gallium.

-Dgallium-rusticl=true: Activa el soporte experimental de la interfaz para OpenCL, gallium-rusticl, compatible con OpenCL 3.0 y reemplazo futuro del abandonado y vetusto Clover. 

-Dgallium-vdpau=disabled : Desactiva el soporte de VDPAU a través del controlador radeonsi de Gallium, innecesario si no tenemos instaladas las librerías de libvdpau de 32 bits.

--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

sed -i '/main_format_utils.c.o.d$/{n;n;s/-mllvm -polly -mllvm -polly-vectorizer=stripmine//;}' build32/build.ninja : Anula la optimación Polly en la compilación de un archivo de código de Mesa, para que el proceso de compilación no se alargue de forma infinita.

Compilación

$ ninja -C build32

Parámetros de compilación opcionales

Instalación como root

$ su
# ninja -C build32 install
# ldconfig -v

Configuración de la versión de 64 bits

$ meson build64 --prefix=/usr -Dplatforms=x11 -Dgallium-drivers=radeonsi,swrast \
-Dosmesa=true -Dvulkan-drivers=amd --buildtype=release -Dglvnd=true \
-Dgallium-opencl=icd -Dopencl-spirv=true -Dgallium-rusticl=true \
-Dvideo-codecs=h264dec,h264enc,h265dec,h265enc,vc1dec --strip
$ sed -i '/main_format_utils.c.o.d$/{n;n;s/-mllvm -polly -mllvm -polly-vectorizer=stripmine//;}' build64/build.ninja

Explicación de los comandos

--prefix=/usr : Instala las librerías en el directorio principal /usr.
-Dplatforms=x11 : Activa la compilación del soporte de EGL para el servidor gráfico X.

-Dgallium-drivers=radeonsi,swrast : Activa la compilación de los controladores gallium de gráficos en 3D, radeonsi (requerido para el uso de VDPAU y VA-API) y swrast, este último utilizado en la renderización por software.

-Dosmesa=true : Activa la compilación de la librería de renderizado por software, libOSMesa.
-Dvulkan-drivers=amd : Compila el controladores Vulkan por hardware para AMD.

-Dglvnd=true : Activa el soporte de Libglvnd, lo que evita que se sobrescriban las librerías proporcionadas por este último, y facilita la coexistencia de los controladores de código abierto con el controlador de gráficos original de NVIDIA, como controlador de OpenGL, sin necesidad de sobrescribir archivos de instalación.

-Dopencl-spirv=true : Activa el soporte del uso de SPIR-V en la interfaz Clover de Gallium.

-Dgallium-rusticl=true : Activa el soporte experimental de la interfaz para OpenCL, gallium-rusticl, compatible con OpenCL 3.0 y reemplazo futuro del abandonado y vetusto Clover.

-Dvideo-codecs=h264dec,h264enc,h265dec,h265enc,vc1dec : Activa el soporte de codificadores y decodificadores de vídeo en el controlador radeonsi, que vienen desactivados por defecto, por problemas de patentes en Estados Unidos.

--strip : Elimina los símbolos no necesarios para su ejecución de los binarios ejecutables correspondientes.

sed -i '/main_format_utils.c.o.d$/{n;n;s/-mllvm -polly -mllvm -polly-vectorizer=stripmine//;}' build64/build.ninja : Anula la optimación Polly en la compilación de un archivo de código de Mesa, para que el proceso de compilación no se alargue de forma infinita.

Compilación

$ ninja -C build64

Instalación como root

$ su
# ninja -C build64 install
# ldconfig -v

Estadísticas de Compilación e Instalación de Mesa

Estadísticas de Compilación e Instalación de Mesa
CPU AMD Ryzen 5 5500
MHz 3600 (BoostMax=4457)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.8.7-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Planificador de CPU BMQ
Versión de Glibc 2.39
Enlazador dinámico Mold 2.30.0
Compilador Clang 18.1.3 + Ccache 4.9.1
Parámetros de optimización de la versión de 32 bits -03 -march=i686 -mtune=athlon-xp -mllvm -polly -mllvm -polly-vectorizer=stripmine
Parámetros de optimización de la versión de 64 bits -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine
Parámetros de compilación -v -j12
Tiempo de compilación 3' 43"
Archivos instalados 47
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 30
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 312,1 MB

Desinstalación como root

1) MODO TRADICIONAL

$ su -c "ninja -C build{32,64} uninstall"

2) MODO MANUALINUX

mesa-24.0.6-scripts.tar.gz

$ su
# tar zxvf mesa-24.0.6-scripts.tar.gz
# cd mesa-24.0.6-scripts
# ./Desinstalar_mesa-24.0.6

Copia de Seguridad como root

$ su
# tar zxvf mesa-24.0.6-scripts.tar.gz
# cd mesa-24.0.6-scripts
# ./Respaldar_mesa-24.0.6

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_mesa-24.0.6




Foro Galería Blog


Página - 1Página - 2

Actualizado el 25-04-2024

Instalar AMDGPU desde cero

Grabación CD/DVD - X-CD-RoastInstalar Ant Commander en GNU/Linux