GDI был ускорен. Кто-нибудь знает, когда это произошло? - PullRequest
7 голосов
/ 27 сентября 2008

Чтобы набросать фон этого вопроса: на работе мы используем рабочие станции Dell Precision. Мой нынешний получил NVidia Quadro FX1700. Моя команда разрабатывает графические компоненты для системы сбора данных в реальном времени. Таким образом, мы всегда смотрим, чтобы графические операции не занимали слишком много процессорного времени. Для быстрых проверок у нас есть несколько тестовых программ, которые мы запускаем, которые рисуют сцены с заданной скоростью (например, 10 кадров в секунду), и мы используем простой старый диспетчер задач, чтобы увидеть, где находится загрузка процессора. Одна из этих программ перегружена вызовами GDI DrawRectangle (которые заполнены). Эта программа всегда потребляла около 40% времени процессора, но примерно через год (только предположим здесь) она использует только около 2-3% времени ядра. Ясно, что здесь происходит некоторое аппаратное ускорение. И действительно, если я выключу HW-Accell, мы вернемся к первоначальному 40% времени пользователя. Все это, конечно, хорошие новости, потому что мы уже думали о переходе на OpenGL. Год за годом GDI никогда не получал преимущества аппаратного ускорения. До тех пор, пока это не было.

Кто-нибудь знает что-нибудь еще об этом? Microsoft сделала это? Или это зависит от производителя gfx-карты?

Редактировать

Спасибо за ответы (Феррусио, Торлак и Роб Уокер), но на мой вопрос еще не ответили. Мы говорим о заполненном прямоугольнике здесь. Пожалуй, самая тривиальная функция для оптимизации: просто отправьте пару координат в графический процессор и дайте ему разорваться. Тем не менее, это всегда было реализовано на стороне процессора. Пока ответы заставляют меня поверить, что NVidia наконец-то увидела свет (спустя более 10 лет) и ускорила GDI. И никаких объявлений об этом? Там нет никакой информации об этом вообще. Мои внутренние клиенты спрашивают меня об ускорении графики, и все, что я могу сказать, это «хорошо, нам повезло».

Edit2

Похоже, это связано с драйвером в соответствии с различными ответами. Итак, NVidia годами создавала дрянные драйверы GDI для своих карт рабочих станций. В этой компании действительно был признан тот факт, что GDI не был ускорен, и все тесты подтвердили это.

Ответы [ 5 ]

7 голосов
/ 27 сентября 2008

GDI работает, вызывая различные функции в драйвере графического устройства. Существует базовый набор функций, которые каждый драйвер должен реализовать. Другие функции могут быть реализованы драйвером. В противном случае GDI будет выполнять эти функции самостоятельно.

Если конкретная функция не реализована в аппаратном обеспечении, то нет смысла в том, чтобы драйвер выполнял программную реализацию этой функции, поскольку GDI, вероятно, может выполнять свою работу лучше. GDI чрезвычайно хорошо оптимизирован для производительности.

Поскольку в аппаратном обеспечении реализовано больше функций, эти функции не только работают намного лучше, но и GDI требует меньше работы, что приводит к уменьшению затрат процессора на графику.

Может также случиться так, что поставщик видеокарты, стремясь быстро вывести карту на рынок, не реализовал все возможные аппаратные функции, которые могла бы выполнять карта. Более поздние версии этого драйвера могут затем реализовать эту функциональность, что приведет к повышению производительности.

5 голосов
/ 06 октября 2008

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

Однако, не радуйтесь - аппаратное ускорение GDI больше не поддерживается в Vista. Новый движок композиции рабочего стола не поддерживает его. Тем не менее, в Vista вы получаете быстрое перемещение окон, так как контент не всегда должен перерисовываться приложением (и я думаю, что без слез?)

2 голосов
/ 27 сентября 2008

В некоторой степени, GDI всегда был ускорен. Даже в старые времена Win31 я помню, как покупал карты (Number9), основной точкой продаж которых было аппаратное ускорение GDI.

1 голос
/ 27 сентября 2008

Многие 2D-вещи были ускорены в течение некоторого времени, каждая новая основная версия Windows меняла способ работы драйверов дисплея. Я полагаю, что именно с XP Windows обновила свой уровень оконного менеджера. Трудно сравнивать, действительно, поскольку XP больше похожа на Windows 2000 / NT, чем любые более ранние версии.

Дополнительная информация о википедии, Разработка Windows XP .

Windows 2000, безусловно, была первым Windows-ядром на основе ядра, включавшим DirectX, и имела некоторые графические улучшения. Windows 2000 (Википедия)

Я не верю, что между версиями драйвера дисплея и 2D-подсистемы произошли серьезные изменения. Так что, если вы заметили подобное изменение, скорее всего, это связано с тем, что сделала nVidia.

1 голос
/ 27 сентября 2008

Vista имеет новую архитектуру драйвера дисплея , которая обеспечит возможность значительного увеличения производительности. Вы сравниваете как комбинации оборудования / ОС?

...