Contents |
1-minute video at Flickr showing 3D hardware acceleration
The video shows the OGLES "Coverflow" demo from Imagination Technologies running on the SGX540 GPU which is part of the OMAP 4430 processor that powers the Pandaboard. Coverflow requires 3D hardware acceleration, so the video shows that the PVR closed-source drivers from Imagination and TI's open source Xorg shared-object libraries work with the MeeGo userland. Just to show that the platform really is MeeGo, I'm running the Handset UX's duihome alongside the graphics demo. OpenVG, the 2D hardware-accelerated graphics suite, also works fine on Panda-MeeGo.
The demo uses the kernel and drivers from the OMAP 4 image of Ubuntu 10.10. The Ubuntu image is installed on a microSD card using TI's instructions.
MeeGo was built using this kickstart file and the 1.1.80 snapshot (just because I had that image lying around the disk) and installed on a generic Kingston 16 GB USB stick using standard methods:
[alison@bonnet]$ dmesg| grep sd [789217.011903]$ sd 33:0:0:0: [sdc] Attached SCSI removable disk [alison@bonnet]$ mkdir -p /media/meego_usb [alison@bonnet]$ sudo umount /media/meego_usb [alison@bonnet]$ sudo mkfs.ext3 -L meego_usb /dev/sdc1 [alison@bonnet]$ sudo cp -rfp meego-panda-rootfs-morepkgs/* /media/meego_usb [alison@bonnet]$ sudo mount -t ext3 /dev/sdc1 /media/meego_usb [alison@bonnet]$ ls /media/meego_usb \/ boot/ etc/ lib/ media/ opt/ root/ srv/ tmp/ var/ bin/ dev/ home/ lost+found/ mnt/ proc/ sbin/ sys/ usr/ [alison@bonnet]$
Note that the image is not bootable. It doesn't need to be for the chroot hack to work.
ps axl | grep gdm
Locate the PIDs of gdm-binary and gdm-simple-slave and kill them:
kill -TERM <gdm-binary-pid> kill -TERM <gdm-simple-slave-pid>
If you type Ctrl-Alt-F7 to return to the workspace where Ubuntu was running X and gdm-greeter, you should now see a blank screen. Type
ps axl | grep gdm
and
ps axl | grep X
just to make sure.
chroot /media/meego_usb /bin/bash
The shell prompt will change. Welcome to MeeGo!
startx&
On my system, the command took me to virtual desktop 8. To get back to the text console, type Ctrl-Alt-F2 again. You may freely change among Ubuntu text console, MeeGo text console and MeeGo GUI.
alison@ubuntu-installer:~$ echo $DISPLAY :0.0
[ 2085.776] (II) LoadModule: "dri2" [ 2085.776] (II) Loading /usr/lib/xorg/modules/extensions/libdri2.so
<more stuff omitted>
[ 2085.777] (II) LoadModule: "pvr" [ 2085.778] (II) Loading /usr/lib/xorg/modules/drivers/pvr_drv.so [ 2085.779] (II) Module PVR: vendor="X.Org Foundation" [ 2085.779] compiled for 1.9.0, module version = 1.6.3758 [ 2085.779] Module class: X.Org Video Driver [ 2085.779] ABI class: X.Org Video Driver, version 8.0 [ 2085.779] (II) pvr: Driver for PowerVR chipsets: PowerVR SGX [ 2085.779] (--) using VT number 8 [ 2085.798] (WW) Falling back to old probe method for pvr [ 2085.800] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support [ 2085.826] (II) pvr(0): Creating default Display subsection in Screen section
<more stuff omitted>
[ 2085.832] PVRPreInit: done [ 2085.832] (--) Depth 24 pixmap format is 32 bpp [ 2085.833] PVRScreenInit [ 2085.833] (II) v4l2: enabling local-alpha for /dev/video1 [ 2085.849] (II) pvr(0): [DRI2] Setup complete [ 2085.849] (II) pvr(0): [DRI2] DRI driver: pvr [ 2085.849] (II) EXA(0): Driver allocated offscreen pixmaps [ 2085.849] (II) EXA(0): Driver registered support for the following operations: [ 2085.849] (II) Solid [ 2085.849] (II) Copy [ 2085.849] (II) Composite (RENDER acceleration) [ 2085.873] (==) pvr(0): Backing store disabled [ 2085.873] (==) pvr(0): Silken mouse enabled [ 2085.873] (==) pvr(0): DPMS enabled [ 2085.873] (==) pvr(0): Direct rendering enabled [ 2085.874] PVRScreenInit: done
and so forth. The first numbers in square brackets are timestamps that will vary from run to run. Note that the log file contains errors:
[ 2085.897] (EE) AIGLX error: dlopen of /usr/lib/dri/pvr_dri.so failed (/usr/lib/dri/pvr_dri.so: cannot open shared object file: No such file or directory) [ 2085.897] (EE) AIGLX: reverting to software rendering [ 2085.897] (II) AIGLX: Screen 0 is not DRI capable
Ignore them; they are expected.
xhost +
to allow clients to connect. (Not sure at this point if this is actually necessary.)
alison@ubuntu-installer:~$ xdriinfo Screen 0: pvr
That means the pvr driver is active on the X display.
alison@ubuntu-installer:~$ eglinfo config number: 0 EGL vendor string: Imagination Technologies EGL version string: 1.4 build 1.6.16.3758 EGL extensions: EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_gl_renderbuffer_image EGL_KHR_vg_parent_image EGL_KHR_fence_sync EGL_KHR_reusable_sync EGL_IMG_context_priority EGL client APIs are: OpenGL_ES OpenVG EGL config Attributes: EGL_CONFIG_ID = 0x1
<stuff omitted>
Creating OpenGL ES 2 context.. EGL context Attributes: EGL_CONFIG_ID = 0x8 EGL_CONTEXT_CLIENT_TYPE = 0x30a0 EGL_CONTEXT_CLIENT_VERSION = 0x2 EGL_RENDER_BUFFER = 0x3038 Creating OpenVG context.. EGL context Attributes: EGL_CONFIG_ID = 0x8 EGL_CONTEXT_CLIENT_TYPE = 0x30a1
and many more pages of such fascinating stuff.
alison@ubuntu-installer:~$ /opt/GFX_Linux_SDK/OGLES2/SDKPackage/Binaries/X11/Demos/Skybox2/OGLES2Skybox2
Cool, huh?