SeVirt ™

Make it secure

V8 progress update

Mar 052022

Dear Visitor,

I'd be happy to announce that V8 version 1 is ready and is in internal testing.

It is planned to be available for public Beta on May 1, 2022.

There will be 3 HW platforms supported out of the box with variety of SW layout configurations.

KPI and documentation are planned to be released together with Beta package.

Best regards,

Alex

V8 introduction

Mar 222021

Dear Visitor,

Today I would like to introduce a new product called simply V8.

It is static Type 1 hypervisor for ARM64.

It relies on five pillars:

  1. Simplicity, namely core hypervisor code is below 8K LOC
  2. Predictability, all configuration is absolutely static and done at bootable image bind time
  3. Robustness, as the code follows the best coding practices and industry standards, V8 gives high resilience to handle potential error conditions
  4. Safety and security, coming from the architecture and product development lifecycle. All potential safety and security treats are transparently addressed in the design
  5. High performance, as a consequence of the pillars stated above, the V8 code gives very high boot performance and low operation expenses

Further information will be available soon.

Best regards,

Alex

Mesa Generic Buffer Management (GBM)

Sep 162016

Introduction

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.

Traits

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; }

 Reference

  1. EGL_MESA_platform_gbm

Atom

Powered by SeVirt