martes, 24 de octubre de 2017

Limitaciones de AMD Enduro

La tecnología AMD Enduro para Notebooks, algunas características.
Una característica principal de AMD Enduro es su facil uso por parte del usuario, este último simplemente debe ejecutar alguna aplicación exigente y si existe algún perfil de aplicación se utilizará el dGPU, caso contrario, se debe crear un perfil para la aplicación en "Alto rendimiento" y entonces todo marchará bien, sencillo ¿no?

Pero existen inconvenientes al utilizar dicha tecnología que confunde al usuario final.
En esta entrada explicaré las principales limitaciones del también llamado Modo dinámico.

I. Representación en la pantalla exclusiva del iGPU
En la entrada "Notebooks con Modo Fijo y Dinámico AMD", les comenté sobre algunas características de AMD Enduro, la principal es:
El iGPU o APU es el GPU principal, todas las salidas de pantalla son conducidas por gráficos integrados (el dGPU complementa al iGPU).
Y como pueden observar de la imagen siguiente: En AMD Enduro, el dGPU se comunica no con la pantalla, si no con el iGPU a través del PCI-Express.
En AMD Enduro, el dGPU se comunica no con la pantalla, si no con el iGPU a través del PCI-Express.
Incluso con Nvidia Optimus, el dGPU es solo un complemento del iGPU.
Además, en la entrada "BIOS en gráficos híbridos y OpenGL", hablamos sobre la implementación de Hardware para el Modo Dinámico y Modo Fijo, si no lo recuerdan, realizaré un pequeño resumen:

Existen equipos que incluyen conexiones físicas del iGPU y dGPU a la pantalla principal, pero otros no, tal como en la siguiente captura:
Ambos GPUs conectados a la pantalla. Esta implementación nos permite controlar qué GPU sería el principal.
En cambio, en la actualidad la mayoría de equipos se fabrican sin conexiones físicas del dGPU a la pantalla, como en la siguiente captura:
Modo Dinámico (en este caso Nvidia Optimus), No existen conexiones físicas del dGPU con la pantalla, es imposible utilizar el dGPU como principal.
Como pueden comprender, en la actualidad, los fabricantes nos están quitando el control de los GPUs.
Además, el usuario debe ser consciente de la siguiente consecuencia de esta implementación:
El rendimiento del Modo Fijo es superior comparado con el Dinámico; esto se debe a que en el segundo el iGPU es el que controla la pantalla quedando de complemento el dGPU y la representación final se ve disminuida en rendimiento porque el dGPU debe copiar todo el contenido renderizado al iGPU a través del PCI-Express (eso es lo que se ve en la pantalla, una copia de lo que renderiza el dGPU); en cambio en el Modo Fijo se puede elegir que GPU es el que controla la pantalla y como no hay necesidad de copiar contenido renderizado no existirá pérdida de rendimiento [También aplicable a Nvidia Optimus].
Ahora, el objetivo de este resumen es mostrar que la representación de la pantalla por parte del dGPU es físicamente imposible al no existir conexión alguna. Pero tengan en cuenta que si existiesen dichas conexiones en el notebook, y si el BIOS está configurado con el Modo Dinámico, entonces si o si la pantalla será controlado por el iGPU.
Así que en AMD Enduro, el usuario debe conformarse con que la pantalla sea controlada exlusivamente por el iGPU para ahorrar energía.
NOTA: Es cierto que la pantalla es controlada por el iGPU, esto se aplica al 100% con la pantalla del portatil, pero no necesariamente con una pantalla conectada por HDMI. La gran mayoría de laptops no soportan esta característica, pero en las que sí, el dGPU controla la Pantalla-HDMI no solo en AMD Enduro, si no en Nvidia Optimus a través de conexiones físicas.

