Thank you very much Rob,
I'm going to try it now.
Just one open issue is the size of the big buffer:
In the app I cannot be sure what is the buffer size that CMEM allocated
for me, I just know that the size is at least the size that I requested.
Do I have to put the size parameter in these function the exact size
allocated by CMEM, or just the size that I use is enough?
In case I must use the size allocated by CMEM, is there a way to know
what this size is?

Thanks,
Erez


-----Original Message-----
From: Tivy, Robert [mailto:[email protected]] 
Sent: Tuesday, January 05, 2010 1:30 AM
To: Erez Kinarti; Vladimir Pantelic;
[email protected]
Subject: RE: Cmem address translation when working with Codec Engine


There is no function available to invalidate all the Memory module
virt-phys translations.

If your app structure allows it, you can call
    Memory_registerContigBuf(bigCMEMBufferVirtAddr, 258048,
CMEM_getPhys(bigCMEMBufferVirtAddr));
once, and all smaller subdivided buffers will be covered by this one
registration (or, even simpler, just call
    Memory_getBufferPhysicalAddress(bigCMEMBufferVirtAddr, 258048,
NULL);
and ignore the result, which will do the CMEM_getPhys() for you and
register it).  You can then call
Memory_unregisterContigBuf(bigCMEMBufferVirtAddr, 258048) once when
you're ready to free the CMEM buffer.  FYI, if you want to double-check
me, you can call Memory_dumpKnownContigBufsList() to display (through GT
tracing) the contig buffer list (AKA, the Memory module virt-phys
translation table).

Regards,

- Rob

> -----Original Message-----
> From: [email protected] 
> [mailto:[email protected]
> ] On Behalf Of Erez Kinarti
> Sent: Monday, January 04, 2010 9:15 AM
> To: Vladimir Pantelic; [email protected]
> Subject: RE: Cmem address translation when working with Codec Engine
> 
> Thank you Vladimir,
> But we are not able to allocate and free via CodecEngine due 
> to the structure of our application and the need to call the 
> alloc not before calling CERuntimeInit().
> 
> 
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]
> ] On Behalf Of Vladimir Pantelic
> Sent: Monday, January 04, 2010 7:09 PM
> To: [email protected]
> Subject: Re: Cmem address translation when working with Codec Engine
> 
> Erez Kinarti wrote:
> > Thanks a lot Rob.
> >
> > calling this function for each of the pointers used with 
> CodecEngine 
> > solved the problem.
> >
> > However, we need something else, some function that invalidates all
> this
> > virt->phy table and not each of the virtual pointers separately.
> >
> > Is there a way to do a full invalidate in a single call 
> without keep 
> > tracking on each of the virtual pointers?
> >
> > The reason that Memory_unregisterContigBuf it is not enough for us:
> >
> > In our system, we allocate a very big buffer from CMEM 
> (258048 bytes), 
> > but we don't call CodecEngine with a pointer to the big buffer.
> 
> You dont need to call Memory_unregisterContigBuf, just alloc 
> and free the buffers via CE and CE will know that you are 
> calling it with a smaller buffer inside a larger one that it 
> knows the translation to...
> 
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> 
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> 

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to