[Mesa-users] Give A directFB surface to EGL

Albert Freeman albertwdfreeman at gmail.com
Fri Oct 23 03:19:50 PDT 2015


On 23 October 2015 at 08:55, Albert Freeman <albertwdfreeman at gmail.com> wrote:
> On 23 October 2015 at 03:18, 刘涛 <liutao586 at 163.com> wrote:
>> I didn't have  “ (!) Direct/Modules: Unable to dlopen“ error,  did you start
>> your program with "sudo"?  and I also have have some errors, but directFB
>> test(attachment) can pass on my pc.  You may alse need direcfbrc file to
>> configure directFB, and init it with command 'echo -e
>> "mode=1366x768\nwm=default\ndepth=32\nsystem=x11" > ~/.directfbrc'.
>>
>>
>> 在 2015-10-23 05:24:32,"Albert Freeman" <albertwdfreeman at gmail.com> 写道:
>>>On 22 October 2015 at 15:35, Albert Freeman <albertwdfreeman at gmail.com>
>>> wrote:
>>>> On 22 October 2015 at 15:31, Albert Freeman <albertwdfreeman at gmail.com>
>>>> wrote:
>>>>> On 22 October 2015 at 12:25, 刘涛 <liutao586 at 163.com> wrote:
>>>>>> Attachment  need approval and main output see below:
>>>>>>
>>>>>> Build options:
>>>>>>   Version                   1.7.6
>>>>>>   Linux powered             yes
>>>>>>   Install prefix            /usr
>>>>>>   Config files in           /usr/etc
>>>>>>   Build shared libs         yes
>>>>>>   Build static libs         no
>>>>>>   Module directory          ${exec_prefix}/lib/directfb-1.7-6
>>>>>>   CC                        gcc
>>>>>>   CXX                       g++
>>>>>>   LD                        /usr/bin/ld -m elf_x86_64
>>>>>>   CPPFLAGS                  -D_REENTRANT
>>>>>>   CFLAGS                    -Wall -Wstrict-prototypes
>>>>>> -Wmissing-prototypes
>>>>>> -Wno-strict-aliasing -Werror-implicit-function-declaration -O3 -g2
>>>>>> -ffast-math -pipe  -D_GNU_SOURCE  -std=gnu99
>>>>>> -Werror-implicit-function-declaration
>>>>>>   CXXFLAGS                  -Wall -Wno-strict-aliasing -std=c++0x -g
>>>>>> -O2 -O3
>>>>>> -g2 -ffast-math -pipe  -D_GNU_SOURCE
>>>>>>   LDFLAGS
>>>>>>   LIBS                      -ldl -lrt -lpthread
>>>>>>   DYNLIB                    -ldl
>>>>>>   RTLIB                     -lrt
>>>>>>   THREADFLAGS               -D_REENTRANT
>>>>>>   THREADLIB                 -lpthread
>>>>>>
>>>>>> Misc options:
>>>>>>   Multi Application Core    no
>>>>>>   Fusion Kernel Device      yes
>>>>>>   Fusion message size       16384
>>>>>>   Fluxed args size          1024
>>>>>>   One (IPC)                 no
>>>>>>   Voodoo (network support)  no
>>>>>>   Pure Voodoo (net only)    no
>>>>>>   DiVine (virtual input)    no
>>>>>>   FusionDale                no
>>>>>>   Debug supported           yes
>>>>>>   Debug enabled             no
>>>>>>   Trace support             no
>>>>>>   MMX support               yes
>>>>>>   SSE support               yes
>>>>>>   GCC Atomics usage         no
>>>>>>   Network support           yes
>>>>>>   Include all strings       yes
>>>>>>   Software Rendering        yes
>>>>>>   Smooth SW Scaling         no
>>>>>>   Dithering                 none
>>>>>>   Dithering 565             none
>>>>>>   zlib compression          no
>>>>>>   Using setsockopt          yes
>>>>>>
>>>>>> Building Tests              no
>>>>>> Building Tools              yes
>>>>>>
>>>>>> Building System Modules:
>>>>>>   Linux FBDev support       yes
>>>>>>   Generic /dev/mem support  yes
>>>>>>   Mesa/DRM/KMS support      yes                -I/usr/include/libdrm
>>>>>> -lGLESv2 -lEGL -ldrm -lgbm
>>>>>>   DRM/KMS support           no
>>>>>>   PVR2D                     no
>>>>>>   EGL                       no                 -I/usr/include/libdrm
>>>>>> -lGL
>>>>>> -lEGL
>>>>>>   X11 support               yes                   -lX11 -lXext
>>>>>>   X11/VDPAU support         no
>>>>>>   OSX support               no
>>>>>>   SDL support               no
>>>>>>   VNC support               no
>>>>>>
>>>>>> Building Window Manager Modules:
>>>>>>   Default                   yes
>>>>>>   UniQuE                    no
>>>>>>   SaWMan                    no
>>>>>>
>>>>>> Building Image Provider Modules:
>>>>>>   GIF                       yes
>>>>>>   JPEG                      yes                 -ljpeg
>>>>>>   PNG                       yes
>>>>>> -I/usr/include/libpng12
>>>>>> -lpng12
>>>>>>   Imlib2                    no
>>>>>>   PNM                       yes
>>>>>>   SVG                       no
>>>>>>   BMP                       yes
>>>>>>   WEBP                      no
>>>>>>   JPEG2000                  no
>>>>>>   MPEG2                     yes
>>>>>>   TIFF                      no
>>>>>>
>>>>>>
>>>>>>
>>>>>> Building Video Provider Modules:
>>>>>>   GIF                       yes
>>>>>>   Video4Linux               yes (v2: no)
>>>>>>   MNG                       no
>>>>>>   Gstreamer                 no (v1: no)
>>>>>>     with FusionSound        no
>>>>>>   AviFile                   no
>>>>>>   Flash                     no
>>>>>>   Libmpeg3                  no
>>>>>>   OpenQuicktime             no
>>>>>>   Xine                      no
>>>>>>   Xine/VDPAU                no
>>>>>>   Swfdec                    no
>>>>>>   FFmpeg                    no
>>>>>>
>>>>>> Building Font Modules:
>>>>>>   FreeType2                 yes
>>>>>> -I/usr/include/freetype2
>>>>>> -lfreetype
>>>>>>   LinoType                  no
>>>>>>   Default font              yes
>>>>>>
>>>>>> Building FusionSound        no
>>>>>>
>>>>>> Building Graphics Drivers:
>>>>>>   3Dfx Voodoo               yes
>>>>>>   ATI Mach64                yes
>>>>>>   ATI Rage 128              yes
>>>>>>   ATI Radeon                no
>>>>>>   Cirrus EP9X               yes
>>>>>>   Intel i810                yes
>>>>>>   Intel i830                yes
>>>>>>   Matrox                    yes
>>>>>>   NeoMagic                  yes
>>>>>>   NSC Geode                 yes
>>>>>>   nVidia                    yes
>>>>>>   PVR2D                     no
>>>>>>   PXA 3xx                   yes
>>>>>>   Renesas R-Car GP2D        no
>>>>>>   Renesas SH7722/SH7723     no
>>>>>>   S3 Savage                 no
>>>>>>   SiS 315                   yes
>>>>>>   TI Davinci                no
>>>>>>   TI OMAP                   no
>>>>>>   TVIA CyberPro             no
>>>>>>   VIA CLE266                no
>>>>>>   VIA UniChrome             no
>>>>>>   VMWare                    no
>>>>>>   VDPAU                     no
>>>>>>   --
>>>>>>   OpenGL                    yes (GLX: yes)
>>>>>>   OpenGL ES 2.0             yes (Mesa:  yes, PVR2D: no)
>>>>>>                                         -I/usr/include/libdrm
>>>>>> -DGLES2_MESA
>>>>>> -lGLESv2 -lEGL -ldrm -lgbm
>>>>>>
>>>>>>   IDirectFBGL-EGL           yes       -I/usr/include/libdrm   -lGL
>>>>>> -lEGL
>>>>>>
>>>>>> Building Input Drivers:
>>>>>>   DBox2 Remote              no
>>>>>>   DreamBox Remote           no
>>>>>>   Dynapro Touchscreen       no
>>>>>>   ELO Touchscreen           no
>>>>>>   Gunze Touchscreen         no
>>>>>>   H3600 Touchscreen         no
>>>>>>   Input Hub                 yes
>>>>>>   Joystick                  yes
>>>>>>   Keyboard                  yes
>>>>>>   Linux Input               yes
>>>>>>   LiRC                      yes
>>>>>>   MuTouch touchscreen       yes
>>>>>>   Zytronic touchscreen      yes
>>>>>>   PS/2 Mouse                yes
>>>>>>   Serial Mouse              yes
>>>>>>   SonyPI Jogdial            yes
>>>>>>   tslib                     yes                   -lts
>>>>>>   ucb1x00 Touchscreen       no
>>>>>>   WM97xx Touchscreen        yes
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> 在 2015-10-22 20:14:41,"刘涛" <liutao586 at 163.com> 写道:
>>>>>>
>>>>>> Sorry ,  add attachment for this time.
>>>>>>
>>>>>>
>>>>>> 在 2015-10-22 20:13:36,"刘涛" <liutao586 at 163.com> 写道:
>>>>>>
>>>>>> I use "./configure --prefix=/usr --enable-idirectfbgl-egl" to configure
>>>>>> DirectFB-1.7.6 and please see attachment config.log for output.
>>>>> I was really really wrong about what DirectFB can support. It uses gbm
>>>>> and therefore supports all the latest mesa hardware drivers. I have
>>>>> got a slight modification of your code (adding stuff you would already
>>>>> have setup) running on DirectFB with my r600 radeon card. I had to
>>>>> modify directfb. I did by commenting out functions to avoid a runtime
>>>>> dlopen warning that prevented stuff from working. Now to do it
>>>>> properly (I believe DirectFB is not loading function pointers for some
>>>>> EGL functions). I am not sure if it is the same issue you have though.
>>>>>
>>>>> My configuration is latest git mesa and Linux 4.2.3 and I actually had
>>>>> success with just ./configure && make -j16 && make install with
>>>>> DirectFB.
>>>> Just to make sure it is the same issue, do you have:
>>>> (!) Direct/Modules: Unable to dlopen
>>>> `/usr/local/lib/directfb-1.7-0/systems/libdirectfb_mesa_system.so'!
>>>>     --> /usr/local/lib/directfb-1.7-0/systems/libdirectfb_mesa_system.so:
>>>> undefined symbol:
>>>> in the DirectFB stdout/err log when you run your program (near the top
>>>> of the log)?
>>>Actually I did not solve the issue. I had setup a:
>>>glClearColor(0.0f, 1.0f, 0.0f, 0.0f);
>>>glClear(GL_COLOR_BUFFER_BIT);
>>>which for the first time actually cleared something for about a second.
>>>But strangely enough EGL was erroring and it was still intermittently
>>>clearing the screen.
>>>The gles2 test DirectFB provides tests functionality that has since
>>>been deleted (even though the tests are in the same repo).
>>>DirectFBGL/EGL calls:
>>>eglGetDisplay
>>>eglInitialize
>>>eglChooseConfig
>>>eglBindAPI(EGL_OPENGL_ES_API)   which is hardwired, meaning no Desktop
>>>OpenGL allowed (I just feel like noting that for some reason).
>>>etc
>>>So if you actually want to use DirectFBGL/EGL completely then I don't
>>>think your supposed to call egl functions yourself.
>>>
>>>Your program fails on
>>>eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
>>>with a EGL_BAD_NATIVE_WINDOW (I may have also seen a EGL_BAD_DISPLAY
>>>but I doubt it)
>>>of course that could be due to the infrastructure I built around it,
>>>but I doubt that.
>>>
>>>I messed around for ages doing stuff, I got a DirectFB mouse cursor
>>>appearing both in X11 and with the test app started directly from the
>>>linux console.
>>>Although I think it is a matter of getting the DirectFB calls setup
>>>right (before any egl functions are called) with X11 on PC. Of course
>>>it could be a bug in DirectFB or EGL too.
>>>
>>>Anyway, I am going to bed.
>>>
>>>You might want to use this for debugging:
>>>    EGLint eglerror = eglGetError();
>>>        switch(eglerror) {
>>>        case EGL_SUCCESS:
>>>            printf("eglGetError indicated SUCCESS\n");
>>>            break;
>>>        case EGL_BAD_NATIVE_WINDOW:
>>>            printf("eglGetError indicated BAD_NATIVE_WINDOW\n");
>>>            break;
>>>        case EGL_NOT_INITIALIZED:
>>>            printf("eglGetError indicated NOT_INITIALIZED\n");
>>>            break;
>>>        case EGL_CONTEXT_LOST:
>>>            printf("eglGetError indicated CONTEXT_LOST\n");
>>>            break;
>>>        case EGL_BAD_ACCESS:
>>>            printf("eglGetError indicated BAD_ACCESS\n");
>>>            break;
>>>        case EGL_BAD_ALLOC:
>>>            printf("eglGetError indicated BAD_ALLOC\n");
>>>            break;
>>>        case EGL_BAD_ATTRIBUTE:
>>>            printf("eglGetError indicated BAD_ATTRIBUTE\n");
>>>            break;
>>>        case EGL_BAD_CONTEXT:
>>>            printf("eglGetError indicated BAD_CONTEXT\n");
>>>            break;
>>>        case EGL_BAD_CONFIG:
>>>            printf("eglGetError indicated BAD_CONFIG\n");
>>>            break;
>>>        case EGL_BAD_CURRENT_SURFACE:
>>>            printf("eglGetError indicated BAD_CURRENT_SURFACE\n");
>>>            break;
>>>        case EGL_BAD_DISPLAY:
>>>            printf("eglGetError indicated BAD_DISPLAY\n");
>>>            break;
>>>        case EGL_BAD_MATCH:
>>>            printf("eglGetError indicated BAD_MATCH\n");
>>>            break;
>>>        case EGL_BAD_PARAMETER:
>>>            printf("eglGetError indicated BAD_PARAMETER\n");
>>>            break;
>>>        case EGL_BAD_NATIVE_PIXMAP:
>>>            printf("eglGetError indicated BAD_NATIVE_PIXMAP\n");
>>>        default:
>>>            printf("eglGetError returned an unknown EGL error\n");
>>>            break;
>>>        }
>>
>>
>>
>>
> I run everything directly as root. That draw_line.c demo works fine
> without any configuration changes.
Moving glBindAPI(EGL_OPENGL_ES_API) after eglCreateWindowSurface()
fixes an egl error.


More information about the mesa-users mailing list