II. Desactivación del iGPU en el Administrador de dispositivos
Existe la creencia popular que mediante la desactivación del iGPU a través del administrador de dispositivos (en el Modo Dinámico, tanto para AMD Enduro como Nvidia Optimus), Windows se verá obligado a utilizar el único GPU disponible, es decir, el dGPU.
Con la explicación anterior comprendida, obviamente este argumento es erróneo; para que quede claro, explicaré el actuar de Windows si se realiza dicha desactivación:
  1. Como estamos en Modo Dinámico (por BIOS), por más que existan las conexiones físicas del dGPU a la pantalla, el iGPU siempre debe ser el principal, entonces al estar desactivado, Windows utilizará el Controlador Genérico VGA en el iGPU y dicho controlador inhabilita la aceleración 3D.
  2. Al entrar al software de gestión gráfica ("Catalyst Control Center" o "Radeon Settings") se mostrará el mensaje: "No hay ningún controlador de gráficos AMD instalado...", por más que se tengan los drivers AMD instalados, el echo de desactivar el iGPU trae la consecuencia que el dGPU no tenga a quién transmitir la información, por tal motivo no se acopla al iGPU y trae ocasiona su propia desactivación por seguridad, y al estar desactivado sus drivers no funcionan, por tal motivo en el software de gestión gráfica, muchas opciones habrán desaparecido.
¿Cuantas veces vi este mensaje? ya perdí la cuenta.
Esto ocurrirá con el Catalyst Control Center si se desactiva el iGPU.
En conclusión:
En el modo dinámico NO es correcto desactivar el iGPU ya que el dGPU depende del primero para copiar todo el contenido renderizado a la pantalla, si se realiza, no será posible renderizar contenido por hardware.

III. iGPU Intel o APU en las opciones de aplicaciones
Ciertas aplicaciones cuentan con un sistema de detección del GPU utilizado, la mayoría detectarán al iGPU o APU por más que posean un perfil de "Alto Rendimiento" en el software de gestión gráfica. Este es un defecto del Modo Dinámico y de la programación de la aplicación, debido a que el GPU principal es el iGPU o APU y es ese el que es detectado primero por la aplicación, pero en realidad SI se usa el dGPU (pueden verificarlo usando GPU-Z o MSI Afterburner).
Pero algunas aplicaciones si muestran el GPU que renderiza el contenido, como es el caso de Adobe Photoshop, DirectX , incluso Minecraft. El por qué estas si muestran en GPU "correcto", es porque están programadas teniendo en cuenta el algoritmo de AMD Enduro; pero las que no tiene este tipo de programación, sólo mostrarán el iGPU.
Minecraft ejecutándose en Java x64, se utiliza claramente mi AMD 7670M  en el cuadro inferior derecho, "javaw.exe" debe estar en "Alto rendimiento".
DirectX también posee un sistema de detección, sólo reconocerá el iGPU o APU como principal, pero en Windows 8.x/10 (con ciertos dGPU AMD GCN y Nvidia) aparecerá una nueva pestaña llamada "Representar" ("Render" en inglés) donde el dGPU ocupará su lugar. Este último detalle ayuda a entender mucho mejor el verdadero funcionamiento de AMD Enduro y Nvidia Optimus, porque explícitamente DirectX le dice la usuario que la "Pantalla" es controlada por el iGPU y "Representar" es controlado por el dGPU, en otras palabras, el dGPU es solo un complemento.
Según DirectX la "Pantalla" es controlada por el iGPU. Este es el verdadero funcionamiento del Modo Dinámico.
El dGPU solo es un complemento que "Renderiza" el contenido y lo copia al iGPU. Como aclaración, el nombre "Representar" está mal  traducido en mi opinión, en la versión inglesa de Windows, dicha pestaña se llama "Render".
A continuación mostraré capturas de esta limitación con algunos juegos, pero les aseguro que el dGPU funciona sin problemas:
Need For Speed Hot Pursuit, en "Adaptador gráfico" muestra iGPU Intel, pero se utiliza mi iGPU 7600M.
Skyrim, "Adaptador gráfico" iGPU Intel, pero esta notebook lo ejecuta sin lag.
PES 2016, GPU Intel, pero ¿es posible que posea 2.0 GB de VRAM?, algo me dice que se ejecuta con mi Radeon 7600M. Esta es una de las grandes pruebas, ya que un iGPU Intel HD 3000 no puede poseer 2.0 GB de VRAM.
Tomb Raider 2013, "Visualización": iGPU Intel, pero verán que sí se ejecuta con mi dGPU 7600M.
Tomb Raider 2013, prueba definitiva: 59-60 fps, GPU1 = Radeon 7600M, no creo que un iGPU Intel HD 3000 sea capaz de ejecutarlo.
Menú contextual de "Catalyst Control Center", solo se ve el iGPU R5, ¿dónde está el R7?. esto es normal ya que el iGPU controla la pantalla.
IV. La programación de las aplicaciones para AMD Enduro
Existen muchas aplicaciones y juegos en el mercado, pero generalmente una aplicación mal programada para Enduro, sólo mostrará el iGPU en sus opciones, sin embargo utilizará el dGPU tal como en los ejemplos anteriores.
En el peor de los casos, determinadas aplicaciones no funcionarán en el dGPU por más que configure en el software de gestión gráfica un perfil de "Alto rendimiento", esto es debido a que el programador de dicha aplicación no tomó en cuenta las notebooks con gráficos híbridos que ejecutan AMD Enduro o Nvidia Optimus. Tal fue el problema de un juego muy famoso, hablo de "Grand Theft Auto V", pero en posteriores actualizaciones se incluyó soporte para Enduro y Optimus.
El problema de estas aplicaciones es la deficiencia en su programación para reconocer más de 01 GPU, y un dato a tener en cuenta es que el 1er GPU siempre será el iGPU, por tal motivo, el software reconocerá únicamente lo primero que encuentre y trabajará con ello, en otras palabras, para la aplicación no existe el 2do GPU que viene a ser el dGPU.
Un dato a tener en cuenta es la existencia aplicaciones mucho más antiguas que AMD Enduro, por lo tanto, estas son las más propensas a no funcionar correctamente en este tipo de sistema gráfico.
No obstante, no todo es culpa del programador, también AMD tiene parte de la culpa, siempre se publican drivers actualizados que pueden corregir el problema, así que primero debemos informarnos si es problema de AMD o del programador para así esperar una solución por parte de alguno.

