Как стать автором
Обновить

Комментарии 12

Ошибка выводится не игрой, а операционной системой. Дебаг показал, что эта ошибка вызвана неполной поддержкой SIMD для x86 в QEMU: часть инструкций не поддерживается и генерирует исключение неизвестной команды (Invalid Opcode).

Полагаю применённый вами позже -enable-kvm решает эту проблему и SSE можно возвращать.

Странно, но KVM тут не помогает. Ещё страннее, что в исходниках qemu сама инструкция (stmxcsr) упоминается и кажется, что и программно всё должно работать. Но что-то идёт не так. Проверил только что — на хосте инструкция исполняется без проблем.


Затрудняюсь сказать, что именно идёт не так.

ОС должна явно включить поддержку расширенных наборов команд (чтобы не было такого, что программа в юзерспейсе использует какой-нибудь zmm0, а ядро ОС не знает, что такой существует и его надо сохранять при переключении контекста). В embox это сделано?
Да, дело действительно в этом, как-то не пришло в голову. Спасибо! Добавил замечание в статью об этом косяке.

На ARM для NEON у нас такое есть, а на x86 — нет.
я так первый Doom прошел на 386
в смысле такой же fps был
когда запустил на нормальном Пне, то заметил как он качается во время ходьбы.
А что значит «появилась поддержка Open GL», если его нельзя или так сложно использовать?
если его нельзя

Можно, это видно на скринах в статье. Графика отрисовывается с помощью Mesa, Mesa реализует OpenGL API.


так сложно использовать

Так же, как и обычно — пишете программу, используя OpenGL API, и компилируете.


Станет понятнее, если прочитать статью чуть дальше первого предложения. Непосредственному использованию самого OpenGL тут посвящено несколько предложений и два листинга кода по 20 строк.

Видимо неправильно сформулировал вопрос.
Я понимаю, что у Вас есть поддержка OpenGL, и если использовать API, то все будет работать. Но ведь в Quake и так используется OpenGL API.
Вы используете Mesa, а она как раз ориентирована для ускорения рендеринга, в том числе за счет использования аппаратного ускорения.
Просто странно что у Вас по сути есть всё что нужно, но все же рендеринг программный.

В Mesa действительно есть хорошая поддержка аппаратного ускорения, но она не работает с аппаратурой напрямую, для её использования нужен слой DRM, который и взаимодействует с GPU (и которого у нас пока что нет). Если сконфигурить Mesa с драйвером swrast, она будет, грубо говоря, рисовать картинку в оперативной памяти, без задействования DRM, этот вариант и используется на данный момент.


Реализовать аналог DRM из Linux достаточно сложно, работаем над этим. В данный момент делается драйвер для Vivante GPU на i.MX6. Получить простую анимацию уже получилось, а вот "подружить" драйвер с Mesa не выходит. Там достаточно много подводных камней, когда закончим м.б. накатаю статью по этой теме.

Кстати, SDL поддерживает Vivante GPU на i.MX6 из коробки начиная с версии 2.0.4. Я эту поддержку добавил :)
Круто! Видели, что vivante есть, правда не проверяли как работает.
А можно Вам в личку вопросы по поводу акселератора для i.MX6 позадавать, а то при отсуствии документации, как то все очень медленно двигается. Простые сцены уже работают, но есть куча нюансов и костылей.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий