miércoles, 1 de noviembre de 2017

Perfiles AMD Enduro y desbloqueo de aplicaciones

Uso y explicación de perfiles AMD Enduro.
Es muy común buscar por internet la forma de forzar las aplicaciones de nuestro interés en el dGPU, es más, esto lo expliqué en la entrada "Configurar Aplicaciones en AMD Enduro". Pero, se preguntaron: ¿qué hay detrás de todo esto? ¿cómo funciona este proceso realmente?

Si tiene curiosidad, en esta publicación mencionaré qué son exactamente dichos perfiles, dónde se encuentran, cómo actualizarlos y cómo desbloquear las aplicaciones. Empecemos.

I. ¿Qué son los perfiles AMD Enduro?
Como mencioné anteriormente, no son mas que una base de datos  en formato binario la cual registra las diversas aplicaciones a ejecutarse como "Alto rendimiento", "Ahorro de energía" o "Según fuente de alimentación".
Además en la primera entrada del blog "Notebooks con Modo Fijo y Dinámico AMD" se mencionó:
-El escritorio Aero siempre funciona en gráficos integrados.
-D3D, OpenGL y las aplicaciones de reproducción de video se ejecutan en iGPU, APU o dGPU dependiendo del perfil de aplicación.
-Si no existe perfil asociado con alguna aplicación D3D u OpenGL, esta se ejecutará en el GPU por defecto: iGPU o APU.
-El usuario final puede modificar los perfiles de aplicación.
-Cuando se finaliza el renderizado de una aplicación en el dGPU, este mismo se apagará.
Es decir, al igual que su contraparte Optimus, AMD Enduro necesita de dicha base de datos para funcionar. Y según lo anterior, si la aplicación no posee perfil, esta usará el iGPU porque es el principal.

Con lo anterior se desmiente una frase típica que siempre circula por la red:
-En equipos con gráficos intercambiables se usa el iGPU para aplicaciones sencillas y el dGPU se usa cuando se necesita.
Por obvias razones, la parte en negrita es falsa.

II. ¿Cuál es la necesidad de crear esta base de datos?
Desde su inicio, Enduro contaba con estos perfiles por defecto, es una forma antigua de utilizar el dGPU. Pero este sistema de perfiles tiene un defecto y es que no todas las aplicaciones existentes se encuentran en la base de datos, como es el caso de Resident Evil 4 HD (Desde el 2014 sin Perfil Enduro).
Además, en años recientes, tanto AMD como Nvidia están distribuyendo a los desarrolladores de juegos/aplicaciones unos códigos (utilizando programación en C/C++) para que sean implementados a las aplicaciones creadas y de esta forma utilicen el iGPU o dGPU sin la necesidad de depender de los perfiles AMD Enduro o Nvidia Optimus.
Así que en resumen, actualmente no hay necesidad para AMD de seguir utilizando un sistema de Perfiles Enduro; tal vez en un futuro se deje de lado.
Como aclaración esto es únicamente aplicable para AMD Enduro; en Crossfire es un asunto totalmente distinto.

III. ¿Cuál es la ubicación de los Perfiles AMD Enduro?
Para responder esta pregunta debemos hacer dos clasificaciones:
  • Perfiles Globales -> Son todos los perfiles proporcionados por AMD.
  • Perfiles de usuario -> Son los perfiles que el usuario crea o modifica. Pueden ser modificados tanto por el "Software de gestión gráfica" como manualmente.
Ubicación:
Perfiles Globales: "atiapfxx.blb"
"C:\Windows\System32"
"C:\Windows\SysWOW64"
Perfiles del usuario: "User.blb"
"C:\Users\xxxxx\AppData\Local\ATI\ACE\APL"
Donde:
           xxxxx es el nombre de usuario del equipo.

Con esta información, surge la siguiente interrogante:

IV. ¿Existe alguna prioridad o jerarquía en estos tipos de perfiles?
Claro. Ya que el usuario final debe ser libre de modificar los perfiles, entonces los "Perfiles de usuario" son los prioritarios.

V. ¿Los Perfiles AMD Enduro se actualizan cada cierto tiempo?
Si. La frecuencia con que se actualizan depende de la frecuencia de lanzamiento de drivers porque con cada versión nueva más y más aplicaciones son añadidas.
Si los drivers están actualizados tenemos más probabilidades que las aplicaciones ya estén configuradas correctamente en el GPU respectivo.

Como ejemplo cito una parte de las novedades del Catalyst 13.12 (Publicado en diciembre de 2013):
New AMD Enduro™ Technology profiles for the following game titles:
    XCOM: Enemy Unknown
    Need for Speed Rivals
    Total War™: Rome 2
    Battlefield 4
    Saints Row 4
    Splinter Cell Blacklist
    FIFA 14
VI. ¿Cómo actualizar los Perfiles sin la necesidad de instalar una versión nueva de drivers?
Fácil.
Muchos usuarios recomiendan que todos los notebooks funcionarán mejor si mantienen actualizados los drivers gráficos; lástima que dicha afirmación es completamente falsa, porque:
En notebook con gráficos híbridos el driver más actualizado no siempre es el mejor, porque un sistema que debe gestionar dos GPUs es más complicado y nuevos drivers pueden introducir fallos.
Por tal motivo, es una buena idea actualizar los perfiles manteniendo el driver instalado más estable.
Los pasos a realizar son:
1. Descargar el último driver AMD.
2. Descomprimir su contenido.
3. Ingresar a la ruta de instalación:
"C:\AMD\WHQL-Win10-64Bit-Radeon-Software-Crimson-ReLive-17.7.2-July27\Packages\Drivers\Display\WT6A_INF\B316285"
    La ruta anterior es un ejemplo, puede variar.
4. Copiar el archivo "atiapfxx.blb"
5. Pegarlo en las siguientes rutas:
    "C:\Windows\System32"
    "C:\Windows\SysWOW64"
6. Reiniciar el equipo.
Finalmente poseeremos los perfiles actualizados.
______________________________________________________

El contenido que voy a publicar a continuación dificilmente lo encuentren en la red, en el foro de Leshcatlabs encontrarán una parte porque fui yo quien lo publicó.
Cambiando de tema, muchos se habrán dado cuenta de la existencia de aplicaciones bloqueadas en "Ahorro de energía", no es un gran problema pero es algo fastidioso no tener un mayor control. Les aclararé las dudas más importantes y los métodos para desbloquearlas.

VII. ¿Por qué y desde cuando existen aplicaciones bloqueadas?
El por qué no estoy seguro, AMD menciona que es por problemas de compatibilidad.
Hace varios años, cuando realizaba experimentos con los drivers, descubrí que a partir del Catalyst 13.8 Beta (lanzamiento comercial) AMD bloqueó varias aplicaciones.

VIII. ¿Qué archivo es el responsable de bloquear las aplicaciones?
Sorprendentemente es el mismo fichero que contiene todos los Perfiles AMD Enduro: "atiapfxx.blb".

IX. ¿Cuál es el último driver oficial que posee las aplicaciones desbloqueadas?
Versión comercial: Catalyst 13.6 beta 2.
Versión para fabricantes: Catalyst 13.8 rev13.12.

X. ¿Cómo desbloquear las aplicaciones? (Método 1)
Simplemente descarguen el "Catalyst 13.8 rev13.12" y utilicen su "atiapfxx.blb". Decidí subir a Mega dicho perfil para no descargar el driver completo:
Enlace de descarga: MEGA
Autor: AMD

Sigan los pasos anteriormente mencionados para actualizar los perfiles y listo. El resultado lo encontrarán en la siguiente captura.
Catalyst Control Center con aplicaciones desbloqueadas. Método 1.
Desventaja:
  • Este perfil es de agosto de 2013, por tal motivo, no cuenta con las aplicaciones lanzadas después de dicho año, así que el usuario final deberá agregar muchas aplicaciones manualmente.
XI. ¿Cómo desbloquear las aplicaciones? (Método 2)
Este método fue descubierto por el equipo UnifL y no hay necesidad de utilizar un "atiapfxx.blb" diferente al instalado.
Consiste en editar el "CLI.Aspect.PowerXpress.Graphics.Runtime.dll" que es responsable de interpretar los distintos Perfiles de aplicaciones de Enduro.
El truco radica en hacer que las aplicaciones "bloqueadas en Ahorro de energía" sean interpretadas como "Ahorro de energía", con esta instruccion no exitirá ningún "candado" de bloqueo.
Esta solución fue proporcionada por primera vez con el "Catalyst 14.9.2 beta UnifL" (si mal no recuerdo). No se procupen, ustedes no realizarán ninguna codificación, simplemente usarán el resultado.
Ventajas:
  • Permite actualizar nuestros Perfiles AMD Enduro sin ningún riesgo.

Desventajas:
  • El archivo "CLI.Aspect.PowerXpress.Graphics.Runtime.dll" modificado debe corresponder a la versión instalada. En otras palabras, si el dll modificado proviene del Catalyst 15.11, entonces únicamente va a funcionar con dicha versión.
  • Si se utiliza una versión distinta a la instalada, entonces perderán los Menús de AMD  Enduro y no podrán ser restaurados mediante ningún Reg-Fix.
¿Cómo instalar?
Simplemente realicen los siguientes pasos:
Administrador de tareas de Windows 10, se utiliza la pestaña "Detalles" y se finalizan las tareas "CCC.exe" y "MOM.exe".
1. Ingresar al "Administrador de tareas" y finalizar los procesos:
    CCC.exe
    MOM.exe
2. Descomprimir "Application Unlock Dynamic X Z.rar"
     Donde: X es la versión del Catalyst & Z es el indicador de WHQL o Beta.
3. Copiar "CLI.Aspect.PowerXpress.Graphics.Runtime.dll" y pegarlo en la ruta:
    "C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static"
    O
    "C:\Program Files (x86)\AMD\ATI.ACE\Core-Static"
4. Reiniciar el equipo.
Enlance de descarga: MEGA
Password: quantum-phy
Autor: Leshcatlabs

Unas cuantas capturas de mi equipo como prueba:
Antes de aplicar el dll: Aplicaciones bloqueadas por defecto.
Después de aplicar el dll: Aplicaciones desbloqueadas y sin ningún problema.
XII. ¿Cómo bloquear las aplicaciones en "Alto rendimiento"?
Se sorprenderán al saber de esto, pero es verdad. Existe una forma de engañar al "Software de gestión gráfica" y tener las aplicaciones bloqueadas pero en "Alto rendimiento manteniendo los perfiles actualizados.
Lo descubrí por accidente, y también lo publiqué en el foro de Leshcatlabs hace unos años.
Consiste en crear o editar el archivo "user.blb" con las modificaciones necesarias aprovechando el conocimiento que el "user.blb" tiene más prioridad que "atiapfxx.blb". Crear ese archivo no es tan fácil, pero tampoco es nada del otro mundo.
Ahora, les mostraré los pasos a realizar: 

1. Crear el código xml básico para generar un "user.blb" personalizado.
Como ejemplo, asignaremos "mpc-hc.exe" y "mpc-hc64.exe" como "Alto rendimiento". (El usuario final es libre de elegir los ejecutables de sus aplicaciones). Se recomienda utilizar "notepad++", el código es el siguiente:
  1. <?xml version="1.0" encoding="utf-16"?>
  2. <customisations Format="1" Release="_20171101_1406_">
  3.   <applications>
  4.     <application Title="Media Player Classic - Home Cinema" File="mpc-hc.exe">
  5.       <use Area="PXDynamic">HighPerfGPUAffinity</use>
  6.     </application>
  7.     <application Title="Media Player Classic - Home Cinema" File="mpc-hc64.exe">
  8.       <use Area="PXDynamic">HighPerfGPUAffinity</use>
  9.     </application>
  10.   </applications>
  11. </customisations>
Donde:
          PowerSavGPUAffinity = Ahorro de energía
          HighPerfGPUAffinity = Alto rendimiento

