Re: Give A directFB surface to EGL
Albert Freeman <[email protected]>
| Newsgroups | gmane.comp.video.mesa3d.user |
|---|---|
| Message-ID | <CAHD8uZOC-Pm_fyoqAbWsNBgY2UkWJH-7_9YWYQCZVrLrgqvk5w@mail.gmail.com> |
On 22 October 2015 at 19:19, 刘涛 <[email protected]> wrote: > 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. > > > > Oh sorry, it does seem DirectFB can be used with EGL (I have never used DirectFB before and the information I found implied that it would be tricky to interface with EGL). What do you mean by debug? Display the framebuffer (drawn on your embedded board) on your PC? _______________________________________________ mesa-users mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-users