Flip & blitting
От: Gvido  
Дата: 18.07.02 12:37
Оценка:
Народ, помогите с проблемой. Не могу понять почему блитинг и флип
занимают по десятку миллионов тиков на кадр, хотя все поверхности
размещены в видеопамяти. Может кто знает как это ускорить?
Re: Flip & blitting
От: Snax Россия  
Дата: 19.07.02 01:02
Оценка:
Здравствуйте Gvido, Вы писали:

G>Народ, помогите с проблемой. Не могу понять почему блитинг и флип

G>занимают по десятку миллионов тиков на кадр, хотя все поверхности
G>размещены в видеопамяти. Может кто знает как это ускорить?

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

Вот почему так происходит, другой вопрос. Я Вам на него ответить не
могу -- Вы не предоставили никакой информации о своих драйверах
и железе.

Павел.
Re[2]: Flip & blitting
От: IgorK Россия  
Дата: 19.07.02 04:13
Оценка:
Здравствуйте Snax, Вы писали:

G>>Народ, помогите с проблемой. Не могу понять почему блитинг и флип

G>>занимают по десятку миллионов тиков на кадр, хотя все поверхности
G>>размещены в видеопамяти. Может кто знает как это ускорить?

S>Ваш вопрос уже содержит ответ: все поверхности размещены в видео памяти,

S>а блитинг и флип осуществляются без участия акселератора,
S>т.е. центральным процессором. Для этого они копируются в системную
S>память, обрабатываются и копируются обратно.

Хотелось бы спросить — а откуда такая информация? Во-первых блит и флип немного разные вещи. Если блиттинг есть копирование куска памяти в другое место, то флип — обычно смена текущего отображаемого буффера (тоже кусок памяти).
Так вот, операция блиттинга сильно зависит от самой видеокарточки. Современные карточки умеют копировать куски памяти у себя на борту и, значит копирование будет произведено без участия процессора. Если видеокарта не умеет сама делать блит — то тут появятся тормоза, т.к. процессору надо будет самому читать из видеопамяти и писать туда. Дело в том что чтение из видеопамяти — вещь довольно тормозная, поэтому Blit будет тормозить.

Теперь с флипом — если железо может (сегодня мало уже таких, которые не могут), то тут даже копирования не происходит. Грубо говоря в видеокарте указатель на начало видеоданных перезаписывается на другой видеобуффер.

А по поводу "обрабатываются" — тоже спорный вопрос :)
Если, в случае с блитом — это можно понимать как обработка color key, то в случае с флипом вообще непонятно чего там обрабатывать. Причем если даже поверхность имеет color key, то есть большая вероятность, что операция произойдет аппаратно (без участия процессора) — проверенно на собственном опыте. Тоже самое можно сказать по поводу stretch.

Спасибо за внимание.

ps: peace ;)
Re: Flip & blitting
От: IgorK Россия  
Дата: 19.07.02 04:26
Оценка:
Здравствуйте Gvido, Вы писали:

G>Народ, помогите с проблемой. Не могу понять почему блитинг и флип

G>занимают по десятку миллионов тиков на кадр, хотя все поверхности
G>размещены в видеопамяти. Может кто знает как это ускорить?

Чтобы не гадать, хотелось бы увидеть следующие куски исходного кода:

1. Инициализация DirectDraw
2. Операция блиттинга
3. Операция флипа
4. Операция замера времени

Неплохо также было знать на какой видеокарте все это безоразие (тормоза) наблюдается.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.