53 research outputs found

    XNA-like 3D Graphics Programming on the Raspberry Pi

    Get PDF
    The Raspberry Pi is a credit-card sized computing device created by Broadcom in 2012. This device is a kind of mini PC, and it is capable of doing things that desktop PC can do. The goal of the Raspberry Pi Foundation is to allow people all over the world to learn programming. Therefore, the Raspberry Pi is designed as a small sized, low cost device that can provide reasonable data processing capability. However, because of its goal is to keep the price down to maximize openness for learning, Raspberry Pi can only run the Linux operating system. XNA is a set of libraries developed by Microsoft to facilitate the creation and management of video games. It provides a large number of underlying functions to help the development of systems that based on runtime. Therefore, programmers may focus on programming their own code. XNA is built on Microsoft's .NET framework, and it is designed to be used with DirectX. However, as no drivers are developed to provide the low level API defined by DirectX on Linux, it is currently impossible to program with XNA on a Raspberry Pi. This thesis investigates the possibility of developing XNA like programs directly on the Raspberry Pi. Instead of using DirectX, OpenGL ES is used to provide the low level graphics APIs. The code of a project named "JBBRXG11", which is an open source project extending XNA classes on Windows to access DirectX 10 and DirectX 11 graphics features is used as a reference for this project. The project successfully built a library that allows an XNA like program to produce moving, textured 3D models on screen

    Benchmark for OpenGL ES 3.0 Devices

    Get PDF
    Tato práce se zabývá tvorbou aplikace pro měření výkonnosti grafických akcelerátorů podporujících standard OpenGL ES 3.0, a to formou realistického zobrazování 3D scén v reálném čase. Nejprve je popsána historie a nové funkce grafické knihovny OpenGL ES 3.0. Poté jsou stručně rozebrány vybrané algoritmy realistického zobrazování 3D scén v reálném čase, které lze díky novým funkcím v knihovně implementovat. Dále je popsán návrh testovací aplikace, a to včetně online databáze výsledků obsahující podrobné informace o zařízeních. Následuje popis implementace na platformách Android a Windows, včetně popisu testování na mobilních zařízeních po publikování aplikace v obchodu Google Play. Závěrem jsou zhodnoceny dosažené výsledky a je zmíněno možné budoucí pokračování projektu.This thesis deals with the development of benchmark application for the OpenGL ES 3.0 devices using the realistic real-time rendering of 3D scenes. The first part covers the history and new features of the OpenGL ES 3.0 graphics library. Next part briefly describes selected algorithms for the realistic real-time rendering of 3D scenes which can be implemented using the new features of the discussed library. The design of benchmark application is covered next, including the design of online result database containing detailed device specifications. The last part covers implementation on Android and Windows platforms and the testing on mobile devices after publishing the application on Google Play. Finally, the results and possibilites of further development are discussed.

    Entwurf und Analyse von Konzepten zur effizienten Datenübertragung von Grafikrendering-Befehlen auf eingebetteten Systemen

    Get PDF
    Die Interaktion zwischen Mensch und Maschine war seit Anbeginn der Automobilindustrie ein wichtiger Faktor für die Kundenzufriedenheit. Heutzutage erfolgt diese verstärkt unter Einsatz von Anwendungen, die auf dem Kombiinstrument und dem Display des Infotainment Systems angezeigt werden. Werden beide Systeme auf einer Plattform betrieben, so bekommt die Isolation ihrer Anwendungen, auch durch die steigende Zahl dieser, eine immer höhere Bedeutung und kann durch Virtualisierung erzielt werden. Um ein effizientes Rendering von Grafikbefehlen in einer solchen virtualisierten Umgebung zu ermöglichen, entwarf die Daimler AG eine Middleware als Schnittstelle zwischen den Anwendungen und der GPU. Mögliche Optimierungspotentiale dieser, um eine nahezu native Performanz von Grafikanwendungen zu gewährleisten, sind Gegenstand dieser Arbeit. Dazu wurden sowohl die Middleware, als auch typische OpenGL ES basierte Grafikanwendungen und ihnen zugrundeliegende Grafikbefehle untersucht und klassifiziert. Ausgehend davon wurden Optimierungslösungen vorgeschlagen und unter Hinzunahme verschiedener repräsentativer Szenarien hinsichtlich Performanz evaluiert. Ein weiterer Punkt der Arbeit ist die Skalierbarkeit der OpenGL ES Middleware. Zur Auswertung dieser dienen sowohl homogene, als auch heterogene Szenarien, die mit dem nativen Ausführungsverhalten der Szenarien verglichen. Ein wichtiger Aspekt, der ebenfalls zu behandelt wurde, ist das Management der beschränkten Systemressourcen auf eingebetteten Systemen. Anhand der ausgewählten Szenarien wird gezeigt, dass die eingesetzten Konzepte sowohl die Performanz einzelner Anwendungen verbessern, als auch die Skalierbarkeit der Middleware insgesamt positiv beeinflussen. Dabei wird bis zu 98% der nativen Framerate erzielt. Dies wird hauptsächlich durch eine Puffer-basierte Asynchronisierung von synchronen Grafikbefehlen und einen effizienten Einsatz von Shared Memories erzielt

    Integration of a Fractal Generator with Mali GPU

    Get PDF
    The Mandelbrot set is a well-known fractal with mathematical propertiesthat can be exploited to create 3D-landscapes. The operations required tocalculate a heightmap using the Mandelbrot set are highly parallelizableand is thus suitable for a hardware implementation. Generation of 3D-landscapes,on-the-y, using the Mandelbrot set is desirable since the Mandel-brot set is innitely complex[4] and deterministic. This makes possible thecreation of many dierent landscapes with complex patters in, for example,computer games.A previous master thesis[4] presents a vertex array generator(VAG) thatgenerates the vertices of a 3D-landscape based on an area of the Mandelbrotset. This thesis explores dierent architectures that connect this vertex arraygenerator with the Mali-400 graphics processing unit(GPU). The result isthat the VAG in its current state is not suitable for integration, mostly sinceit does not support random access to vertices. Thus, a new fractal generatorarchitecture is presented, reusing parts of the VAG.The new fractal generator is implemented in Verilog and its functionalityis veried using the Universal Verication Methodology(UVM). Then, thefractal generator is integrated with the Mali-400 GPU in an FPGA frame-work and synthesized on FPGA. Tests are also performed at each step ofintegration.An OpenGL for Embedded Systems 2.0 demo is written to showcase thefunctionality of the fractal generator. Changes have been made to the Mali-400 drivers to automatically congure and set-up the fractal generator whilethe demo is running.The fractal generator is shown to be working as intended with a scalableperformance based on a number of internal cores. Using 64 cores the fractalgenerator has a worst-case frame time of 51.1 ms at 400Mhz which equals aframe rate of 450 frames pr second, vastly outperforming a software imple-mentation.The fractal generator is currently limited to creating landscapes of 128x128points, the intention was to use the demo and driver to increase the resolutionbut this has not been solved.Increasing the resolution and optimizing the cache size of the fractal generatorhas been left for future work

    Development of generic scheduling concepts for OpenGL ES 2.0

    Get PDF
    The ability of a Graphics Processing Unit (GPU) to do efficient and massively parallel computations makes it the choice for 3D graphic applications. It is been extensively used as a hardware accelerator to boost the performance of a single application like 3D games. However, due to increasing number of 3D rendering applications and the limiting resource constraints (especially on embedded platforms), such as cost and space, a single GPU needs to be shared between multiple concurrent applications (GPU multitasking). Especially for safety-relevant scenarios, like, e.g., automotive applications, certain Quality of Service (QoS) requirements, such as average frame rates and priorities, apply. In this work we analyze and discuss the requirements and concepts for the scheduling of 3D rendering commands. We therefore propose our Fine-Grained Semantics Driven Scheduling (FG-SDS) concept. Since existing GPUs cannot be preempted, the execution of GPU command blocks is selectively delayed depending on the applications priorities and frame rate requirements. As FG-SDS supports and uses the OpenGL ES 2.0 rendering API it is highly portable and flexible. We have implemented FG-SGS and evaluated its performance and effectiveness on an automotive embedded system. Our evaluations indicate that FG-SGS is able to ensure that required frame rates and deadlines of the high priority application are met, if the schedule is feasible. The overhead introduced by GPU scheduling is non-negligible but considered to be reasonable with respect to the GPU resource prioritization that we are able to achieve

    Real-time scheduling for 3D rendering on automotive embedded systems

    Get PDF
    Im Automobilbereich erfreut sich der Einsatz von 3D-Grafik zunehmender Beliebtheit. Beispielsweise zeigte Mercedes-Benz im F125 Autoprototypen, wie analoge Zeiger der Kombiinstrumente durch digitale Displays ersetzt werden. Der Trend, 3D-Anwendungen zu nutzen, geht in zwei Richtungen: Zum einen hin zu kritischeren Anwendungen wie der Geschwindigkeitsanzeige, zum anderen hin zu Drittanbieteranwendungen, die beispielsweise über einen Appstore bezogen werden. Um Isolationsanforderungen zu erfüllen, werden traditionell neue Funktionen im Auto häufig mittels neuer Steuergeräte umgesetzt. Um jedoch Kosten, Energieverbrauch und Bauraum im Fahrzeug zu sparen, sollten alle 3D-Anwendungen eine einzige Hardwareplattform und somit auch eine einzige GPU als gemeinsame Ressource nutzen. Für zeitsensitive Anwendungen wie die Geschwindigkeitsanzeige ergibt sich hierbei die Herausforderung, Rendering in Echtzeit zu gewährleisten. Hierfür sind wirksame Konzepte für das Echtzeitscheduling der GPU erforderlich, welche Sicherheit und Isolation beim 3D-Rendering garantieren können. Da aktuelle GPUs nicht unterbrechbar sind, muss ein Deadline-basierter Scheduler die Ausführungszeit der GPU-Befehle im Voraus kennen. Bestehende Schedulingkonzepte unterstützen leider keine dynamischen Tasks, keine periodischen Echtzeitdeadlines, oder setzen unterbrechbare Ausführung voraus. In dieser Arbeit werden die für HMI-Rendering im Automobilbereich relevanten Anforderungen beschrieben. Basierend auf diesen Anforderungen wird das Konzept des virtualisierten automobilen Grafiksystems (VAGS) vorgestellt, welches einen Hypervisor nutzt um die Isolation zwischen verschiedenen VMs, insbesondere für die Headunit und die Kombiinstrumente, sicherzustellen. Des Weiteren wird ein neuartiges Framework vorgestellt, welches die Ausführungszeit von GPU-Befehlen misst und basierend auf OpenGL ES 2.0 vorhersagt. Hierbei werden für die relevanten GPU-Befehle wie Draw und SwapBuffers Vorhersagemodelle vorgestellt. Für Draw-Befehle werden zwei Heuristiken vorgeschlagen, welche die Anzahl der Fragmente abschätzen, zwei Konzepte, welche die Ausführungszeit der Grafikshader vorhersagen, sowie ein optionaler Echtzeit-Korrekturmechanismus. Die Anzahl der Fragmente wird entweder mittels einer Bounding-Box des gerenderten Modells, auf welche die Projektion des Vertexshaders angewendet wird, abgeschätzt, oder durch eine Teilmenge der gerenderten Dreiecke, welche genutzt wird um die Durchschnittsgröße eines Dreiecks zu ermitteln. Um die Laufzeit eines Shaders abzuschätzen, wird er entweder in einer Kalibrierungsumgebung in einem separaten OpenGL-Kontext ausgeführt, oder es wird ein offline trainiertes MARS-Modell verwendet. Die Implementierung und die Auswertungen des Frameworks zeigen dessen Machbarkeit und dass eine gute Vorhersagegenauigkeit erreicht werden kann. Beim Rendern einer Szene des bekannten Benchmarkprogramms Glmark2 wurden beispielsweise weniger 0,4 % der Messproben um mehr als 100 μs unterschätzt und weniger als 0,2 % der Messproben um mehr als 100 μs überschätzt. Unsere Implementierung verursacht bei langer Ausführung eine zusätzliche CPU-Rechenzeit von üblicherweise weniger als 25 %, bei manchen Szenarien ist diese sogar vernachlässigbar. Der Programmstart verlangsamt sich beim effizientesten Verfahren hierbei lediglich um etwa 30 ms. Auf lange Sicht liegt er typischerweise unter 25 % und ist für manche Szenarien sogar vernachlässigbar. Darüber hinaus wird ein echtzeitfähiges 3D-GPU-Schedulingframework vorgestellt, welches kritischen Anwendungen Garantien gibt und trotzdem die verbleibenden GPU-Ressourcen den weniger kritischen Anwendungen zur Verfügung stellt, wodurch eine hohe GPU-Auslastung erreicht wird. Da aktuelle GPUs nicht unterbrechbar sind, werden die vorgestellten Konzepte zur Vorhersage der Ausführungszeit verwendet um prioritätsbasiert Scheduling-Entscheidungen zu treffen. Die Implementierung basiert auf einem automobilkonformen eingebetteten System, auf welchem Linux ausgeführt wird. Die darauf ausgeführten Auswertungen zeigen die Machbarkeit und Wirksamkeit der vorgestellten Konzepte. Der GPU-Scheduler erfüllt die jeweiligen Echtzeitvorgaben für eine variable Anzahl von Anwendungen, welche unterschiedliche GPU-Befehlsfolgen erzeugen. Hierbei wird bei einem anspruchsvollen Szenario mit 17 Anwendungen eine hohe GPU-Auslastung von 99 % erzielt und 99,9 % der Deadlines der höchstprioren Anwendung erfüllt. Des Weiteren wird das Scheduling in Echtzeit mit weniger als 9 μs Latenz effizient ausgeführt

    Compositing concepts for the presentation of graphical application windows on embedded systems

    Get PDF
    Modern automotive systems feature multiple displays used to render 2D and 3D graphical applications to provide functionalities like driving assistance and entertainment. The performance of the hardware used in automotive environments differs greatly from what is commonly available on desktop workstations, since automotive embedded systems are limited by power consumption and size. The windowing system supporting the graphical applications displayed on board must therefore achieve a greater level of efficiency compared to those used on desktop systems. The compositor, the component of the windowing system that is responsible to draw the content of the applications on screen, must therefore be efficient in the bitblitting operations, especially by minimizing the overdraw that occurs in case of overlapping windows. A concept for a compositor was developed, which features a data structure designed for storing overlapping windows and a set of algorithms to optimize the bitblitting operations. The compositor, using a prediction model that represents the time requirements of the bitblitting commands, is able to reduce the bitblitting time by choosing at runtime the best strategy to draw windows on screen

    Collaborative Augmented Reality

    Get PDF
    Over the past number of years augmented reality (AR) has become an increasingly pervasive as a consumer level technology. The principal drivers of its recent development has been the evolution of mobile and handheld devices, in conjunction with algorithms and techniques from fields such as 3D computer vision. Various commercial platforms and SDKs are now available that allow developers to quickly develop mobile AR apps requiring minimal understanding of the underlying technology. Much of the focus to date, both in the research and commercial environment, has been on single user AR applications. Just as collaborative mobile applications have a demonstrated role in the increasing popularity of mobile devices, and we believe collaborative AR systems present a compelling use-case for AR technology. The aim of this thesis is the development a mobile collaborative augmented reality framework. We identify the elements required in the design and implementation stages of collaborative AR applications. Our solution enables developers to easily create multi-user mobile AR applications in which the users can cooperatively interact with the real environment in real time. It increases the sense of collaborative spatial interaction without requiring complex infrastructure. Assuming the given low level communication and AR libraries have modular structures, the proposed approach is also modular and flexible enough to adapt to their requirements without requiring any major changes
    corecore