Hardware acceleration on Chromebook

I think that most asked question about Chromebook in last months was about hardware acceleration. So let’s write something about it.

OpenGL ES

There is a driver for OpenGL ES for Samsung Exynos5 Dual cpu present in Chromebook. But there are two versions of it: Week35 and Week45. Both require different kernel versions.

Ubuntu 13.04 has 3.4.0-5 kernel package which was built from R23 kernel branch. Week35 OpenGL ES driver works with it and you have to grab it from ChromeOS (but maybe it got updated there already).

I still have to find time and get R25 (or R26 or R27) kernel working so we could upgrade to Week45 driver. This one is available in ChromeOS as well (beta or dev).

Where are my packages?

There were packages which provided OpenGL ES driver binaries (week45). I removed them due to license issues as it looks like Samsung bought Mali T604 license from ARM Ltd. and got it working with Exynos5 Dual. Then they sub licensed it to Google for use with ChromeOS.

So Samsung does not distribute the driver — Google does. And even when they give tarball with files there is no license in it — just standard “Google Terms of Service” note.

No redistribution license == no packages. Sure, someone can make “chromebook-opengles-driver-installer” like package which would grab binaries from ChromeOS (I did such for week35) or will fetch them from network. Feel free to do it — you can use my chromebook-mali-driver repository as a base. Once you will get it working I can put it into Samsung Chromebook PPA.

Multimedia decoding

Other thing is hardware accelerated multimedia decoding (maybe also encoding). Under ChromeOS it was done with OpenMAX stuff. Google even had some binaries available but they crashed badly under Ubuntu.

How situation looks today? No idea as I did not had time for Chromebook stuff in last months.

11 thoughts on “Hardware acceleration on Chromebook

  1. Rohan Garg

    Hi Marcin I have recently started working on getting Kubuntu running on the Nexus 10. The work is still in its initial stages since the stock android kernel config + an Ubuntu armhf initrd don’t work. But, my question is aimed towards the graphics stack.

    Once I get a minimal rootfs up, I was planning to just swap out the Ubuntu libgles with the libgles_Mali.so that Google distributes on their drivers page and install the xf86-arm-soc driver to get graphics to work.

    Any ideas if that will work ? And won’t a similar approach work for the chrome book ?

    1. Andy Halstead

      Maybe this is a stupid question, but where and how does Google distribute the driver exactly?

      I have a chroot running X with fbdev but I don’t understand what I need to copy from ChromeOS so that the xf86-video-armsoc driver will work…

  2. Pingback: Accelerazione hardware sui Chromebook con Ubuntu

  3. bogdan

    Hi! I am planning on buying one of these (Chromebook). Are there any drawbacks besides the hardware acceleration if running Linux, instead of Chrome OS. I just want a small Linux machine, for everyday use (except video processing and stuff like that), but I would still want it to run smooth.

  4. bogdan

    forgot to ask about the possibility to use an USB 3G dongle? does it output enough juice for that? i want to buy a cheaper WiFi version

  5. Damion Yates

    I’d quite like to run mythfrontend on ChromeOS or Chrubuntu or a hybrid of the two, does the arm based samsung have mpeg2 decoding h/w support or would it be fast enough for basic PAL resolution decoding anyway, especially if the display is accelerated in the X server?

    I have chrooted in to my chrubuntu filesystem from ChromeOS on the arm based chromebook after bind mounting /tmp/.X11-unix/ so I had the correct X authentication. I was able to run xterm and xeyes* but not able to run any OpenGL stuff, is this a matter of linking against specific OpenGLES libs or are patches to these apps needed? I also don’t know how I’d make use of any mpeg2 decoding h/w support if this device has any, would that be a feature of various apps like xbmc/mythfrontend and I’d have to rely on them supporting the right Google specific binary drivers?

    *This didn’t work very well, the window manager ChromeOS has seems very abrasive and unfriendly to arbitrary X apps. I also tried starting the matching X server on an alternate tty but it just locked up, do you know what I need to run to start a bare X server that I can throw X apps to without the window manager and make use of the accelleration?

  6. Patola

    Marcin, I apologize if that is asking too much of you, but since I do not know exactly to which files you are referring to, would you be able to make a quick step-by-step saying which drivers to copy and from where to where?

    I have chrubuntu installed on the external SD card, so I guess the source files are on /dev/mmcblk0.

    I’ve looked into your repository and tried to figure out, the best I could come up with is the content of the control file:

    debian/ld.so.conf usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libEGL.so.1 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libEGL.so.1.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv1_CM.so.1 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv1_CM.so.1.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv2.so.2 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libGLESv2.so.2.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libmali.so.0 usr/lib/arm-linux-gnueabihf/mali-gles/ lib/libmali.so.0.0.45 usr/lib/arm-linux-gnueabihf/mali-gles/

    So I guess I should try and copy these files from the chromeos partition? And only these files? Should I also uninstall libgles2-mesa / libgles1-mesa or something?

Comments are closed.