2. Guardar el xml generado
Como ejemplo se utiliza el nombre "User2-Premiere.xml" y la ubicación:
"C:\OEMXML"
3. Abrir "cmd.exe" y convertir el xml en blb
El nombre del blb debe ser "User.blb". Para realizarlo, utilizar el siguiente comando:
  1. atiapfxx -u -s C:\OEMXML\User2-Premiere.xml -b C:\OEMXML\User.blb
cmd.exe o "Símbolo del sistema", si no aparece ningún mensaje después de aplicar el comando, todo bien.
4. Copiar el "User.blb" generado a la siguiente ruta:
"C:\Users\xxxxx\AppData\Local\ATI\ACE\APL"
Donde:
           xxxxx es el nombre de usuario del equipo.

5. Reiniciar el equipo.

Finalmente poseeremos los perfiles actualizados y con las aplicaciones bloqueadas pero en "Alto Rendimiento".
Engañando al "Software de gestión gráfica" "Catalyst Control Center". Las aplicaciones están bloqueadas, pero en "Alto rendimiento".
Se modificó el código xml anterior para incluir "firefox.exe" en "Alto rendimiento".
XIII. ¿Estos métodos funcionan o sólo son una apariencia?
Claro que funciona, y como prueba les mostraré las siguientes capturas:
Una imagen mostrada anteriormente, se visualiza claramente que "mpc-hc.exe" utiliza el "dGPU".
Firefox ejecutándose en mi dGPU 7670M bajo un test WebGL. También es posible configurar "plugin-container.exe" con este método. GPU1 = Radeon 7670M.
ADVERTENCIA:
No todas las aplicaciones se ejecutarán en el dGPU por más que se reproduzcan estos métodos, en algunos casos se necesitan realizar algunas modificaciones adicionales en el software de interés como en Google Chrome. En tal caso, revisar el Foro Leshcatlabs donde se encuentran algunos ejemplos.
Es responsabilidad del usuario aplicar el contenido es esta publicación.

REFERENCIAS:

Palabras finales
Hola a todos, aquí quantum-phy en otra publicación.
Si estás leyendo esto, seguro que ya terminaste de leer, caso contrario ¿qué haces en esta parte? reanuda la lectura xD
Si que demoré varias horas en revisar el contenido del Foro HP, pero vale la pena el esfuerzo.
Como sé que la mayoría sólo quiere saber cómo desbloquear las aplicaciones, incluí información sobre su funcionamiento, porque si algo se realiza de mala manera es seguro que me van a culpar jajajaaja. Además soy de las personas que les gusta fundamentar, por tal motivo el post de esta ocasión contiene mucho detalle.
Les traigo muchas soluciones contando parte de mi experiencia; además, en el Foro HP publiqué un poco más de contenido, pero no es relevante por ser desactualizado, así que recomiendo esta lectura y no la anterior versión.
Si entendieron todo, serán capaces de ignorar el "Software de gestión gráfica" y configurar todo manualmente, como si de Linux se tratara jajaja.
Ahora, es seguro que se estén preguntando ¿Los perfiles de "Radeon Software" son compatibles con "Catalyst"? La respuesta es que sí. Actualmente poseo los perfiles del "Radeon Software 17.7.2".
En cuanto a las aplicaciones bloqueadas, la verdad no sé en qué piensa AMD, primero nos quitan el control del dGPU con AMD Enduro y luego nos bloquean algunas aplicaciones. En verdad es frustante, porque "disfruté" esta "característica" en su momento, pero siempre existirá algún método para solucionarlo. Aprovecho este párrafo para agradecer al equipo UnifL por descubrir el segundo método. El primero y el bloqueo en "Alto rendimiento" son mis logros :D
Como aclaración, antes existió un problema con "Adobe Premiere", el cual no se ejecutaba correctamente porque en el perfil del Catalyst estaba bloqueado en "Ahorro de energía", en su momento lo solucioné bloqueándolo en "Alto rendimiento", pero en la actualidad ya viene desbloqueado y configurado como debe ser. Esto es vigente con los "Radeon Software 17.7.2".
Finalmente, quisiera probar las soluciones mostradas con "Radeon Settings", pero no cuento con un dGPU GCN, pero en teoría debería funcionar. Si alguien se anima a colaborar, pueden publicar un comentario.

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