"The Khronos Group is a not for profit industry consortium creating open standards for the authoring and acceleration of parallel computing, graphics, dynamic media, computer vision and sensor processing on a wide variety of platforms and devices."
The Khronos Group, from the quote above is concerned with devising and setting standards for graphics and video processing, among other things. The list of standards they are involved in includes
and many others.
What relevance does this have to the RPi? Well, the RPi supports OpenGL ES, OpenVG and OpenMAX, and by the structure of the standards, EGL as well. So this is the primary source site for information about the video and graphics programming APIs used by the RPi. Having said that, it may not be the best site to learn what these APIs are - read this book instead.
"OpenGL ES is a royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems - including consoles, phones, appliances and vehicles. It consists of well-defined subsets of desktop OpenGL, creating a flexible and powerful low-level interface between software and graphics acceleration. OpenGL ES includes profiles for floating-point and fixed-point systems and the EGL specification for portably binding to native windowing systems. OpenGL ES 1.X: fixed function hardware offering acceleration, image quality and performance. OpenGL ES 2.X: enables full programmable 3D graphics."
What distinguishes OpenGL ES from OpenGL is its emphasis on low-capability embedded systems, and the RPi falls into this category, although it is not necessarily embedded. OpenGL ES is a simplified and tidied up form of OpenGL, but still has the same capabilities as OpenGL. The emphasis with this API is on 2-D and 3-D graphics, suitable for games programming and other high-demand graphics applications.
It will work in co-operation with other windowing systems such as the X Window System or Wayland, or where no other window system is running.
"OpenVG is a royalty-free, cross-platform API that provides a low-level hardware acceleration interface for vector graphics libraries such as Flash and SVG. OpenVG is targeted primarily at handheld devices that require portable acceleration of high-quality vector graphics for compelling user interfaces and text on small screen devices - while enabling hardware acceleration to provide fluidly interactive performance at very low power levels."
OpenVG is an alternative approach to graphics to OpenGL. While OpenGL renders onto "textures", OpenVG is more concerned with drawing lines to form shapes and then rendering within those shapes.
"EGL™ is an interface between Khronos rendering APIs such as OpenGL ES or OpenVG and the underlying native platform window system. It handles graphics context management, surface/buffer binding, and rendering synchronization and enables high-performance, accelerated, mixed-mode 2D and 3D rendering using other Khronos APIs."
EGL is the "glue" layer between the higher-level APIs and the hardware. It isn't used extensively by the application programmer, just enough to give the higher level the hooks into the lower level. Both OpenGL ES and OpenVG sit above EGL.
"OpenMAX™ is a royalty-free, cross-platform API that provides comprehensive streaming media codec and application portability by enabling accelerated multimedia components to be developed, integrated and programmed across multiple operating systems and silicon platforms. The OpenMAX API will be shipped with processors to enable library and codec implementers to rapidly and effectively make use of the full acceleration potential of new silicon - regardless of the underlying hardware architecture."
This is a bit more market-speak. But this API is designed for streaming media such as movies and music. Again, it will work with other windowing systems.
Khronos is the standards organisation responsible for many of the graphics standards. This chapter has looked briefly at those relevant to the RPi.
Copyright © Jan Newmarch, firstname.lastname@example.org
" Programming AudioVideo on the Raspberry Pi GPU " by Jan Newmarch is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License .
Based on a work at https://jan.newmarch.name/RPi/ .
If you like this book, please contribute using PayPal
Or Flattr me: