Закладка в OS X, продлевающая работу от батарейки для избранных приложений
Ноутбуки с двумя GPU появились уже очень давно. Первый MacBook Pro с такой технологией вышел еще в 2008 году.
Преимущество двух GPU в гибкости. Когда вам не нужна вся мощь видео системы, вы используете встроенное в процессор видео, наслаждаясь долгой работой от батарейки. Однако если вы захотели развлечься, то к вашим услугам мощный дискретный GPU. Да, он ест батарейку и жужжит вентиляторами, но дает хороший FPS в играх. Как же одному приложению переключать GPU?
В теории, переключение должно происходить автоматически при изменении нагрузки на видеокарту. Однако на практике все не так просто.
В Windows за переключение отвечают драйвера видеокарты. В них прописана куча игр и приложений с предпочитаемыми настройками. А пользователь может сам выбрать, когда задействовать мощное дискретное GPU, а когда хочется поработать в тишине.
В OS X с переключением все сложение. Начнем с того, что драйвера для OS X пишет сама Apple.
Кстати, это приводит к таким казусам, как очень устаревшая версия OpenGL. И никакие петиции не помогают исправить это положение.

gfxCardStatus
В OS X вы даже не можете понять, какой GPU сейчас работает. Если только по жужжанию вентиляторов.
К счастью, есть отличная утилита gfxCardStatus, которая показывает какая видеокарта активна, и даже позволяет переключаться между ними.
Когда включается дискретный GPU, утилита показывает, какое приложение вызвало переключение.
Проблема переключения и официальная документация
Подразумевается, что под OS X переключение происходит автоматически.
Например, в Safari обычно используется встроенный GPU. Но, если вы зайдете на сайт с WebGL, то произойдет переключение на дискретный GPU.
Однако, если вы сами захотите написать приложение, которое бы могло само выбирать режим работы, вас ждет неприятный сюрприз.
Начнем с того, что в официальной документации нет ответа на вопрос, как же правильно переключаться. При это написаны очень странные вещи. Но документация дает набор ключевых слов, по которым можно найти информацию.
Решение в Chromium
У нас есть отличный open-source проект chromium, который смог решить эту проблему. Надо создавать CGLPixelFormatObj с флагом kCGLPFAAllowOfflineRenderers при инициализации OpenGL контекста. В этом случае будет использоваться текущий (встроенный) GPU.
А если вы хотите переключится на дискретный GPU, то надо просто создать CGLPixelFormatObj без флагов. Даже OpenGL контекст не нужен. Для того, чтобы вернуться на встроенный GPU, просто удалить этот CGLPixelFormatObj:
CGLContextObj ctx; CGLPixelFormatObj pix; GLint npix; std::vector attribs; // Use current GPU attribs.push_back(kCGLPFAAllowOfflineRenderers); // comment this line for discrete GPU attribs.push_back((CGLPixelFormatAttribute) 0); CGLError err = CGLChoosePixelFormat(&attribs.front(), &pix, &npix); CGLCreateContext(pix, NULL, &ctx); CGLSetCurrentContext(ctx); .
Закладка
Я написал тестовое приложение, которое почти работало. Почему почти? Потому что удаление CGLPixelFormatObj не приводило к переключению обратно на встроенный GPU! Причем у chromium это получалось.
Зная, что в драйверах Nvidia для Windows есть специальные настройки для chromium, и то, что они определяют chromium по имени exe’шника, я ожидал что-то подобное и здесь.
Под OS X есть более надежный способ определять приложение — Bundle Id. И если поменять Bundle Id моего приложения на org.chromium.Chromium, то, о чудо, все заработает как надо.
Самое неприятное, что без правильного Bundle Id, никак нельзя переключится обратно на встроенный GPU. А это уже не просто настройка, а серьезная проблема для написания хорошей программы.
Так же работает Bundle Id: com.apple.Safari. О себе позаботились.
А вот com.operasoftware.Opera не работает. В итоге в Opera наблюдается такое же поведение: однажды захваченный дискретный GPU никогда не освобождается, даже если вы закрываете прожорливую вкладку. Единственный способ вернутся на встроенный GPU — это закрыть приложение.
Тестовое приложение и видео
Тестовое приложение, на котором можно убедиться в отличии поведения программы при разных Bundle Id, можно скачать тут.
Так же я снял видео, на котором воспроизвел проблему.
Решение
Как же в итоге решить задачу? Так как активный GPU один на систему, то можно создавать отдельный процесс, когда вам нужен дискретный GPU. И завершать этот процесс, если нужно вернуться на встроенный GPU.
Switch GPU — обзор видеокарты. Бенчмарки и характеристики.
Видеокарта Switch GPU (GPU) находится на 0 позиции нашего рейтинга производительности. Производитель: SWITCH. Работает Switch GPU с минимальной тактовой частотой . Графический чип оснащен системой ускорения и может работать в режиме турбо или при разгоне на частоте . Размер оперативной памяти — 4 GB ГБ с тактовой частотой 3200 MHz и полосой пропускания 25.6 GB/s.
Энергопотребление Switch GPU составляет , а технологический процесс всего 20 nm. Ниже вы найдете основные данные о совместимости, размерах, технологиях и результатах тестирования игровой производительности. Также вы можете оставлять комментарии в случае возникновения вопросов.
Давайте подробнее рассмотрим важнейшие характеристики Switch GPU. Чтобы иметь представление о том, какая видеокарта лучше, рекомендуем воспользоваться сервисом сравнения.
Технические характеристики CPU и GPU Nintendo Switch не внушают уверенности

