Make it secure

Mesa Generic Buffer Management (GBM)

Sep 162016


GBM is an minimalist API which provides a mechanism for allocating buffers for graphics rendering tied to Mesa. GBM is intended to be used as a native platform for EGL on drm. The handle it creates can be used to initialize EGL and to create render target buffers.


EGL/GBM does not support Pbuffers and Pixmaps.

Off-screen surface should be created by invocation of eglCreateWindowSurface and it would be always off-screen since GBM does not provide window management.

If you want to move it to the display you would need to use kernel KMS API.

Basic code

There is a simple example of application using DRM, GBM and EGL for initialization and cleanup of graphics state.

#include <stdlib.h>
#include <assert.h>

#include <fcntl.h>
#include <unistd.h>

#include <EGL/egl.h>
#include <EGL/eglext.h>

#include <gbm.h>

int main()
    assert( eglBindAPI( EGL_OPENGL_API ) == EGL_TRUE );

    int fd = open("/dev/dri/card0", O_RDWR);
    struct gbm_device * gbm = gbm_create_device( fd );
struct gbm_surface * gbm_surf = gbm_surface_create( gbm, 256, 256, GBM_FORMAT_XRGB8888, GBM_BO_USE_RENDERING); EGLDisplay dpy = eglGetPlatformDisplayEXT( EGL_PLATFORM_GBM_MESA, gbm, NULL ); eglInitialize( dpy , NULL , NULL ); EGLConfig config; EGLint n_of_configs; assert( eglGetConfigs( dpy , &config , 1 , &n_of_configs ) == EGL_TRUE ); EGLSurface srf = eglCreatePlatformWindowSurfaceEXT( dpy, config, gbm_surf, NULL ); assert( srf != EGL_NO_SURFACE ); EGLContext ctx = eglCreateContext( dpy , config , EGL_NO_CONTEXT , NULL ); assert( ctx != EGL_NO_CONTEXT ); assert( eglMakeCurrent( dpy , srf , srf , ctx ) == EGL_TRUE ); eglDestroySurface( dpy , srf ); eglDestroyContext( dpy , ctx ); eglTerminate( dpy ); gbm_device_destroy( gbm ); close( fd ); return EXIT_SUCCESS; }


  1. EGL_MESA_platform_gbm

How to build Android 5.1 for x86_64

May 142016

Dear Visitor,

This post is intended to sum up basic steps to produce own bootable image for Android 5.1 on x86_64 system.

$ mkdir android-x86
$ cd android-x86
$ repo init -u git:// -b lollipop-x86
$ repo sync -c

In the end of synchronization you would have Android tree with all necessary packages needed to build Android 5.1.

To prepare build environment you would need to do:

. build/

Now if you want to construct bootable iso image you would need to run:

make -j4 iso_img TARGET_PRODUCT=android_x86_64

-j4 could be replaced with relevant number of CPUs on your system.

Best regards,



Android Network 5+ vs 4+

May 142016

Dear Visitor,

By this post we are starting new company blog regarding Android OS specific tricks.

The first theme is related to network configuration.

Android 4+ static network configuration

First of all set the IP for device and GW:

ifconfig DEV [IP] netmask [NETMASK]
route add default gw [GATEWAY] dev DEV

Next DNS settings:

setprop net.eth0.dns1
setprop net.eth0.dns2

Android 5+ specifics

To be able to reach any external network resource you would need:

ip rule add from all lookup main

 Best regards,


Product development stage 2

May 122016

Dear Visitor,


The project step by step growing.

Virtual HW is considered as the main reasonable goal of the second product development stage.

In the end of this stage we want to provide native user experience avoiding all known disadvantages of secure virtualization usage.

One of our goals is to make project introduction at Embedded Linux Conference, we are planning to give a nice demo and share our filling of SeVirt future.


Best regards,


Product development stage 1

Dec 282015

Dear Visitor,

POC stage of the project is done. We have working platform with a simple vendor HW migration strategy. During implementation we got many problems as from HW as from SW and now we've big baggage of knowledge as Lessons learnt.

Nevertheless I'd consider that POC stage was a real success of our small team.

Now I'd like to announce first product development stage. We have defined one of high-end smartphones as a main goal of this stage. More details about HW platform, software stack improve and other we are going to publish every 2 weeks.

If you have any questions about platform or would like to get access to our demo materials please do not hesitate to contact to me. Also you could find our project development plan at What is SeVirt? page.

Best regards,




Rolling out...

Oct 252015

Dear Visitor,

Today I'd like to announce that we have finally completed implementation of POC. It works and gives expected results.

We are in time and executing in accordance with roadmap.

The official introduction and platform operation screenshots coming soon...

Best wishes,




Powered by SeVirt