Distribución:Sistema operativo pop 19.10
Computadora portátil:Portátil HP 15-bs185tx
Tarjeta grafica:
- Gráficos AMD Radeon™ 520 (2 GB DDR3 dedicados)
- Gráficos UHD 620 de Intel Corporation
Probé casi todas las soluciones disponibles en línea pero nada funciona. Tanto VGA como el controlador de pantalla se ejecutan en mis gráficos Intel integrados. He usado varios comandos, incluido este, lspci -k | grep -EA3 'VGA|3D|Display'
para ver mis adaptadores de gráficos activos. Por favor, avíseme si tiene alguna pregunta sobre el problema.
¡Gracias!
Respuesta1
TL;DR (pero 1 0
es posible que los valores no sean correctos en su sistema):
$ xrandr --setprovideroffloadsink 1 0
$ export DRI_PRIME=1
$ glxinfo | grep "OpenGL renderer string"
Si esta característica no existe a nivel de hardware, entonces no es posible, pero existe una alternativa.
Esto se muestra en elDocumentación de cambio de VGA:
vga_switcheroo es el subsistema de Linux para gráficos híbridos de portátiles. Estos vienen en dos sabores:
- muxed: GPU duales con un chip multiplexor para cambiar salidas entre GPU.
- muxless: GPU duales pero solo una de ellas está conectada a las salidas. El otro se usa simplemente para descargar el renderizado., sus resultados se copian a través de PCIe en el framebuffer. En Linux esto es compatible con PRIMAVERA DRI.
Los gráficos híbridos comenzaron a aparecer a finales de la década de 1990 y al principio estaban todos mezclados.Las computadoras portátiles más nuevas pasaron a una arquitectura sin mux por razones de costo. Una excepción notable es la MacBook Pro, que sigue utilizando un mux.
Entonces supongo que su hardware essin mux, como esto:
╔═══════════════╗
║ ║
║ display ║
║ ║
╚═══════════════╝
│
╭───╯ X
│ ┊
┌────────┐ ┌────────┐
│ │ │ │
│ iGPU │───────│ dGPU │
│ │ │ │
└────────┘ └────────┘
Si bien se puede encontrar buena documentación (por ejemplo: enarchlinux), no pude encontrar algunosoficialdocumentación definitiva que autorice el uso deDRI_PRIME
. La única documentación quizás semioficial que encontré fue para... el nuevo controlador de Nvidia y el juego de palabras.Optimus/PRIME:
Usando Optimus/Prime
La 'descarga de GPU PRIME' y 'PRIME inverso' son un intento de admitir gráficos híbridos sin mux en el kernel de Linux.
Si bien el nombre probablemente se originó a partir del soporte inicial de Nvidia, por supuesto es genérico y funciona con AMD.
Puede consultar y cambiar la configuración utilizando elxrandr
dominio:
--listproviders
Reportar información sobre los proveedores disponibles.
--setprovideroutputsource provider source
Establezca la fuente como fuente de imágenes de salida de visualización para el proveedor. Esto solo es posible si el origen y el proveedor tienen las capacidades de salida de origen y salida de receptor, respectivamente. Si la fuente es 0x0, entonces el proveedor se desconecta de su fuente de salida actual.
--setprovideroffloadsink provider sink
Configure el proveedor como dispositivo de descarga de renderizado para el receptor.Esto solo es posible si el proveedor y el receptor tienen las capacidades de descarga de origen y descarga de receptor, respectivamente.. Si el receptor es 0x0, entonces el proveedor se desconecta de su receptor de descarga de procesamiento actual.
Por ejemplo, también con un portátil que utilice una iGPU Intel y alguna dGPU AMD:
$ xrandr --listproviders
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 0 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 0 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0
Tenga en cuenta que el Proveedor 1 tiene outputs: 0
: no puede generar salida, cualesquiera que sean las otras propiedadesSalida de fuenteySalida del fregaderopodría decir. Si su sistemahacemuestre un valor diferente a 0 para la propiedad de la dGPU outputs:
, entonces es posible que tenga otras opciones disponibles (visualización directa, posiblemente también junto con Reverse PRIME usando --setprovideroutputsource
) que no estarán cubiertas por esta respuesta.
Para preparar el uso de tareas de GPU (3D) descargadas a la dGPU, con el ejemplo anterior se puede hacer lo siguiente:
$ xrandr --setprovideroffloadsink 'AMD Radeon (TM) HD8530M @ pci:0000:04:00.0' Intel
En lugar de nombres, se pueden utilizar identificadores o, más simplemente, índice. Los dos comandos siguientes harían lo mismo. Hay que tener cuidado de no invertir direcciones o pueden pasar cosas malas.
$ xrandr --setprovideroffloadsink 0x41 0x68
$ xrandr --setprovideroffloadsink 1 0
Y ahora:
$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x68 cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 4 outputs: 3 associated providers: 1 name:Intel
Provider 1: id: 0x41 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 2 outputs: 0 associated providers: 1 name:AMD Radeon (TM) HD8530M @ pci:0000:04:00.0
los dos proveedores ahora están asociados y al exportar la variable especial (a mesa) DRI_PRIME=1
se selecciona la dGPU para renderizar:
$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer string"
OpenGL renderer string: AMD Radeon (TM) HD8530M (OLAND, DRM 3.36.0, 5.6.3-amd64, LLVM 6.0.0)
Entonces, para ejecutar un programa 3D con uso intensivo de GPU llamado myhungrygame
, probablemente harías (si dGPU viene después de iGPU):
$ xrandr --setprovideroffloadsink 1 0 # X11-wide setting
$ export DRI_PRIME=1
$ ./myhungrygame
Si logra hacer las dos primeras cosas antes de que se cargue el entorno de escritorio, todos usarán la dGPU para la descarga 3D de forma predeterminada, lo que probablemente no sea una buena idea para una computadora portátil.