[MPlayer-dev-eng] TODO

Arpi arpi at thot.banki.hu
Wed Feb 13 00:57:09 CET 2002


Hi,

> > ill write a agp_memcpy ...
> done, heres the benchmark for my p3 at 500
nice work!

File:  /3a/MPlayer/benchmark/testsuite2/405divx_sm_v2[1].avi
VIDEO:  [DIV3]  356x240  24bpp  30.00 fps  343.0 kbps (41.9 kbyte/s)
agp memcpy  :
BENCHMARKs: V:   4.205s VO:   4.585s A:   0.000s Sys:   6.480s =   15.271s
BENCHMARKs: V:   4.225s VO:   4.584s A:   0.000s Sys:   6.471s =   15.280s
BENCHMARKs: V:   4.159s VO:   4.585s A:   0.000s Sys:   6.482s =   15.226s
libc memcpy :
BENCHMARKs: V:   4.178s VO:   4.865s A:   0.000s Sys:   6.497s =   15.540s
BENCHMARKs: V:   4.301s VO:   4.878s A:   0.000s Sys:   6.485s =   15.664s
BENCHMARKs: V:   4.153s VO:   4.866s A:   0.000s Sys:   6.518s =   15.537s
fast-memcpy :
BENCHMARKs: V:   4.184s VO:   4.900s A:   0.000s Sys:   6.498s =   15.581s
BENCHMARKs: V:   4.235s VO:   4.902s A:   0.000s Sys:   6.496s =   15.633s
BENCHMARKs: V:   4.143s VO:   4.899s A:   0.000s Sys:   6.524s =   15.566s

it was with -vo mga (i've changed source to use different memcpys)
anyway, while benchmarking agp memcpy, i got NaN results... with some
research i've found it's because of missing EMMS call:

#ifndef HAVE_SSE
                /* enables to use FPU */
                __asm__ __volatile__ (EMMS:::"memory");
#endif

why is it disabled for SSE cpus? maybe original fastmemcpy didn't use MMX
for SSE cpus? dunno. anyway it is required for agp memcpy...

but.
it is used in most cases (at least for YV12) in such loop:

for(y=0;y<h;y++){
    memcpy(d,s,w);
    s+=s_stride;
    d+=d_stride;
}

so mayeb making a specialized version with such syntax could make our life
easier and also saves us from some func calls and emms:
   agp2memcpy_pic(d,s,w,h,d_stride,s_stride);

what do you think?


A'rpi / Astral & ESP-team

--
Developer of MPlayer, the Movie Player for Linux - http://www.MPlayerHQ.hu



More information about the MPlayer-dev-eng mailing list