This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to share texture memory between CPU/GPU for firefly's/rk3288 fbdev Mali-T764

I got the hardware video decoder working on my firefly/rk3288. I can blit the yuv/nv21 output frame to rgb frame memory using fireflys dedicated 2d acceleration hardware. All I need right now is a memory pointer, pointing directly to the texture memory, in order to use the decoded video frame in shaders. In android I would create a GraphicBuffer object and give it to eglCreateImageKHR() and use glEGLImageTargetTexture2DOES. Right now I use glTexSubImage2D to copy and I get about 12 fps for 1920x1080 frames, too slow for showing a movie.

What is the best way to do this for firefly linux 3.10 with fbdev mali t760 driver? How can I simply get a pointer sharing CPU/GPU texture memory? And is there maybe some sample code available?


Right now I stuck and waiting for X11 mali drivers that support XCreatePixmap that could hopefully bring me further. My goal is XBMC, mplayer, ... running on linux on firefly.


Any help would really be appreciated! TNX!


Mac


Background, see:

accelerated video / video processor (VPU) running on linux on RK3288 / firefly - FreakTab.com

Parents
  • Hi,

    In that case that's probably the format you want:

    #define NV12_BT709_WIDE_FORMAT 0x0000000C01028A88
    

    When you sample your texture in GLES you obtain RGB.

    The 10 bit variant is not supported by T760 I'm afraid.

    Regarding dma_buf: please ignore the method calls, they are just local methods from the piece of code I created the example from. (I'll edit my previous comment to remove them).

Reply
  • Hi,

    In that case that's probably the format you want:

    #define NV12_BT709_WIDE_FORMAT 0x0000000C01028A88
    

    When you sample your texture in GLES you obtain RGB.

    The 10 bit variant is not supported by T760 I'm afraid.

    Regarding dma_buf: please ignore the method calls, they are just local methods from the piece of code I created the example from. (I'll edit my previous comment to remove them).

Children