EMGD-Community / intel-binaries-linux

Binaries and source code published by Intel®
https://thopiekar.eu:5443/EMGD
Other
37 stars 11 forks source link

GL ES 2.0, GBM, and EGL without XServer #54

Open CrypticRage opened 5 years ago

CrypticRage commented 5 years ago

Hey All:

I'm doing maintenance work on an embedded system with an Atom Z530 in it. A few years ago I put together a new system image and BSP for the device based on Yocto 1.8 (dizzy). I had to take the reference BSP that Intel created for a previous version of Yocto (danny) and basically make it work in dizzy. This was mostly driven by a need for hardware accelerated 3D graphics (OpenGL ES 2.0, specifically). By the time dizzy came around, Intel had abandoned the EMGD driver in their yocto layer and recommended the mainline gma500 driver (which, of course, has no hw 3D support).

I'm trying to get a new BSP working for Yocto 2.1 (krogoth), which uses a 4.4.26-based linux kernel. The source code for the EMGD drm kernel driver that you guys are maintaining here compiles and loads as a module just fine. There's one catch...I'd really like to ditch XServer, but the test app I'm trying to run is failing. Here's the rendering path:

qt5-opengles2-test (simple Qt test app) Qt 5.6.3 (EGL backend based on libgbm) libemgdPVR2D_GBMWSEGL.so.1.5.15.3226 (included with the Meego_Wayland user space driver) libgbm.so.1.5.15.3226 (included with the Meego_Wayland user space driver) libEMGD2d.so.1.5.15.3226 (included with the Meego_Wayland user space driver) libemgdsrv_um.so.1.5.15.3226 (included with the Meego_Wayland user space driver) libdrm.so.2 (user space drm library) emgd-drm kernel driver

This is the error I'm getting when I run the test app:

emgd_dc.c --> [EMGD] GetDCBufferAddr() HAL not configured.

I did a bit of debugging and found that the dispatch table for the rendering context is empty, so the following test passes:

context->dispatch.gmm_get_page_list == NULL

Do you guys know of any way to get ES 2.0 running with EMGD WITHOUT using XServer? Is X required to init the HAL? Can I add the HAL init code to the module_init() function manually?

The funny thing is I thought about using Wayland, but the rendering path for Wayland seems to depend on a library that isn't even included in the Meego_Wayland driver:

libemgdPVR2D_WAYLANDWSEGL.so.1.5.15.3226: linux-gate.so.1 libEMGD2d.so libwayland-client.so.0 libwayland-egl.so.1 libwayland-emgd.so.1 ==> this is nowhere :) libdl.so.2 libc.so.6 /lib/ld-linux.so.2

Thanks very much for the help. :) -Erik

thopiekar commented 5 years ago

Hey Erik,

I never ran the driver without X, but you can find your library in the tizen package: image

Additionally, I can recommend reading Intel's documentation. I guess it is the best source for all the knowlegde you need and still can get.

CrypticRage commented 5 years ago

Thanks for the info. I gave up and shoved the old Xserver in the image. :)

mirh commented 4 years ago

https://lore.kernel.org/patchwork/cover/1149321/ mentions weston? It's scheduled to be pulled with drm-misc for 5.5