Así que está claro que sólo hay un límite artificial de brillo máximo en el nivel de sistema operativo para el MBA para justificar aún más el precio más alto de la MBP.
No, no hay límite en el sistema operativo en sí, y no es para "justificar un precio más alto". MacOS (Windows, Linux, lo que sea) no controla el brillo máximo de una pantalla. Hay un límite físico del panel y un límite físico impuesto por el chip controlador LED/CCFL (normalmente seleccionado para que coincida con el rango de brillo del panel).
¿Qué controla entonces la luminosidad de un panel?
Es un controlador de dispositivo asunto.
No hay ningún ajuste en el sistema operativo, ya sea MacOS, Windows, FreeBSD o Linux, que puedas modificar para aumentar el brillo de la pantalla. De hecho, no hay directo enlace entre el sistema operativo y el controlador LED/LCD chip (no el controlador del dispositivo en el SO), ya que está controlado por la GPU. Para realizar cualquier cambio en el nivel de salida del controlador (aumentar/disminuir el voltaje para un panel más brillante/dimmer), el sistema operativo debe hablar con la GPU. a través de el controlador del dispositivo (kext) enviando instrucciones a la GPU, que a su vez ordena al chip controlador del LED/LCD que ajuste su salida de tensión.
Los valores que definen el rango de 0% a 100% están calibrados a valores de tensión y son codificado en el conductor. Los equipos de ingeniería de hardware y software de Apple han establecido una serie de valores que consideran el equilibrio óptimo entre usabilidad y eficiencia: se ve bien y maximiza la duración de la batería. La gente de Microsoft hizo lo mismo y llegó a cifras diferentes; de ahí la evidente diferencia visual.
Circuito Driver LED/LCD
A continuación se muestra una sección de un diagrama de bloques de la placa lógica del MacBook Pro (placa antigua que utilizaba una retroiluminación CCFL en lugar de la retroiluminación LED más reciente, pero el concepto es el mismo) que muestra el físico de la GPU y el inversor que controla el brillo de la pantalla.
![MacBook Pro Schematic]()
El Chip Conductor...
Para entenderlo mejor, tenemos que fijarnos en el chip controlador que regula la tensión de salida que se envía a la pantalla.
![Microchip HV9985]()
Si nos fijamos en el Ficha técnica del controlador LED HV9985 (seleccionado esto al azar, ya que Apple no libera esquemas para saber qué controlador exacto se está utilizando) podemos ver en las asignaciones de pines que son relevantes para la forma de atenuar el panel funciona:
- El pin 9 es la salida variable (10V - 40V) que alimenta la retroiluminación del panel. Más voltaje significa panel más brillante, menos significa panel más tenue.
- El pin 10 se encarga del modo "standby" del panel (lo pone en reposo). Cuando la tensión aquí es inferior a 0,8 V, el panel entra en modo de reposo (100% de atenuación).
- Clavijas 17-19 controlar la atenuación del panel regulando la tensión mediante PWM ( modulación de ancho de pulso ): básicamente, se trata de encender y apagar un interruptor muy rápido a una frecuencia determinada para obtener la tensión deseada.
Aunque es bastante técnico, lo importante es tener en cuenta que todo esto lo gestiona la GPU.
Cómo se comunica el sistema operativo con la GPU
A continuación se muestra un diagrama de bloques de la arquitectura del núcleo del sistema operativo MacOS/OS X de Documentación para desarrolladores de Apple . El núcleo Mach interactúa con los dispositivos de hardware (GPU, controladoras USB, SATA, PCIe, etc.) a través de kexts o extensiones del núcleo .
![OS X Kernel Block Diagram]()
Como puede ver, Conductores (kexts) son el nivel más bajo dentro del kernel. Es el kext de la pantalla el que ha sido codificado con los valores que (en este ejemplo, el rango PWM del controlador LED) atenuarán/iluminarán el panel de la pantalla. En Windows, sería el controlador de dispositivo que está codificado con estos valores.
Este rango está codificado y todo lo que hace el sistema operativo cuando se selecciona el nivel de brillo es enviar un comando a la GPU que le dice que atenúe/brille tantos pasos dentro de ese rango. El driver lo convierte en una orden al LED que cambia el valor PWM para cambiar el voltaje de salida. Todo esto se maneja entre bastidores a un nivel muy bajo.
Así pues, volviendo al proyecto de GitHub, la línea del código
float brightness = 0.8;
sólo fija el brillo al 80% del máximo definido en el kext/driver y no el 80% del brillo máximo del panel (físico). (Técnicamente, se está estableciendo una variable de tipo coma flotante llamada "brillo" a un valor de ".8", que eventualmente se pasará a una función que establece el brillo al 80% del máximo).
TL;DR
No hay ningún valor o .plist que puedas modificar que aumente el brillo de tu pantalla más allá de lo que está definido en el kext/device driver para la GPU. . Los ingenieros de Apple codificaron el rango de brillo (probablemente para equilibrar la usabilidad y el rendimiento con la duración de la batería) en el kext, así que mientras MacOS te da un rango del 1 al 10, los ingenieros de Microsoft aparentemente decidieron establecer el rango del 0 al 11.
Si quieres modificar estos valores en MacOS, tendrás que escribir un kext personalizado para la GPU.