Digital Foundry раздобыл первые подробности процессора и графического чипа Nintendo Switch.
По данным издания, CPU использует одинаковую мощность в обоих состояниях: как в доке, так и в мобильном формате, работая на частоте 1020 МГц. Так как частота остается той же, игровая логика или другие механики не будут страдать только из-за того, что геймер взял Switch с собой.
Контроллер памяти Nintendo Switch работает на частоте 1600 МГц в консольном состоянии и на частоте 1331 МГц в портативном виде.
Что касается GPU, то тут, по данным DF, графический чип работает с частотой 768 МГц находясь в док-режиме. И это странно, так как Nvidia Shield работала на 1 Ггц.
«Это не опечатка, GPU Switch действительно работает на 307.2 МГц в портативном режиме, или на 40% от частоты док-версии».
Nindendo пока не комментирует новую информацию, но если она правдивая, то это все очень и очень странно. Особенно в сравнении с мощностями других консолей. Предположительно, Switch будет иметь производительность около 1 терафлопса. Для сравнения, Project Scorpio обещает 6 терафлопс. PS4 Pro — 4.2 терафлопс, обычная PS4 — 1.8 терафлопс. Обычная Xbox One — 1.3 терафлопс.
Больше подробностей, в частности дату релиза и цену Nintendo Switch, объявят в январе.
Больше статей на Shazoo
- The Legend of Zelda: Tears of the Kingdom «утекла» в сеть за 11 дней до релиза
- Прикоснись к неизведанному — свежий трейлер The Legend of Zelda: Tears of the Kingdom
- Впечатления, геймплей и скриншоты из превью The Legend of Zelda: Tears of the Kingdom
GPU Switch Asus TUF Gaming — что это?

Позволяет переключать режим графики в максимально производительный (например для игр) или в максимально энергосберегательный (например при офисной работе).
GPU Switch может быть в виде кнопки, значка в трее или функции в фирменном приложении ASUS для ноутбуков, материнских плат серии TUF.
- NVIDIA G-SYNC — фирменная адаптивная технология синхронизации, позволяющая снизить количество разрывов экрана, а также снизить необходимость в использовании таких функций как V-Sync. Данная технология синхронизирует дисплей и видеокарту, чтобы обеспечить более плавный игровой процесс, снижает любые задержки изображения. Простыми словами — данный режим нужен больше играм.
- NVIDIA Optimus — технология автоматического переключения графики в зависимости от нагрузки на систему. Переключение между видеокартами происходит плавно и все зависит от запущенного приложения. Технология обеспечит или максимальную графическую производительность или минимальное энергопотребление видеокарты для более длительной автономной работы ноутбука. Режим стоит активировать, если на ноутбуке выполняются простые нетребовательные задачи, например офисного характера.
GPU Switch и позволяет переключаться между этими режимами.
В других источниках сказано: GPU Switch позволяет переключаться между G-SYNC и энергосберегательным режимом NVIDIA Battery-saving Optimus tech.
Деактивировать G-Sync можно также через панель управления NVIDIA:

Отключение технологии G-Sync может продлить автономную работу ноутбука.