OpenGL и Parallels Desktop 13
Каждый пользователь Parallels Desktop for Mac хочет, чтобы Windows-приложения работали как можно быстрее. На скорость Windows-приложений, исполняемых в виртуальной машине Parallels Desktop, влияет много факторов: мощность процессора, наличие SSD, запущенные приложения, Windows обновления, и многое другое. Под катом небольшой рассказ о том, почему «совы не те, кем они кажутся на самом деле» ©.
Для тех Windows-приложений, что используют 3D-графику, надо учесть ещё два фактора: производительность видеокарты и используемые приложением графические Windows-библиотеки — DirectX или OpenGL.
Многие Windows CAD/CAM-приложения и игры используют DirectX или OpenGL. Почти в каждом основном релизе Parallels Desktop мы стараемся улучшить поддержку этих библиотек. В этой статье я расскажу об OpenGL.
OpenGL
»Open Graphics Library (OpenGL) — не зависящий от языка кроссплатформенный программный интерфейс приложения (API) для отрисовки 2D и 3D векторной графики. Обычно используется для взаимодействия с видеокартой для аппаратного ускорения отрисовки».
OpenGL «широко используется в системах автоматизированного проектирования (CAD), виртуальной реальности, научных и информационных визуализациях, полётных симуляторах и видеоиграх».
К примеру, OpenGL используют Windows-приложения Adobe After Effects, Adobe Photoshop, Adobe Premiere Pro, Autodesk AutoCAD, Google SketchUp и несметное количество игр.
Возлагая надежды
Хотел бы я сказать вам, что Parallels Desktop волшебным образом превращает ваш четырёхлетний MacBook Air в мощную игровую PC-машину с видеокартой с водяным охлаждением за $3000, но это не так.
Parallels Desktop может позволить вашему Mac запустить большинство Windows-приложений, какие-то игры и какие-то CAD/CAM-приложения.
Истории успеха
Благодаря труду инженеров, в Parallels Desktop 12 и 13 стали работать некоторые Windows-приложения, использующие OpenGL 3.2. Примеры OpenGL-приложений, хорошо работающих в Parallels Desktop 13 представлены ниже.
DIALux evo — Стандарт де-факто в индустрии профессионального проектирования освещения.
Wolfenstein: The Old Blood — шутер разработки Bethesda Softworks. Это сокращённая запись игровой сессии в Parallels Desktop 13 на Mac. Полная версия в разрешении 1920×1080, 1,06 Гб.
Ещё несколько хорошо работающих OpenGL-приложений:
• Rage (2011)
• Wolfenstein: The New Order (2014)
• Бенчмарки Unigine Heaven и Valley
• Minecraft
• CATIA
• Solidworks
• Northgard
• Rhinoceros 5
• Navisworks 2017
• ARCHICAD 20
• Solid Edge
• Серия игр Quake (Quake, Quake II, Enemy Territory: Quake Wars и другие.).
Версии OpenGL
У OpenGL более сложное версионирование, чем у большинства других приложений. Например, если приложению нужен OpenGL 3, а операционная система поддерживает OpenGL 4, то логично предположить, что приложение будет работать просто замечательно. Но не всё так просто.
Кроме того, вы могли заметить, что MacOS поддерживает OpenGL 4.1, а Parallels Desktop 13 — только OpenGL 3.2. Почему же Parallels не поддерживает OpenGL 4.1 в Windows? Чтобы ещё больше всех запутать, скажу, что даже некоторые OpenGL 3.x Windows-приложения не работают в Parallels Desktop 13.
Почему? В OpenGL 3.0 многие функции из OpenGL 2 и более ранних версий были помечены как не рекомендуемые, и окончательно удалены в OpenGL 3.1. В то время в OpenGL появилось дополнительная система версий под названием «Основной профиль / Профиль совместимости» (Core profile / Compatibility profile). В основном профиле не рекомендуемые функции недоступны, в профиле совместимости они работают. В целом, производители видеокарт в драйверах под Windows поддерживают профиль совместимости, чтобы могли работать более старые приложения. А вот Apple в MacOS поддерживает только основной профиль.
Представьте разработчика, создавшего Windows-приложение, которое использует OpenGL 2.1. Разработчик хочет использовать новые функции из OpenGL 3.x. Но теперь он вынужден переписать кучу старого кода, чтобы не использовать функции, которые больше недоступны. Этим никто не хочет заниматься. И вот решение — профиль совместимости.
Если вы с нуля создаёте новое приложение или движок, то можете начать и с основного профиля. А если улучшаете старый продукт, то лучше выбрать профиль совместимости. Поэтому почти все OpenGL-приложения под Windows используют этот профиль.
Виртуализированная графика Parallels для работы с видеокартой на MacOS использует OpenGL. Виртуальная машина преобразует Windows-вызовы API в MacOS-вызовы (описание упрощённое, на самом деле всё сложнее). Поскольку не рекомендуемые функции OpenGL 3.x не доступны в MacOS, Parallels просто некуда их транслировать. Поэтому Parallels Desktop использует основной профиль.
Сегодня Parallels поддерживает OpenGL 3.2 Core Profile, а для некоторых (очень консервативных) приложений может переключаться на OpenGL 3.2 Compatibility Profile.
Прогнозирование производительности OpenGL-приложений
К сожалению, не так-то просто предсказать, будет ли конкретное Windows OpenGL-приложение хорошо работать в Parallels Desktop. Если у вас уже есть наш продукт, попробуйте самостоятельно.
Если вы ещё не приобретали Parallels Desktop, то можете поставить пробную версию, с ним можно попробовать Windows бесплатно. И тоже запустите интересующие приложения или игры и посмотрите, достаточно ли производительности. Если достаточно, прекрасно! Можете купить Parallels Desktop и Windows. Если же приложения будут работать медленно, то вы не потратите деньги зря.
Также можете поучаствовать в теме на форуме, там люди пишут пакости про OpenGL-приложения, которые хотят использовать в Parallels Desktop.