This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

GPGPU on OMAP3530 without framebuffer

Other Parts Discussed in Thread: OMAP3530

Hello,

I'm trying to use the OMAP3530's GPU, but I've some problems.
My final device does not have any screens, so I can't load the omaplfb module in the kernel. Here is what I've done:

First, I downloaded the Graphics_SDK_setuplinux_4_06_00_01_BinOnly.bin package, then I installed it.
Secondly, I compiled the  package:

make all OMAPES=3.x BUILD=release

I got the three modules:

  •  bufferclass_ti.ko
  • omaplfb.ko
  • pvrsrvkm.ko

I successfully loaded the bufferclass_ti and the pvrsrvkm modules. But, when I try to load the omaplfb module, it does not work:

root@igep0020:~/gpu# dmesg

[ 6945.295196] omaplfb: Unknown symbol fb_blank (err 0)
[ 6945.300567] omaplfb: Unknown symbol fb_set_var (err 0)
[ 6945.317932] omaplfb: Unknown symbol registered_fb (err 0)
[ 6945.324584] omaplfb: Unknown symbol fb_pan_display (err 0)
[ 6968.406066] omaplfb: Unknown symbol fb_blank (err 0)
[ 6968.411987] omaplfb: Unknown symbol fb_set_var (err 0)
[ 6968.417388] omaplfb: Unknown symbol registered_fb (err 0)
[ 6968.423889] omaplfb: Unknown symbol fb_pan_display (err 0)
[ 6991.665283] omaplfb: Unknown symbol fb_blank (err 0)
[ 6991.671203] omaplfb: Unknown symbol fb_set_var (err 0)
[ 6991.676605] omaplfb: Unknown symbol registered_fb (err 0)
[ 6991.683135] omaplfb: Unknown symbol fb_pan_display (err 0)

How can I emulate a framebuffer on my target ?

Can I do GPGPU Programming without any framebuffer (with OpenCL for example) ?

