[Mesa-users] Give A directFB surface to EGL
Albert Freeman
albertwdfreeman at gmail.com
Fri Oct 23 01:55:27 PDT 2015
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.
More information about the mesa-users
mailing list