qark.ru

Главная » Статьи » Windows » Службы и процессы

Возможна ли поддержка DirectX 10 на Windows XP?
  Многочисленные муссирования этого вопроса напомнили мне то далекое время, когда в классе шестом я впервые прочитал о великой теореме Ферма и исписал кучу тетрадок, взявшись с энтузиазмом за проблему, которая мне была явно не по зубам. Как раз в то время я увлекался сбором всевозможных доказательств теоремы Пифагора и более общая задача вызвала непреодолимое желание ее решать. Кстати, решение было найдено Эндрю Уайлсом и опубликовано в 1993 году, 368 лет множество великих математиков ломали над ней голову.

   К чему это я вспомнил?
Заявления о разработке поддержки DirectX 10 на Windows XP сделаны несколькими разработчиками. Например, некий Alky http://alkyproject.blogspot.com/ заявил об этом, масса сайтов и форумов растиражировало и обсасывало тему, появились какие-то демо чего-то там.
Кто же такой этот Alky? Он о себе заявляет, как об опытном разработчике и реверс-инженере. Допускаю, что в его 17 лет можно неплохо овладеть техникой программирования и в чем-то получить опыт. Но в целом амбиции "инженера”, не имеющего фундаментального образования, и способ их подачи вызывает улыбку, не более того. Так же, как и мои детские потуги доказать теорему Ферма. Конечно, образование ума не дает - Билл Гейтс, Майкл Делл и еще масса известных людей не заморачивались получением высшего образования. Но они и не вылазили раньше времени. И Эндрю Уайлс, заболев теоремой Ферма в 10-летнем возрасте, предоставил ее решение, будучи уже 40-летним, причем последние 6 лет работал так, что о нем не было ничего слышно в математических кругах.
Нежный возраст часто рождает призрачные иллюзии, порождающие надежду решить непосильную проблему не только у самого мечтателя, но, что гораздо хуже, и у большой массы людей, которые могут быть посвящены в поиски решения этой проблемы. Как правило, иллюзии разбиваются о реальную жизнь.

   Так можно ли сделать поддержку DirectX 10 на Windows XP в принципе?
Не могу удержаться от приведения аналогии – а можно ли на "Запорожец” установить двигатель от "Камаза”? Теоретически можно, усилив подвеску, заменив ... (тут перечень на тысячу пунктов). Даже можно будеть поездить на этом монстре по своему двору, но участником цивилизованного движения на нормальных дорогах вы никогда стать не сможете – такая машина не пройдет регистрацию, да и с технической точки зрения будет представлять опасность для всех, как несбалансированное по всем пунктам решение. Но все конкретные пацаны и в вашем, и соседнем дворе будут тащиться и восторгаться этим чудом.

   Впрочем, от лирики перейдем к делу.
Рассмотрим коротко, как можно "приделать” DirectX 10 к Windows XP. Разумеется, нужна видеокарта, поддерживающая DirectX 10 (того, кто не понимает, зачем, и не знаком вообще с DirectX, от сылаю к статье по ссылке под заголовком). Если наивно полагать, что все, что нужно, это вызывать данные и функции, имеющиеся в библиотеках DirectX 10, то он сильно ошибается. Windows Vista изменила концепцию драйвера устройств, прераспределены в этом смысле уровни ядра и пользователя. По другому работает механизм использования памяти устройств, доступ к ресурсам и есть еще несколько специфических для Windows Vista особенностей, отсутствующих в принципе у Windows XP. Другими словами, потребуется совершенно другой драйвер видеокарты (его нужно не покромсать, как часто делается с нынешними драйверами по разным поводам, а сделать совершенно другой, с нуля), и эмуляция "под Висту” - перехват, переобработка и перенаправление кучи системных и АПИ вызовов, основанное на исключительном понимании внутренней логики работы OC (которая часто вводит в ступор самого разработчика Windows), написание большого объема сложного кода. Что не невозможно в принципе, но крайне маловероятно в плане хотя бы безглючной организации, даже не имея в виду быстродействия. Даже пустое окно под DirectX 10 потребует достаточно долгой нудной работы, а это - всего лишь маленький предварительный шажок.

   Эту проблему можно разбить еще на две составляющие.
Одно дело – сделать совместимыми уже выпущенные DirectX 10 игры, в которых разработчик использовал весь спектр возможностей нового АПИ, и совсем другое – попробовать использовать эти новые возможности видеокарт в полной мере в старой ОС при разработке новых игр.

   По первой части.
Для Microsoft разрушить усилия всех желающих внедрить "поддержку DirectX 10 на Windows XP” - нетрудное дело, всего лишь нескольких часов, надо лишь задействовать несколько скрытых механизмов, имеющихся в библиотеках и ОС. Одно критическое обновление и годы стараний народных героев пойдут коту под хвост. И это, безусловно, будет сделано, как только такая угроза станет хоть немного реальной (вспомним мгновенное умышленное снятие поддержки SLI с чипсетов ULI в драйверах, сразу после приобретения Нвидией этой компании. Матери с чипсетами ULI прекрасно работали в SLI, но стоили в три раза дешевле. Была нужна Нвидии конкуренция с дорогими NForce?).

   Избавиться от этого дамоклова меча – значит переписать DirectX 10 полностью. Флаг в руки, давно ждем-с таких героев.

   По второй части.
Теоретически, никто не запрещает, зная архитектуру карт (это известно), и их технические описания и руководства по системному программированию (а вот это уже закрытая тема, но на этой Земле очень трудно хранить тайны), обеспечить полный контроль над видеокартой и использование всех ее возможностей. Но куда мы с таким подходом пришли? Правильно, во времена MS-DOS. Для этого теперь программистам надо в совершенстве знать кучу деталей по низкоуровневому программированию КАЖДОЙ видеокарты, на которой игра планируется выполняться (нужно будет писать и свой драйвер, и свой участок программы ТОЛЬКО для нее). Кому эта возня нужна? У разработчиков нет на это времени. Энтузиаст – хакер, типа Alky? Да, возможно, пару карт и осилит, но он никогда не успеет за потоком новых моделей, да и его работу никто, обладающий здравым смыслом, использовать не будет. Сумасшедший миллиардер, который наймет бригаду кулхацкеров? Возможно, но будет ли такая группа стабильной в достаточно долгой перспективе, ведь нужны крайне неординарные знания темы, а таких людей вообще не очень много, а работы – выше крыши. Со временем псевдоцели у грамотных людей заменяются на нормальные, такой коллектив в принципе неустойчив. В то же время есть альтернатива для здравомыслящих – использование, например, OpenGL или работа в достойной компании.

   Конечно, это могут сделать сами производители видеокарт. Например, у NVidia существует специализированный драйвер под XP (162.01), задействующий хитрым образом системные ресурсы видеокарт восьмой серии для специализированных вычислений. Но они никогда не будут заниматься этим специально, для общего доступа всех и каждого, связанные многочисленными обязательствами перед Microsoft (и ответной благосклонностью).

   Ну и, естественно, это может сделать сама Microsoft. Но зачем это ей надо? Наоборот, сегодня Windows XP ей уже сильно мешает. Вспомним, что даже первые планы (года три назад) были - прекратить поддержку Windows XP с 2007 года. Суровая реальность расставила все по местам, но желание быстрее убрать с арены старую ОС не исчезло.
Но я уже говорил в предыдущей статье, что по некоторым изменениям в АПИ напрашивается вывод о некоторых специально превнесенных элементах, намеренно затрудняющих портирование под старую ОС.

   Пара слов по поводу быстродействия DirectX 10.
Как то до сих пор мелькали только чудесные выписки с информационных источников самой Microsoft, перевранные или выпячено-поданные многими информационными сообщениями. К примеру, заявления о валидации объектов при создании, а не при каждом использовании, что типа "устраняло миллионы лишних операций”. Звучит-то как! А кто из них считал, например, дополнительное время на переключение стадий конвейера в DirectX 10? Все нюансы программирования под DirectX 10 только сейчас опробируются и выясняются узкие места, а любой новый драйвер напрочь может изменить любое представление о правильности оптимизации кода, сделанного программистами.
Даже демонстрационные программы под DirectX 10 у самих разработчиков видекарт, имеющих полное знание всех нюансов аппаратной реализации и тонкостей своих драйверов, еле ворочаются, а они-то ведь призваны показать работу новинок во всей красе!

   И во всем винить криворуких программистов неправильно. Во-первых, вовсе не программисты определяют технические параметры игры, за очень редким исключением. Как правило, разработку игры финансирует издатель, который впоследствии получает все права на реализацию готовой продукции. Кто платит – тот и заказывает музыку (характеристики товара). Издатель, независимо ни от чего, заинтересован получить максимально возможный объем продаж. Учитывая, что Windows Vista на геймерских машинах пока имеет долю менее 10%, нет причин не ставить обязательное условие разработки игры, которая бы запускалась на Windows XP. А времени на разработку всегда не хватает, и за одну зарплату двойную работу сделать трудно. И вообще, если бы не прямая поддержка производителями видеокарт разработчиков игр (и непрямая еще кое-кем), которые пишут что-то типа "Meant to be played on...” (дальше – добавить по желанию), то сегодня DirectX 10 игр, имеющихся и находящихся в разработке и их демо-версий, было бы гораздо меньше.

   Да и не может пока быть полноценных DirectX 10 движков, так, наброски пока. Время еще не пришло, пока главное – максимальная массовость охвата на рынке. Конечно, R&D крупных игроков рынка вовсю работают. Когда же будет DirectX 10 выхлоп? Одному богу известно. Но он, конечно, будет.

   Подводим итог – полноценной поддержки DirectX 10 на Windows XP быть не может. Суррогатная поддержка, глючная и долго не проживущая – да возможна, причем стоящая огромных трудозатрат ее разработчику. Но Microsoft, при желании, легко убьет эти начинания. Если делать что-то другое, то это уже будет другая тема и это не DirectX 10.

Категория: Службы и процессы | Добавил: solidax (22 Января 2014)
Просмотров: 1069 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: