GUI does require 3D hardware accelerated graphics (GPU) that support OpenGL ES, OpenGL, or EGL, or Direct3D with device drivers that support OpenGL ES 2.0, or OpenGL 1.3 or later with GLSL, or DirectX in order to render the GUI at an acceptable frame rate. Kodi is thus officially not yet available for MIPS upstream in mainline source code repository from Team-Kodi, nor does it as yet support DirectFB or DRI (Direct Rendering Infrastructure) rendering without OpenGL/GLES hardware accelerated graphics support. The combination of MIPS, DirectFB, and DRI is a popular architecture used today by simpler set-top boxes like digital broadcasting (cable/satellite) boxes and low-end digital media players, such as those based on MIPS architecture chipsets from Sigma Designs or Realtek. Kodi ports to MIPS is, however, currently being actively worked on by several independent development teams. Kodi for Linux supports toolchain building systems for embedded development such as Yocto, Buildroot (uClibc), and the Linaro set of Makefiles and patches for easing the generation of cross-compilation toolchains as well as the creation of a file system on embedded Linux systems across a wide range of hardware, kernel platforms, and CPU architectures (x86, x86-64, ARM, MIPS, PowerPC, etc.). Python scripts as plugins and addons (widgets and gadgets) Kodi allows developers to create addons using a built-in Python interpreter) and its own WindowXML application framework, which together form an XML-based widget toolkit for which they can extend the capability of Kodi by creating a GUI for widgets. Python widget scripts allow non-developers to themselves create new add-ons for Kodi, using Python. Application programming interface (API) Other than the application programming interfaces (APIs) available to third-party Python scripts and addon plugins, Kodi features several other APIs for controlling Kodi remotely or from an external application. These APIs includes a JSON-RPC server, D-Bus Server, Web server, UPnP AV media server (with UPnP MediaServer ControlPoint, UPnP MediaRenderer DCP, UPnP RenderingControl DCP, and UPnP Remote User Interface server), and a custom multi-protocol Event Server for remote controls. GUI-engine and skinning (themes) Kodi/XBMC is noted as having a very flexible GUI toolkit and robust framework for its GUI. With its underlying complex graphical design and layout library (named libGUI in Kodi/XBMC), it provides a simple abstraction layer between the application code and the interface, while allowing extremely flexible dynamic layouts and animations that are easy to work with and makes it possible to create completely unique skins