Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.19;
Скачать: CL | DM;

Вниз

Как использовать 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
1-60230
Сергей Кошелев
2003-06-05 16:09
2003.06.19
Графика


1-60123
dimonf
2003-06-06 12:52
2003.06.19
Как в дочернем объекте повеситься на обработчик родителя???


14-60353
LOX
2003-05-31 13:03
2003.06.19
Kак позвонить на какой либо телефон?


14-60391
Мазут Береговой
2003-06-02 20:52
2003.06.19
Хотите узнать о мед.обслуживании в США? Читайте здесь:


3-60082
Dimaz-z
2003-05-28 15:16
2003.06.19
Какой запрос надо поставить, чтобы сортировать базу по алфавиту?