AnsweredAssumed Answered

Problem using AMD Pinned Memory with a Capture Card

Question asked by rmuss on Feb 2, 2013
Latest reply on May 28, 2013 by ribalda

I'm writing a linux application that captures video frames with a  PCIE 1080p60 capture card and transfers them to a texture buffer on an AMD GPU.  The incoming frames are DMA'd directly to physical memory obtained via the linux API pci_alloc_consistant().  This is performed in a kernel module. 


The user space application maps the physical-space frame buffers into app memory using  mmap(). If I copy the mmap'd buffers to a malloced buffer I have no problem using pinned memory.  However, I need to avoid this frame copy altogether.  The problem is that if I pass the address of the mmap'd buffer to glBufferData() the fglrx driver complains that it cant' "map into GARP space".

Here's a snippet:


        glBufferData((GLenum)GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, m_nSize, m_pData, GL_STREAM_DRAW);

        checkGLErrors(" ");


from dmesg:


  [fglrx:MCIL_LockMemory] *ERROR* Could not lock memory into GART space 


So the question is, how can I use pinned memory to transfer data directly from physical memory allocated via pci_alloc_consistant() to a GPU texture buffer without doing any memcopy()s?




Message was edited by:


Ronald M  Here is the error I get when calling glBufferData on the mmap'd physical memory: [fglrx:MCIL_LockMemory] *ERROR* Could not lock memory into GART space