does rpmsg have zero copy shared memory support

181 views
Skip to first unread message

Kiran Chandramohan

unread,
Jun 26, 2012, 10:11:19 AM6/26/12
to panda...@googlegroups.com
hi,

Would like to know whether rpmsg supports zero-copy shared memory. Through which i can pass an array(by just providing its address) from the host processor to the remote processor and perform some computation.

If this support is available, please point me to some sample code too.

Thanks,
--Kiran

Nicolas Dechesne

unread,
Jun 26, 2012, 11:53:20 AM6/26/12
to panda...@googlegroups.com
yes. see our DCE video test app, obviously there is not buffer copy of
the video and bitstream buffers

https://github.com/robclark/omapdrmtest/blob/master/viddec3test.c

Kiran Chandramohan

unread,
Jun 26, 2012, 11:56:00 PM6/26/12
to panda...@googlegroups.com
hi ndec,

Thanks for the quick reply.

I saw the function dce_alloc which does some memory allocation. dce_alloc has a function which converts from Virtual to Physical address and assigns it as the ducati address. Is this the way to do pass memory address from host processor to remote processor ? If it is so, is it dependent on the availability of syslink3 userspace libraries and tilermanager ? Are these available for syslink3 ?

Sorry if I am making some naive mistake here.

--Kiran

Nicolas Dechesne

unread,
Jun 27, 2012, 4:38:33 AM6/27/12
to panda...@googlegroups.com
On Wed, Jun 27, 2012 at 5:56 AM, Kiran Chandramohan
<kirancha...@gmail.com> wrote:
> I saw the function dce_alloc which does some memory allocation. dce_alloc
> has a function which converts from Virtual to Physical address and assigns
> it as the ducati address. Is this the way to do pass memory address from
> host processor to remote processor ? If it is so, is it dependent on the
> availability of syslink3 userspace libraries and tilermanager ? Are these
> available for syslink3 ?

that was the case in libdce for syslink2. you can checkout the branch
'rpmsg' in libdce to get the new implementation which works with the
viddec3test that I have sent earlier.

with rpmsg (the new official name for syslink3) , DCE is more of a
kernel driver now since rpmsg 'API' is a kernel interface. so all
happens in the kernel that also has the tiler driver (in
./drivers/staging/omapdrm).

we still have a small user space libdce to provide a 'user space API',
see libdce.c in libdce tree (branch rpmsg). the omapdce driver can be
found in the kernel in drivers/staging/omapdce.

and the libdrm OMAP APIs can be found in the upstream libdrm,
http://cgit.freedesktop.org/mesa/drm

Kiran Chandramohan

unread,
Jul 24, 2012, 6:27:08 PM7/24/12
to panda...@googlegroups.com
I am not able to fully follow the viddectest3 example that you have provided. I am not used to video or dce and not able to distinguish between the portion of code that implements the zero copy shared memory support and those which are for video/system processing.

Could you briefly mention how the this zero copy shared memory support is implemented ? Or point me to the portion of the code which i should be looking at.

I suspect that i might be asking for too much here.

--Kiran
Reply all
Reply to author
Forward
0 new messages