Re: Give A directFB surface to EGL

刘涛 <[email protected]>
Newsgroups gmane.comp.video.mesa3d.user
Message-ID <[email protected]>
Thank you very much.  My board is only support DirectFB, EGL and GLES2, and the route "DirectFB->EGL->GLES2" works good on it, but it is hard to debug on my board. So I want to program and debug the route on my PC.  Is it noway?



在 2015-10-22 16:32:58,"Albert Freeman" <[email protected]> 写道:
>On 22 October 2015 at 15:35, 刘涛 <[email protected]> wrote:
>> Hi
>>    I‘m trying to give a directFB surface to eglCreateWindowSurface(), like
>> below:
>>     //1 create Directfb Surface
>>     DFBDisplayLayerConfig dlc;
>>     DFBSurfaceDescription dsc;
>>     DFBWindowDescription dsc_w;
>>     DirectFBInit(0, NULL);
>>     DirectFBCreate(&_pDFB);
>>     _pDFB->SetCooperativeLevel(_pDFB, DFSCL_FULLSCREEN);
>>     memset(&dsc, 0, sizeof(dsc));
>>     dsc.flags  = (DFBSurfaceDescriptionFlags)(DSDESC_CAPS);
>>     dsc.caps   = (DFBSurfaceCapabilities)(DSCAPS_PRIMARY |
>> DSCAPS_DOUBLE|DSCAPS_GL);
>>     DFBCHECK(_pDFB->CreateSurface(_pDFB, &dsc, &_pDFB_surface));
>>
>>     //2 create egl surface
>>     EGLDisplay eglDisplay = EGL_NO_DISPLAY;
>>     EGLint iMajorVersion, iMinorVersion;
>>      EGLint configAttribs[] =
>>     {
>>         EGL_RED_SIZE,          8,
>>         EGL_GREEN_SIZE,      8,
>>         EGL_BLUE_SIZE,          8,
>>         EGL_ALPHA_SIZE,      8,
>>         EGL_DEPTH_SIZE,      24,
>>         EGL_STENCIL_SIZE,      8,
>>         EGL_SAMPLES,          0,
>>         EGL_SURFACE_TYPE,     EGL_WINDOW_BIT,
>>         EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
>>         EGL_NONE
>>     };
>>     EGLConfig  eglConfig  = 0;
>>     EGLint iConfigs = 0;
>>
>>     eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
>>     eglInitialize(eglDisplay, &iMajorVersion, &iMinorVersion);
>>     eglBindAPI(EGL_OPENGL_ES_API);
>>     eglChooseConfig(eglDisplay, configAttribs, &eglConfig, 1, &iConfigs);
>>     eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig,
>> (EGLNativeWindowType)_pDFB_surface, NULL);
>>
>>    But it failed and got 0x3003 error code.
>>     Any idea about that?
>> Env:
>>     Ubuntu 14..04.3, Mesa-10.1.3, DirectFB-1.7.6(use system x11)
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> mesa-users mailing list
>> [email protected]
>> http://lists.freedesktop.org/mailman/listinfo/mesa-users
>>
>You can't use EGL with DirectFB.
>DirectFB had a DirectFBGL "extension" for 3D with DirectFB that has
>apparently died.
>So you can't get 3D hardware acceleration with DirectFB.
>DirectFB uses the older fbdev legacy kernel stuff (which the
>replacement drm at least partially emulates). Although fbdev supports
>more hardware than the drm. If you are on hardware that doesn't
>support drm then the best approach I can think of is to software
>render OpenGL and then somehow obtain the texture rendered to and
>somehow send that as a 2D image with something that can draw to a
>fbdev framebuffer (such as DirectFB) (don't ask me how, ask someone
>else (best to ask on #dri-devel irc channel)). For someone like you it
>is best to use the latest git (not stable) version of mesa.
>If your hardware supports drm, your choices for 3D are:
>1. Use GL (optionally ES) & EGL & drm & gbm with mesa and without
>DirectFB (see eglkms.c demo in mesa demos and "man -k drm" and maybe
>http://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf)
>(this runs without a window system and works much like DirectFB but I
>believe you must use OpenGL (optionally ES) for 2D too (although you
>MIGHT be able to setup a hardware overlay for video)). If you are not
>using a relatively modern radeon, intel or nvidia card software
>rendering is probably the best way to go here (using softpipe (or if
>you are on x86 only: llvmpipe)).
>2. Use Wayland with EGL and mesa and without DirectFB.
>3. Use X and without DirectFB with (mesa OR proprietary drivers).
>
>How to force softpipe:
>"export GALLIUM_DRIVER=softpipe" and
>"export LIBGL_ALWAYS_SOFTWARE=1". You will need to add swrast to the
>gallium (NOT dri) mesa compile option (e.g.
>--with-gallium-drivers=swrast) and
>recompile mesa.
>
>You can also force llvmpipe with "export GALLIUM_DRIVER=llvmpipe".
>Actually "export LIBGL_ALWAYS_SOFTWARE=1" is only required if you have
>a non gallium mesa driver installed (such as the i965 intel driver).
>
>I hope I didn't forget anything.

_______________________________________________
mesa-users mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.