v3dfx-base is a set of reusable classes, offering support for imgstream and eglimage based video streaming on TI SGX platforms like Beagleboard, DM3730 EVM, and TI 81xx platforms. QGLWidget wrapper support has been added.
3. Introduction
• Allows applications to integrate video streaming with SGX
without writing platform specific code in a re-usable way
– Support for imgstream AND eglimage through same API
deviceClass = new TISGXStreamIMGSTREAMDevice(); deviceClass = new TISGXStreamEGLIMAGEDevice();
texClass = new TISGXStreamTexIMGSTREAM(); texClass = new TISGXStreamTexEGLIMAGE();
deviceClass->qTexImage2DBuf(paArray); deviceClass->qTexImage2DBuf(paArray);
deviceClass->dqTexImage2DBuf(freeArray); deviceClass->dqTexImage2DBuf(freeArray);
channel 1 channel n channel 1 channel n channel n channel n
device device
device n
n+1 n+2
v3dfx-base
3
4. Is / Is Not
• Handles rapidly changing textures (RGB, YUV)
WHAT IT • Supports imgstream
• Supports eglimage
• Supports both imgstream and eglimage with single API
• Reusable class, delivered as “v3dfx-base.a” (ARM library)
IS • Needs Graphics SDK with eglimage/imgstream support
• Targeted to support multi-threaded operation (WIP)
• Targeted to support cropping (WIP)
WHAT IT • Does not initialise GL state, EGL state for application
• Does not do drawing (glDrawArray, glDrawElement)
• Does not do eglSwapBuffer
IS NOT • Does not provide fancy GLSL shaders
4
5. Underneath the hood – Target
Execution
-Contiguous buffer (preferred), allocated by customer application as texture input
-Customer application does drawing in its native way
-Dynamically update texture buffers using qTexImage2DBuf(), signal_draw() and dqTexImage2DBuf() calls
v3dfx-base.a
Customer application
linked in app, Qt wrapper ..
v3dfx-base (v3dfx-base.a) library archive
GL_IMG_texture_stream2
GL_OES_EGL_image_external
IMGSTREAM EGLIMAGE
User Mode SGX binary
User Mode SGX binary
bufferclass_ti
Kernel driver
SGX HW
5
6. Underneath the hood – raw API
deviceClass = new TISGXStreamIMGSTREAMDevice(); deviceClass = new TISGXStreamEGLIMAGEDevice();
texClass = new TISGXStreamTexIMGSTREAM(); texClass = new TISGXStreamTexEGLIMAGE();
deviceClass->qTexImage2DBuf(paArray); deviceClass->qTexImage2DBuf(paArray);
deviceClass->dqTexImage2DBuf(freeArray); deviceClass->dqTexImage2DBuf(freeArray);
channel 1 channel n channel 1 channel n channel n channel n
device device
device n
n+1 n+2
v3dfx-base
GL_IMG_texture_stream2 GL_OES_EGL_image_external
User Mode SGX binary User Mode SGX binary
bufferclass_ti
Kernel driver
SGX HW
6
11. Source Code organisation
– Base API implementation
• v3dfx-base/api
– Provides both imgstream and eglimage implementation as raw C++ classes
– Reusable Qt classes
• v3dfx-base/platforms/Qt
– (GraphicsItem based) – in progress
• v3dfx-base/platforms/qtQGL
– (QGLWidget based) – completed
– Test applications
• v3dfx-base/test/imgstream
– Raw (full screen, no window manager) test for imgstream based streaming
• v3dfx-base/test/eglimage
– Raw (full screen, no window manager) test for eglimage based streaming
• platforms/qtQGL
– Qt – QGLWidget based class, test for both imgstream and eglimage
• platforms/qt
– Qt – QGraphicsItem based class, test for both imgstream and eglimage (WIP)
11