Microsoft рассказала о том, как работает обратная совместимость на Xbox One

Обратная совместимость на Xbox One — крупное технологическое достижение в нынешнем поколении консолей. Два с половиной года назад Фил Спенсер (Phil Spencer) продемонстрировал в Лос-Анджелесе оригинальную версию Mass Effect для Xbox 360, работающую на аппаратной платформе Xbox One. После впечатляющего периода раннего доступа программа обратной совместимости развернулась в полную силу, и теперь игрокам доступны сотни проектов эпохи Xbox 360 для запуска на Xbox One, есть несколько улучшенных игр с поддержкой 4K на Xbox One X. О том, как именно работает обратная совместимость, журналисты Eurogamer побеседовали с Microsoft.

Кое-что просачивалось и ранее. Так, оригинальные исполняемые файлы Xbox 360 для архитектуры PowerPC, похоже, разбираются в промежуточный формат, а затем перекомпилируются в код, близкий к x86. Также упоминались некие блоки аппаратной совместимости, интегрированные в однокристальную систему Xbox One, чтобы упростить задачу эмуляции, но в целом до сих пор известно было мало.

«В принципе, у нас есть VGPU — графический процессор Xbox 360, перекомпилированный для x86, — и мы исполняем весь пакет операционной системы Xbox 360 в виртуальной машине, — пояснил Билл Стиллвелл (Bill Stillwell), руководитель Xbox Platform. — Мы берём каждую игру и перекомпилируем её так, чтобы она работала, но по сути она запускается по-прежнему в окружении Xbox 360, и наша команда трудится над игрой в несколько этапов».

На первом этапе команда собирает GPU-шейдеры, и то, что господин Стиллвелл называет «Просветления (Enlightenments)» — специальный термин, описывающий отправные точки для улучшения процесса перекомпиляции игр, предъявляющего требования к мощностям CPU, а не GPU. Это информация о том, какие инструкции игры предназначены для прямого доступа к оборудованию, точки вызова функций и так далее.

Задачу эмуляции значительно облегчает тот факт, что некоторые аспекты аппаратного дизайна Xbox 360 действительно встроены в чип Xbox One — в частности, поддержка форматов текстур и звука. Задача эмуляции весьма непроста, учитывая тот факт, что процессор Xbox 360 использует архитектуру PowerPC, весьма далёкую от x86 в Xbox One. Например, расчёты с плавающий запятой нужно адаптировать из 40-бит инструкций в 32-бит с потенциальными последствиями для таких аспектов игры, как обнаружение столкновений, но цель Microsoft ясна — иметь возможность исполнять игровой код на своей виртуальной Xbox 360 как можно ближе к оригинальному оборудованию. Так, чтобы сам исполняемый проект и не понял, что работает не на настоящей Xbox 360: то есть вне зависимости от того, как эмулятор преобразовывает данные, игре возвращаются ожидаемые ею от консоли значения.

В Microsoft есть и армия из более чем 100 тестировщиков, которые проходят игры и собирают тысячи часов видеоданных. На основании полученных данных разработчики отлаживают эмулятор, который становится всё более совершенным с каждым новым переносом очередной игры.

Задача адаптировать код, разработанный для трёхъядерного 6-поточного 3,2-ГГц процессора PowerPC, под маломощные низкочастотные ядра x86 весьма нетривиальна. Теоретически, шесть аппаратных потоков Xbox 360 можно назначить на конкретные ядра процессора Xbox One, но всё несколько сложнее. Например, у Xbox One есть похожий на Windows планировщик потоков, который распределяет нагрузку, а у 360 он был фиксированным и предельно непротиворечивым. Поэтому при эмуляции Microsoft пришлось в целях совместимости переписать собственный планировщик потоков: как только запускается логотип Xbox 360, на консоли управление потоками переводится на рельсы старой консоли.

В основе своей обратная совместимость с Xbox 360 почти целиком полагается на эмуляцию. Она частично опирается на специальные аппаратные блоки и на некоторый секретный ингредиент (например, Microsoft не распространяется о том, как в эмуляторе реализована поддержка векторных блоков VMX128 из Xbox 360). Однако команда Microsoft сейчас находится на том этапе, что все возможности и функции Xbox 360 актуальная консоль Xbox One может повторить программно. И это впечатляет, ведь в конце эры Xbox 360 многие разработчики стали куда меньше опираться на программные стандарты вроде DirectX API и часто использовали доступ к оборудованию на более низком уровне, чтобы выжать из платформы больше — всё это делает перекомпиляцию кода сложнее.

На Xbox One стали появляться и проекты для оригинальной Xbox в режиме обратной совместимости

При разработке эмулятора важными этапом стала Halo Reach: после выхода обратной совместимости начали поступать сообщения прессы о том, что эта сложная игра исполняется хуже, чем на Xbox 360. Microsoft пришлось вложить немало сил и средств в разработку новой процедуры и инструментов тестирования, выявить проблемные места и обеспечить более высокую эффективность эмуляции. Теперь даже высококлассные игры порой исполняются лучше и плавнее, чем на оригинальной консоли. Частично это обусловлено тем, что команда ставила такую цель изначально, понимая, что мощности Xbox One позволяют выжимать из старых игр больше.