Palabras finales
Hola a todos, aquí quantum-phy en otra publicación, hasta que por fin se terminaron las publicaciones más informativas que están en el "borrador", aunque aún hay más xD.
Espero que la primera parte de la publicación quede clara, recuerden que "por más que tengan las conexiones físicas del dGPU a la pantalla, no sirve de nada si están en el Modo Dinámico".
Previamente tuve la intención de unificar estos temas del "borrador" en una sola publicación, así que puedo decir "Objetivo completado", ya que uno de los objetivos era que el tema "Desactivación del iGPU en el Administrador de dispositivos" esté junto con una mejor explicación de las limitaciones del Modo Dinámico, por tal motivo se debe entender mejor.
Hablemos de la actualización realizada por Microsoft al sistema de detección de DirectX: está muy bien la pestaña implementada "Representar", dejando de lado su mala traducción del inglés, porque permite que el usuario visualice su dGPU como un complemento del iGPU. Seamos realistas, los usuarios anteriormente se confundían (lo digo por experiencia) porque antes sólo aparecía la pestaña "Pantalla" y por ningún lado se deba razón al dGPU. Microsoft realizó un gran trabajo en ello, pero un punto negativo es su demora en programarlo y además sólo lo hizo para GPUs actuales, dejando de lado equipos como el mío.
Finalmente, no culpen a los fabricantes de su notebook si sólo una aplicación no se ejecuta en el dGPU, culpen a AMD o al programador de la aplicación, ya que son ellos los que deben asegurar si el software funcionará.

Y es todo por hoy, espero que esta información sea de ayuda.
Un saludo.

Estado

=======================================
Recomiendo este post donde se recopila mucho contenido útil y en español para jugar en Linux.
-¿Jugar en Linux?, están locos estos pingüinos

[Linux] ¿Fidelity FX Super Resolution (FSR) en cualquier juego?
- Pruebas en el canal de YouTube

[Linux] GalliumToggle publicado en GitHub.
=======================================

quantum-phy (NestorBase11)

Videos Destacados

Entradas recientes