ultrasound image viewer - qt + sgx
DESCRIPTION
This application showcases the capability of v3dfx-base, with ARGB input, with multiple (128 layers of) blending, all withTRANSCRIPT
Qt Dynamic Image Viewer based on v3dfx-base
• This implementation tests video/image streaming functionality via SGX GPU, using V3dfxGLScene, for an Ultrasound image viewer. – This application draws data into a GraphicsView with
V3dfxGLScene, and updates data in drawBackground()• This application showcases the capability of v3dfx-base,
with ARGB input, with multiple (128 layers of) blending, all with <10% CPU loading– With a regular glTexImage2D mode of texturing, this would
take 100% CPU, and lower fps rates• Every frame shows a different angle of view
Qt UltraSound Image Viewer
Source Code
• https://github.com/prabindh/v3dfx-base/tree/master/test/platforms/qt_ultrasound
• Introduction to v3dfx-base in following pages
V3dfx-base 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
5
v3dfx-base
device n
channel 1 channel n
device n+1
channel 1 channel n
device n+2
channel n channel n
deviceClass = new TISGXStreamIMGSTREAMDevice(); texClass = new TISGXStreamTexIMGSTREAM();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);
deviceClass = new TISGXStreamEGLIMAGEDevice(); texClass = new TISGXStreamTexEGLIMAGE();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);
Is / Is Not
•Handles rapidly changing textures (RGB, YUV)
•Supports imgstream•Supports eglimage•Supports both imgstream
and eglimage with single API
•Reusable class, delivered as “v3dfx-base.a” (ARM library)
•Needs Graphics SDK with eglimage/imgstream support
•Targeted to support multi-threaded operation (WIP)
•Targeted to support cropping (WIP)
WHAT IT IS
•Does not initialise GL state, EGL state for application
•Does not do drawing (glDrawArray, glDrawElement)
•Does not do eglSwapBuffer
•Does not provide fancy GLSL shaders
WHAT IT IS NOT
6
Underneath the hood – Target Execution
7
v3dfx-base (v3dfx-base.a) library archive
Customer application
GL_IMG_texture_stream2 GL_OES_EGL_image_external
User Mode SGX binary
bufferclass_ti Kernel driver
User Mode SGX binary
SGX HW
v3dfx-base.a linked in app, Qt wrapper ..
-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
IMGSTREAM EGLIMAGE
Underneath the hood – raw API
8
v3dfx-base
device n
channel 1 channel n
device n+1
channel 1 channel n
device n+2
channel n channel n
deviceClass = new TISGXStreamIMGSTREAMDevice(); texClass = new TISGXStreamTexIMGSTREAM();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);
deviceClass = new TISGXStreamEGLIMAGEDevice(); texClass = new TISGXStreamTexEGLIMAGE();deviceClass->qTexImage2DBuf(paArray);deviceClass->dqTexImage2DBuf(freeArray);
GL_IMG_texture_stream2 GL_OES_EGL_image_external
User Mode SGX binary
bufferclass_ti Kernel driver
User Mode SGX binary
SGX HW
Class Description – IMGSTREAM class
9
Class Description - EGLIMAGE class
10
Target use-cases
11
v3dfx-base library
v3dfx templates(Barn-door, Mosaic
Qt
gstreamer
QGLWidget wrapper (completed)
QGraphicsItemwrapper
QGLWidget Wrapper Class for v3dfx-base
12
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
• v3dfx-base/test/platforms/qtQGL– Qt – QGLWidget based class, test for both imgstream and eglimage
• v3dfx-base/test/platforms/qt– Qt – QGraphicsItem based class, test for both imgstream and eglimage (WIP)
13