Microsoft придерживается в отношении обратной совместимости ряда принципов. Например, компания не меняет ни единой строчки кода или ресурсы игры, даже в сценариях, где это было бы нелишним. К примеру, проблемы с неравномерным рендерингом кадров в Halo 3 на Xbox 360 исправлены на Xbox One, но лишь за счёт дополнительной мощи GPU. Все улучшения осуществляются исключительно средствами эмулятора.

Кстати, новая методика тестирования помогла улучшить и работу игр Xbox One на обновлённой платформе Xbox One X, которая в силу некоторых архитектурных изменений тоже отчасти потребовала эмуляции. Xbox One X принесла не только улучшенную производительность, но и уменьшенное время загрузки ресурсов, 16-кратную аппаратную анизотропную фильтрацию и даже поддержку технологи FreeSync для синхронизации частоты кадров в играх с частотой дисплея. Вдобавок уже семь игр Xbox 360 получили принципиальные улучшения на Xbox One X вроде поддержки исполнения в родном разрешении 4K благодаря методу Хеччи, названном в честь разработчика Эрика Хеччи (Eric Heutchy), придумавшего технологию.

Gears of War 3 исполнялась на Xbox 360 в разрешении 720p, а на Xbox One X масштабируется до полноценного 4K, так что разница оказывается колоссальной, вдобавок производительность существенно лучше

«Когда игра визуализируется в оригинальный целевой рендер, наш виртуальный GPU Xbox 360 распознает размеры и масштабирует целевой рендер, так что мы получаем, по сути, копию ресурса с высоким разрешением, спрятанную в памяти Xbox One, —  объясняет Билл Стиллвелл. — Игра не знает об этом, но поскольку мы имеем дело с эмулятором, когда эта поверхность используется как текстура на экране, мы можем подменить её на версию с высоким разрешением. Используются исключительно игровые ресурсы, и поскольку мы задействует этот RAM-кеш, всё это происходит очень быстро. Это случай, когда подход скорее штучный, чем фабричный. Нам приходится проходить каждую игру и оценивать, как она меняется, особенно когда мы используем ресурсы более высокого разрешения и масштабируем конечное разрешение в 9 раз (в 3 раза по каждой оси). В итоге мы добиваемся той же самой или более высокой производительности с текстурами повышенного разрешения».

В Gears of War 3 на Xbox One X также появляются тени там, где их не было на оригинальной платформе: оказывается, они просто не успевали подгружаться из-за ограничений Xbox 360

Порой результат улучшений на Xbox One X оказывается весьма впечатляющим. И не только с точки зрения роста количества пикселей, но и в области фильтрации текстур и повышенной детализации моделей, как в Fallout 3 и Halo 3. В играх Assassin’s Creed для Xbox 360, получивших улучшения на Xbox One X, существенно улучшены тени (они рассчитываются с повышенной в 9 раз детализацией). Точно так же предварительно рассчитанные и совмещённые с текстурами тени в Mirror’s Edges остались без изменений, а вот динамические получили возросшее разрешение.

Игры не знают, что исполняются в гораздо более высоком разрешении, так что некоторые эффекты вроде освещения или глубины резкости могут выглядеть не так, как было задумано

Halo 3 и Mirror’s Edge вдобавок получили поддержку HDR, что стало результатом работы команды обратной совместимости и группы продвинутых технологий (Advanced Technology Group). В теории все игры поколения Xbox 360, имевшие 10-битный конвейер рендеринга (вывод ранее осуществлялся всегда в 8-бит режиме), могли бы получить поддержку HDR, но это непросто. Например, не все игры использовали 10-битную обработку цветов на всём конвейере рендеринга. Вдобавок HDR-режим может несколько изменить игру визуально, и некоторые разработчики не согласны с этим.

В Mirror’s Edge на Xbox One X поддержка HDR несколько меняет стиль игры

В Mirror’s Edge, несмотря на рост разрешения, предварительно обсчитанные тени не улучшаются при исполнении на Xbox One X

Помимо семи улучшенных для Xbox One X обратно совместимых игр, Microsoft обещает аналогичные новшества и для некоторых других проектов. Причём улучшения Xbox One X можно будет отключать: в таком случае пользователи получат игру в первозданном разрешении, но с повышенной производительностью, которую может обеспечить новая консоль в режиме эмуляции.

В Assassin’s Creed на Xbox One X улучшается не только разрешение, но и качество теней

Как известно, архитектуры Xbox One и PlayStation 4 очень похожи, так что дальнейший прогресс Microsoft в деле совместимости и улучшения старых игр на новой системе становится важной отличительной чертой её платформы. Тем более что компания начала эмулировать и игры с первой Xbox, которые тоже получают улучшения в виде повышенного разрешения и более качественной фильтрации текстур.

В Fallout 3 полноценное разрешение 4K не мешает работе движка постобработки, включая полноэкранное сглаживание 4x MSAA. Впрочем, на дальней дистанции на Xbox One X, как видно, пропали некоторые деревья

Источник: 3dnews.ru