Переделываем игровые платы на чипах от ATI в профессиональные!

…и прошив BIOS от RADEON 9700, мы получили возможность перепрограммирования DeviceID из 4144 (DeviceID RADEON 9500) в 4E44 (DeviceID RADEON 9700). Плата превратилась в полноценный RADEON 9700. Однако, этот резистор на подложке - не единственный. Резистор, стоящий по соседству, тоже установлен на подложку явно не "просто так". Мы сразу предположили, что он отвечает за возможность изменения DeviceID и перепаяв его, мы смогли бы получить, например, "профессиональные" адаптеры серии FireGL X1, Z1 и т.д... Но для этого нужны BIOS от этих плат, чего у нас в тот момент не было и не предвиделось. Пришлось делать BIOS для FireGL самостоятельно :).
Итак, действуем! Первым делом берем плату от Sapphire на базе RADEON 9700 (с тем же успехом можно взять плату на базе RADEON 9500, но предварительно перепаять еще один резистор :) ) и передвигаем соседний резистор на новое место:

Теперь программирование DeviceID чипа полностью открыто, остается залить новый BIOS. За основу я взял BIOS от Hercules на базе RADEON 9700. Для того, чтобы плата определилась драйвером для FireGL X1 как "родная" нужно, чтобы как минимум DeviceID чипа, VendorID и SubID платы совпадали с "родными" у FireGL X1. Эти значения я нашел в inf-файле драйвера для FireGL X1:

реклама
А из inf-файла драйвера Catalyst 2.5 видно, что плата на базе RADEON 9700 имеет другие ID:

После поиска строк с ID в файлах BIOS и сопоставления BIOS от RADEON 9500, RADEON 9500 Pro и RADEON 9700 я выяснил, в каких местах находятся эти ID и что нужно менять в исходном BIOS RADEON 9700. Подправляем BIOS (все изменения редактор показывает жёлтым цветом):

После изменения BIOS осталось лишь скорректировать контрольные суммы, это можно сделать с помощью RadEdit, если просто открыть им файл и сохранить, не изменяя.
Итак, в плату залит новый BIOS, и после загрузки Windows обнаруживает новую видеокарту:

Перед экспериментом я вычистил компьютер от всех драйверов ATI, так что пришлось указать системе, где лежит правильный драйвер, то есть драйвер от FireGL X1/Z1. Как только драйвер поставился, система нашла "вторичный адаптер" и уже сама предложила установить драйвер для него:
реклама

Конечно соглашаюсь :). Момент истины: перезагрузка. Ура! После перезагрузки Windows показывает, что в системе установлен адаптер ATI FireGL X1:

Но это еще не всё. В свойствах экрана вместо стандартных закладок от контрольной панели драйверов Catalyst появились закладки от FireGL X1. Например, на этой закладке показана информация о видеокарте, это ATI FireGL X1:

А здесь появились настройки драйвера для профессиональных приложений:

Когда я решил погонять игрушки, скорость платы стала немного ниже, чем у обычного RADEON 9700, но главное, что окончательно убедило меня в удачном результате - вот это:

Serious Sam стал использовать OpenGL-драйвер от ATI FireGL X1.
Что ж, с превращением RADEON 9700 в FireGL X1 всё получилось отлично.
Повторим этот же эксперимент над RADEON 9500. RADEON 9500 имеет 4 конвейера, поэтому будет превращаться уже не в FireGL X1, а в FireGL Z1. Берем плату Sapphire RADEON 9500 128 M. Перепаиваем резистор в новое положение:

Берем исходный BIOS от RADEON 9500 128 M и изменяем его:

реклама
Корректируем контрольную сумму и заливаем в видеокарту. Загружаемся. Windows находит новый адаптер. Драйвер для FireGL X1/Z1 уже поставлен, поэтому система сходу определяет плату как FireGL Z1:

После установки драйвера снова перезагружаемся и видим в свойствах экрана новую плату:

И "профессиональную" контрольную панель от ATI FireGL Z1:

Информация о видеокарте соответствует цели эксперимента:

А Serious Sam использует OpenGL-драйвер от ATI FireGL Z1:

Полученную из RADEON 9700 плату FireGL X1 мы протестировали в 3DS MAX 5 на машине с конфигурацией:
- Gigabyte GA-8INXP (Granite Bay)
- Intel Pentium4 3.06
- Seagate Barracuda 5 40Gb
- 1Gb PC2700
- Windows XP
- 3DS MAX 5
В 3DS MAX 5 сразу появилась контрольная панель настроек FireGL:

Вот результаты некоторых тестов из папки Benchmark дистрибутива 3DS MAX 5: RADEON 9700 -> FireGL X1 против RADEON 9700 Pro:

Комментарии излишни :).
Файлы BIOS, сделанные нами для RADEON 9700->FireGL X1 и RADEON 9500->FireGL Z1 можно взять, соответственно, здесь и здесь.
Кстати, наш опыт переделки RADEON 9500/9700 в FireGL X1/Z1 - не первый, так что мы не можем и не будем называть себя первопроходцами в этом деле. Как выяснилось, уже до нас люди сообщали об удачных экспериментах и получали в результате «профессиональные» платы на базе R300, но мы решили провести собственное детальное расследование, разобраться во всех подробностях переделки и опубликовать их, а также снять бенчмарки и поделиться с Вами результатами.
For English-speaking readers this news story is available at X-bit labs
Лента материалов раздела
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Сейчас обсуждают