Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

Как использовать MMX SSE . . .   Найти похожие ветки 

 
Hek   (2003-06-04 23:46) [0]

У меня есть процедура смешивания двух текстур.
Надобы ее заоптимизировать. Есть ли какие опции компилятора или утилки какие что-бы Delphi мне под MMX ее заоптимизировала.
Вот кусок
for j:=jmin to jmax do begin
y:=Round( (j-jk)*lj_ );
for i:=imin to imax do
begin
x:=Round( (i-ik)*li_ );
m:=Map[x,y]*blend;
ofs:=i + j shl k;
r:=Data[ofs].R + m*Color.r shr 16;
g:=Data[ofs].G + m*Color.g shr 16;
b:=Data[ofs].B + m*Color.b shr 16;
if r>255 then r:=255;
if g>255 then g:=255;
if b>255 then b:=255;
Data[ofs].R:=r;
Data[ofs].G:=g;
Data[ofs].B:=b;
end;
end;

По идеи тут три операции можно за один такт сделать.


 
Vulko   (2003-06-05 06:44) [1]


> Delphi мне под MMX ее заоптимизировала

Именно под ММХ? :)
Вообще-то не понимаю при чем тут MMX SSE?
Это же набор инструкций процессора. Тогда тебе надо в Дельфи делать асм вставки.

И зачем теб вот это ofs:=i + j shl k;?


 
Hek   (2003-06-05 13:10) [2]

Data - двумерный массив [0..x-1,0..y-1] где x, y всегда числа равные степени двойки. Значит смещение в массиве вычисляется как i+j*x. А умножение на степень двойки можно заменить побитовым сдвигом. Тогда k=log2(x); i + j shl k

А на счет оптимизации под MMX то для C есть копилятор IntelC там ключ при компиляции указываешь и копилятор использует MMX/SSE инструкции. А MMX как раз дает выйгрыш при обработки больших однотипных данных. Тут по идее можно сразу для RGB считать за инструкцию


 
VMcL   (2003-06-05 14:43) [3]

>Hek (05.06.03 13:10)

В Delphi таких опций компилятора (пока) нет. Нужно писать самому на asm или юзать какие-либо библиотеки (*.pas, *.obj, *.dll).



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.009 c
3-60048
TROY_Piter
2003-05-28 00:04
2003.06.19
Поле автоинкрементного типа (+)


3-60019
Инна
2003-05-25 17:18
2003.06.19
PopupMenu над DBGrid


1-60222
Rel_
2003-06-05 15:12
2003.06.19
TTreeNode


8-60273
Kair
2003-03-02 21:24
2003.06.19
Проигрывание видео-фильмов.


1-60231
Sarge
2003-06-05 15:33
2003.06.19
Скопировать массив в массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский