Поддержка чипов семейства A4xx в видеодрайвере freedreno

Довольно давно список поддерживаемых видеочипов в открытом драйвере freedreno, практически в одиночку разрабатываемым нашим коллегой, участник Fedora ARM SIG, Rob Clark, ограничивался семейством Adreno A2xx/A3xx. Как и обычно, информация добывалась с помощью реверс-инжиниринга, изучения MMIO-трейсов проприетарных видеодрайверов и так далее. Чипы A2xx и A3xx имели много общего, и работа шла быстро, но когда появился A4xx Rob обнаружил, что он сильно отличается от предыдущих поколений. Было решено, что необходимо сфокусироваться на предыдущих широко используемых семействах чипов, а с A4xx заняться, когда будет время.

Прошел год, времени так и не находилось, как вдруг в рассылку разработчиков прилетело несколько патчей для поддержки A4xx в драйвере freedreno из Qualcomm. Мы все были шокированы, ведь обычно embedded-компании и производители бытовой техники не очень охотно идут на контакт с opensource-коммьюнити. Потом прилетело еще несколько патчей от Qualcomm. В коммьюнити пока особо не комментируют это, т.к. боятся спугнуть удачу, но в целом это позитивный знак.

После этих новостей, Rob сумел запустить OpenGL-демо на A4xx:



Интересно, что кот выводился на экран в неправильном цвете, т.к. Rob ошибся где-то. Но быстро написанный им же скрин-граббер тоже содержал ошибку в цветопередаче при записи BMP, поэтому цвет на скриншоте стал правильным. Минус на минус дает плюс!