ROS Newsletter40
Содержание
[убрать]Выпуск новостей ReactOS №40
Выпуск новостей ReactOS №40
Microsoft DirectX
Для начала позвольте сказать, что в соответствии с WGA (Windows Genuine Advantage) и EULA (End-User License Agreement), вы имеете право устанавливать DirectX только на лицензионную систему Windows. С другой стороны, библиотеки, которые поставляются с различными играми и обязательны для их работы, технически не ограничены WGA. Именно поэтому DirectX теперь работает в ReactOS. Чтобы установить его, вы должны вручную скопировать файлы dxg.sys, dxgthk.sys, dxapi.sys, ddraw.dll и dciman32.dll, т.к. инсталлятор всё ещё не работает. Не работает и 3D, однако простое 2D работает с аппаратным ускорением. По крайней мере под VMWare Workstation, где поддерживается аппаратное ускорение DirectX.
Чтобы DirectX заработал, пришлось изрядно потрудиться над исправлением и доработкой gdi32.dll и win32k.sys. На самом деле, эта работа началась ещё в 2004 году, так что это результат долгих усилий. Мы все благодарны Магнусу Олсену (Magnus Olsen), Тимо Кройцеру (Timo Kreuzer), Джеймсу Тэбору (Jim Tabor), Маартену Босма (Maarten Bosma) и Алексу Ионеску (Alex Ionescu) - за то, что они смогли заставить работать DirectX, и Камилю Горничек (Kamil Hornicek) - за его помощь в тестировании компонентов DirectX и ReactX.
Помните, что мы говорим о DirectX от Microsoft, не о DirectX от Wine или ReactX. Мы можем получить поддержку 3D благодаря использование некоторых библиотек DX от Wine. Однако запуская MS DirectX мы можем тестировать реализацию функций в gdi32.dll и win32k.sys. Все функции DX все равно сводятся именно к ним.
Важные исправления ошибок
Не так давно Алекс Ионеску (Alex Ionescu) нашёл в ReactOS несколько ошибок, связанных с таймингом и блокировкой. Они варьировались от совершенно неправильных алгоритмов до простого изменения типа блокировки, используемого в некоторых ситуациях, устранения race condition'ов, deadlock'ов и других гадостей. Прирост производительности в некоторых ситуациях оказался просто громадным, согласно тестам Алекса, во время инсталляции он достигал 150%. Другие важные исправления были проведены в диспетчере памяти путём замены "хаков" на различные оптимизации. Излишне упоминать, что мы все благодарны за помощь.
Вот пояснение для тех, кто гадает, почему Алекс всё ещё разрабатывает ReactOS. Баги в блокировочном коде были исправлены Алексеем Брагиным (Aleksey Bragin). Алекс просто предоставил информацию и указал на проблемные места. Тот код, который он внёс, касался исправления проблем с диспетчером памяти. Однако диспетчер памяти ReactOS - это самая большая причина задержки перед массовым переписыванием ядра, после которого система должна изменить поведение на более NT-подобное. Наш диспетчер памяти хоть и предоставляет ту же функциональность, на самом деле ничем не похож на диспетчер памяти NT. На самом деле если вы читали книгу Windows Internals и пытались работать над диспетчером памяти ReactOS, вас ждали бы нелёгкие времена, поверьте на слово. Исправление багов в уже существующем коде допустимо, поскольку не так уж сложно обнаружить плохое место просто читая код.