I want to make API that will provide hw video decoder on Amlogic SOC
it is ARM cortex 9

with some proprietary video decoder

amlogic provide me with working example that generate output frames in
amlvideo driver.
It is v4l2 driver
and it did memcpy to mmap userspace memory

    buffer_y_start=ioremap(cs0.addr,cs0.width*cs0.height);
    for(i=0;i<buf->vb.height;i++) {
                memcpy(vbuf + pos_dst, buffer_y_start+pos_src, buf->vb.width*3);
                pos_dst+=buf->vb.width*3;
                pos_src+= cs0.width;
        }

I did it with one memcpy with same cpu load

https://github.com/Pivosgroup/buildroot-linux-kernel/blob/master/drivers/media/video/amlvideo/amlvideo.c#L218

top get me 50% cpu load on this driver for 25fps PAL

it is really too much

and funny is that vivi driver(amlvideo is completely base on vivi) get
me same cpu load

it looks like memcpy isn't cached or something but I don't know how to
identify problem
Any idea how to identify this problem.

On Mon, Apr 8, 2013 at 2:46 PM, Hans Verkuil <hverk...@xs4all.nl> wrote:
> On Mon April 8 2013 14:42:32 Michal Lazo wrote:
>> Hi
>> 720x576 RGB 25, 30 fps and it take
>>
>> 25% cpu load on raspberry pi(ARM 700Mhz linux 3.6.11) or 8% on x86(AMD
>> 2GHz linux 3.2.0-39)
>>
>> it is simply too much
>
> No, that's what I would expect. Note that vivi was substantially improved 
> recently
> when it comes to the image generation. That will be in the upcoming 3.9 
> kernel.
>
> This should reduce CPU load by quite a bit if memory serves.
>
> Regards,
>
>         Hans
>
>>
>>
>>
>>
>> On Mon, Apr 8, 2013 at 9:42 AM, Peter Senna Tschudin
>> <peter.se...@gmail.com> wrote:
>> > Dear Michal,
>> >
>> > The CPU intensive part of the vivi driver is the image generation.
>> > This is not an issue for real drivers.
>> >
>> > Regards,
>> >
>> > Peter
>> >
>> > On Sun, Apr 7, 2013 at 9:32 PM, Michal Lazo <michal.l...@mdragon.org> 
>> > wrote:
>> >> Hi
>> >> V4L2 driver vivi
>> >> generate 25% cpu load on raspberry pi(linux 3.6.11) or 8% on x86(linux 
>> >> 3.2.0-39)
>> >>
>> >> player
>> >> GST_DEBUG="*:3,v4l2src:3,v4l2:3" gst-launch-0.10 v4l2src
>> >> device="/dev/video0" norm=255 ! video/x-raw-rgb, width=720,
>> >> height=576, framerate=30000/1001 ! fakesink sync=false
>> >>
>> >> Anybody can answer me why?
>> >> And how can I do it better ?
>> >>
>> >> I use vivi as base example for my driver
>> >> --
>> >> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> >> the body of a message to majord...@vger.kernel.org
>> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> >
>> >
>> >
>> > --
>> > Peter
>>
>>
>>
>>



-- 
Best Regards

Michal Lazo
Senior developer manager
mdragon.org
Slovakia
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to