2010-11-14 17 views
14

Todos los Macbook Pros 2010 vienen con dos tarjetas gráficas, una Intel HD de bajo rendimiento y una NVIDIA discreta de alto rendimiento, y cambia entre ellas sobre la marcha dependiendo de las necesidades de las aplicaciones en ejecución.¿Cómo deshabilitar Macbook Pro para cambiar a una tarjeta gráfica de alto rendimiento en Cocoa?

Tengo una aplicación de Cocoa simple que consiste en solo un elemento de la barra de menú con un NSTextField en él. Todo lo que hago es actualizar el campo de texto con un NSAttributedString de vez en cuando. El problema es que mi aplicación cambia mi Macbook Pro para usar la tarjeta NVIDIA de alto rendimiento (utilicé la herramienta gfxCardStatus para confirmar esto).

¿Qué podría necesitar la tarjeta de alto rendimiento? ¿Existe una lista conocida de razones para que las aplicaciones requieran tarjetas gráficas de alto rendimiento? ¿Hay alguna manera de forzar a la computadora a usar la tarjeta gráfica discreta?

Respuesta

17

Hay un buen artículo sobre la conmutación de GPU en la nueva MacBook Pros en Ars Technica. me di cuenta de que OS X cambia a la GPU dedicada si

  • iniciar una aplicación que enlaza contra OpenGL
  • Al conectar una segunda pantalla

El código de gfxCardStatus es de código abierto. Y parece que la parte relevante se encuentra en switcher.m. Puede mirar más de cerca here.

+1

Gracias por el enchufe. :) De hecho, es de código abierto, y te animo a que lo mires si lo deseas; sin embargo, no recomendaría agregar el código de conmutación a otras aplicaciones. Una aplicación que intenta controlar qué GPU está activa es suficiente. Logré corromper una de las extensiones de mi kernel ejecutando 3 copias simultáneamente e intentando cambiar con cada una de ellas justo después de la otra, solo para fines de prueba: mala idea. – codykrieger

+8

Además, cualquier cosa que use CALayers activará un cambio a la GPU discreta. – codykrieger

+1

¡Eso fue Cody! Tan pronto como configuro wantsLayer en uno de los controles en NO, dejó de cambiar a GPU discreta. Deberías dejarlo como una respuesta. –

Cuestiones relacionadas