Thanks! :)

  • You should use the pixmap option (FBDev=0) in build. Refer the Getting started guide for details. OpenCL is not supported on the device you mention. 

  • Hello,

    Thank's for your answer.

    I've followed this guide: http://processors.wiki.ti.com/index.php/Graphics_SDK_Quick_installation_and_user_guide 

    Then:

    • make BUILD=release FBDEV=no SUPPORT_XORG=0 all
    • I've copied all the shared objects and the binaries
    • I've inserted all the modules in the kernel with depmod
    But, when I'm executing the gles1test1 binary, I get:
    root@igep0020:~/sgx/sample# ./gles1test1 
    'eglInitialize' returned egl error 'EGL_BAD_ALLOC' (0x3003)
    I think I missed something, but I can't see it. Have I to rebuild the kernel with the framebuffer enabled ? I think I don't have to since omapfb uses the CMEM module if FBDEV=0, but I'm not sure ... :) 
    EDIT:
    Well, in fact I still have the same error as before. When I insert the omapfb module, dmesg prints:
    [   84.317016] cmemk initialized
    [ 84.342651] DSPLINK Module (1.65.00.03) created on Date: Dec 13 2011 Time: 16:38:02
    [ 333.669250] omaplfb: Unknown symbol fb_blank (err 0)
    [ 333.674835] omaplfb: Unknown symbol fb_set_var (err 0)
    [ 333.680206] omaplfb: Unknown symbol registered_fb (err 0)
    [ 333.686676] omaplfb: Unknown symbol fb_pan_display (err 0)
  • Can the log of gfx_check be attached ?

  • Hi,

    FBDEV=no option is supported on 387x/389x devices only. This was done/implemented on request basis from a customer & on OMAP35xx devices there was no such request(using without framebuffer) so far .Please see 4th point in the graphics SDK getting strated guide (below link)

    http://processors.wiki.ti.com/index.php/GSG:_AM35x_and_OMAP35x_Rebuilding_the_Software#Building_the_OMAP35x.2F387x.2F389x_Graphics_Demo_Software

    If required you can make the changes in code present under GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux by refering to GFX_Linux_KM/services4/3rdparty/dc_ti81xx_linux.

    grep for FBDEV in GFX_Linux_KM/services4/3rdparty/dc_ti81xx_linux & implement similar changes in GFX_Linux_KM/services4/3rdparty/dc_omapfb3_linux  folder.

    Please let us know if you require any assistance/clarifications in this regards.

    Thanks,

    Prathap.

     

     

     

  • Hi,

    Did you try with the above suggested changes?

    Also attached is the dc_omapfb3_linux code 8358.dc_omapfb3_linux.tar.gzupdated with changes mentioned above.

    Please replace the existing dc_omapfb3_linux folder under GFX_Linux_KM/services4/3rdparty of Graphics SDK release with the attached one & then you can build the graphics SDK release with FBDEV=no.

    After this to test it, you can use the attached sample app 2061.sampleTwoTriangles.tar.gzthat draws 2 triangles.

    Procedure to run sample app -

    1. Ensure that omap-demo script is run and the graphics drivers(pvrsrvkm.ko, omaplfb.ko) have been inserted, initialized successfully.

    2. Insmod cmem.ko that you would have built.

    3. Run attached sample app as ./sampleTwoTriangles 2 800 600

    Logs from our execution for reference -

    root@am37x-evm:/opt# insmod cmemk.ko phys_start=0x88000000 phys_end=0x8FFFFFFF p
    ools=4x2097152,4x1048576,1x117440512 allowOverlap=1
    [ 1009.342315] CMEMK module: built on Apr 13 2012 at 14:55:34
    [ 1009.348175]   Reference Linux version 2.6.37
    [ 1009.352661]   File /home1/prathap/cmem/src/module/cmemk.c
    [ 1009.364044] allocated heap buffer 0xca000000 of size 0x400000
    [ 1009.370178] cmemk initialized

    root@am37x-evm:/opt# ./sampleTwoTriangles 2 800 600
     Modified: March 23, 2011
     inSurfaceType: 2
     inWidth: 800
     inHeight: 600
     eglGetDisplay
     eglInitialize
     eglGetConfigs
     eglChooseConfig
     n_cfgs: 2
     SGX_SURFACE_TYPE_PIXMAP_32
     pixmapwidth: 800
    pixmapHeight: 600
    Physical address = 8fe00000

    // Afrer you see above print, press ctrl+c

    Writing pixmap data to file pixmap.raw
     eglMakeCurrent EGL_NO_SURFACE
     eglDestroyContext
     eglDestroySurface
     eglTerminate
     DONE

    When you run the sample app & press ctrl-c, you will get the output -pixmap.raw file. This can be viewed with any image viewer(For example IrfanView) that supports viewing raw RGB files. Use the setting of 800x600 and 32 bpp while viewing the pixmap.raw file.

    Please mark this as Verified answer once you confirm the above.

    Thanks,

    Prathap.

  • Hi,

    Thank's for working on my problem!

    I've re-installed the SDK then put your modification (I already modified the files, but I prefer to use your solution). Secondly I compile the SDK:

    make BUILD=release OMAPES=5.0 FBDEV=no SUPPORT_XORG=0 all

    Then, installed it on my target's file system:

    make OMAPES=5.0 install

    But I get the following error:

    WARNING: /media/rootfs/lib/modules/2.6.35.11/extra/omaplfb.ko needs unknown symbol fb_blank
    WARNING: /media/rootfs/lib/modules/2.6.35.11/extra/omaplfb.ko needs unknown symbol fb_set_var
    WARNING: /media/rootfs/lib/modules/2.6.35.11/extra/omaplfb.ko needs unknown symbol registered_fb
    WARNING: /media/rootfs/lib/modules/2.6.35.11/extra/omaplfb.ko needs unknown symbol fb_pan_display

    What do you think ?
    I'll try to keep on working on that, but I think the module will not be able to be loaded by the kernel ... 

  • Hi again,

    I modified the "omaplfb_linux.c" and try to avoid calling "fb_*" functions. You can find a patch of my modification here: http://dl.dropbox.com/u/28058500/omaplfb_linux.patch
    Thanks to these modifications, I'm able to load the different modules! I generated the raw file, and it works!

    You can find this image here: http://dl.dropbox.com/u/28058500/pixmap.raw

    Could you give me the source of your example please ?

    Thank you very much for your help! :)

  • You are welcome. Please find the source of the sample application attached5287.sampleTwoTriangles.tar.gz. It has a README which explains how to build & run.

    Thanks,

    Prathap.