<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


24 Марта 1999

Matrox закрепляет успех.

Нельзя сказать, чтобы G200 был неудачной разработкой. Карты из этой серии разлетаются, как горячие пирожки и, вроде бы, нет причин торопиться с заменой. Однако вот объявлен G400, и это, я скажу вам, сильный ход. Сильный в том плане, что во-первых, предупреждает конкуренцию со стороны S3 Savage 3D, а во-вторых устремляется в прорыв на новых рубежах.

Рябь на воде - одно из применений нового эффекта для обработки текстур, реализуемого в G400 аппаратно

Что касается конкуренции со стороны S3: G400, как и Savage, умеет брать текстуры из основной памяти компьютера. Скажем больше - для него нет существенного различия между своей и чужой памятью вообще. Вот такой коммунизм. То есть все настолько унифицировано, что он может располагать в основной памяти компьютера даже видеобуфер, если очень захочется. В сочетании с поддержкйо AGP 4X, что дает скорость доступа к ОЗУ в добрый 1 GB/s это смотрится крепко. Интересно, что чип G400 имеет еще и кеш-память на борту для сокращения обменов как с памятью на видеокарте так и по AGP.

Теперь о новых рубежах. Фактически G400 - это две видеосистемы на одном чипе! Чип содержит два канала формирования изображения. Один - полный, содержащий RAMDAC прямо на кристалле, то есть выдающий на-гора RGB для подключения аналогового монитора, а второй - частичный, требующий внешней "обвязки" и заточенный в основном под видеовыход или подключение LCD-экрана по цифровому интерфейсу. Максимальное разрешение на первом канале - 2048*1536, на втором - 1280*1024.

Оба канала могут работать одновременно с разными частотами развертки, разрешениями, глубиной цвета, с одним или разными видеобуферами - фактически, это две отдельных видеокарты. Вот только 2D и 3D акселератор у них общий. Это, однако, важно только когда оба канала подключены к мониторам и работают как две видеокарты, предоставляя пользователю сверхширокий двухэкранный десктоп. Такой режим поддерживается в Windows 98 и в Windows 2000. Однако есть несколько других, не менее интересных применений. Например, второй канал можно подключить к телевизору и смотреть на нём DVD, оставив первый под хождение по Интернету. Или же можно дублировать экран на телевизор, но экран при этом держать на обычной высокой частоте развертки, а телевизор "кормить" потребными ему 50Гц.

Но самый, как мне кажется, любопытный режим - это возможность показать на втором экране увеличенный фрагмент первого. Выполняет это аппаратный преобразователь, способный как ужать тысячи пикселей в телевизионное разрешение, так и растянуть ретушируемый в фотошопе элемент на весь экран, чтобы повнимательнее его рассмотреть.

Кстати двухэкранность гарантирует G400 хорошую поддержку в играх. Посудите сами - отлаживать трёхмерную игру на такой карте - просто чудо, как удобно. На одном экране - работа 3D-акселератора, на другом - отладчик. Значит разработчики понаставят себе "четырёхсоток", а что стоит на компьютере разработчика, то уж игра поддерживает на славу. :-)

Как я уже говорил, второй канал в существенной степени замыслен как средство подключить без ущерба для работы основного монитора телевизор. Исмотреть на нём DVD. Для этого в чип встроены средства частичной акселерации декодирования DVD и "железный" конвертор формата 16:8 к 4:3.

Что касается трехмерной акселерации, то заявленная скорость - "трижды G200", плюс есть способ экономить. Предположим, игра - симулятор грузовика. Седельного. На экране - кабина и внешний мир за окном. Ясно, что кабина рисуется раз и навсегда и почти не меняется. Ясно, что реально ее приходится перерисовывать поверх свежеотрисованного пейзажа каждый раз после его отрисовки, ибо это проще, чем разбираться, что там у пейзажа прикрыто стойкой ветрового стекла, а что - нет.

В G400 - легко. При отрисовке "заоконности" карте задаётся маска, отмечающая все невидимые места, и в них отрисовки не происходит. Причем не только точки не ставятся - по возможности блокируются действия на более ранних этапах графической акселерации.

Еще несколько фактов галопом по европам:

Внутренняя шина - два по 128 бит, к и от граф-процессора. Внешняя - 128 бит к видеопамяти. Разрядность графических вычислений - 32 бита. Видеобуфер - до 32М. Z-буфер - 32-битный если без масок, на маски можно отдать до 8 бит. Поддержка текстур с размером не равным степени двойки и не квадратных.

Однако всё это уже не так интересно. Вот двухдисплейность - это заявка любопытная, и если оно пойдёт, Matrox успеет славно снять сливки. Маркетинговая идея, кстати, проста как мычание - "много, кто купил себе монитор 17", а ведь старый 14-15" монитор пылится в углу", так что надо лишь дать человеку карту с двумя дырдочками, и он подключит оба.

Правда, точно так же он может поставить две карты - докупить вторую, не выбрасывая первой. Но в G400 двухмониторный режим снабжен таким числом фенек, что я уже хочу. :-)

Это заразно, я же говорил. Теперь идеей раздавать исходники проникся Novell. :-) Правда, уверенности в себе на полную раздачу всего сырца Novell Netware не хватило, и розданы будут лишь фрагменты. Вопрос - сколь большие.

Причина акции в желании облегчить участь разработчиков, и тем самым привлечь их к Novell-у.

Моё ощущение - не поможет. То есть этого мало.

 

Надо закопирайтить сочетание ЗЗЗ - Злой Завалишин Запретил. :-)

- Почему тут кирпич висит?
- А... ЗЗЗ...

или

- Вась, я съем эту булочку?
- Нельзя! ЗЗЗ!

В форуме резвятся слономоськи, которым Злой Завалишин Запретил (С) возвращать из функции два значения. Полноте, милые. Возвращайте на здоровье!

Только не называйте это ОО, не будет и вопросов.

И дело не в том, что в ОО прям вот нельзя вернуть два значения. Да можно. Можно на зеленый проехать перекресток на велике, катя за собой автомобиль на веревочке? Формально - пожалуй, да. Однако придёт ли это в голову тому, кто научился водить.

Один из учебников по ОО дизайну рекомендует из неконстантных методов не возвращать значений, а в методах, возвращающих значение, не модифицировать объект. Эта рекомендация имеет под собой вагоны обоснований, и еще Вирт еще до всякого ОО додумался до аналогичной мысли, рожая Паскаль. Его, Вирта, трудно, мне кажется, отнести к "бездумным апологетам ОО, которые программировать не умеют, а только пишут глупые книги на беду нам, беднягам Настоящим Программистам".

Так вот, если принять эту рекомендацию и ей следовать, то вопрос о возврате двух значений вырождается в ноль, так как проще и удобнее использовать пару методов, возвращающих каждый одно значение, чем переменные разводить, присваивать им, потом их куда-то использовать... Сравним:

int x, y;

thing.get_coordinates( &x, &y );

printf("pos is %d-%d", x, y );
и
printf("pos is %d-%d", thing.x(), thing.y() );

О чём спорим? Кстати, хороший программер сделает методы x и y инлайнами, а хороший компайлер вынесет common subexpression, вычисляющий адрес объекта за скобки и сведет всю конструкцию к тому же коду, который получит наш радеющий за быстродействие ОО-ненавистник на строку

printf("pos is %d-%d", thing.x, thing.y );

За что воюем? И, главное, кто кого заставляет? Не любишь ОО - не ешь. Нравится ассемблер - кайфуй. Соревнуйся с оптимайзерами. Что, не платят за это, гады? Платят за то, чтобы ты писал ОО-но? Гады, ой гады. Враги просто. Беда только, что это их, а не наши деньги, и пусть они там сами решают, как их тратить. Заказать Васе дюже быструю программу или купить у Интела проц побыстрее. Или заставить юзера купить у Интела проц побыстрее.

Кстати, каждый раз, когда я читаю/слышу про то, как плохо ОО (структурное программирование, использование Си вместо ассемблера, использование в ассемблере команды call) влияет на быстродействие, я задумываюсь - а слышал ли человек о законе 20 и 80? Точнее, о законах. Их много. Самый симпатичный - 20% людей выпивают 80% пива. Самый уместный - за 80% быстродействия программы отвечают 20% ее кода.

На самом деле - меньше. Поэтому всю программу надо писать хорошо, потом прогнать через профайлер, найти эти 20%, и их переписать быстро. И вот тут уж можно класть на все законы, если, конечно, быстродействие вообще критично. Но класть умеючи, строго комментируючи, внимательно глядючи.

"На красный можно ехать. Но только если ты твердо понимаешь, что ты делаешь".

Находка дня - "Мир тесен, если исключить рабочих и крестьян". С. Меднов. Мне очень понравилось. :-)

Реклама, однако.

Юные и зрелые таланты из России!

Nanyang Technological University

Сингапур искренне предлагает Вам возможность учиться и осуществить честолюбивые мечты о достойной Вас карьере