Friday, April 16, 2010

Developer Tools for 3D Media Applications

Introduction
The right set of software development tools simplifies performance enhancement in media applications and allows for continuous, cost-effective improvements.

The market for digital media applications such as entertainment and game software continues to show robust growth and profitability. Credit for this healthy increase is due in large part to the realistic simulation capabilities that 3D technologies such as DirectX* and OpenGL* have contributed. These development environments have allowed developers to create the kinds of applications that users are craving.

One important factor in creating great 3D applications is establishing high playback frame rates. Satisfying this requirement involves determining the number of frames per second that the application draws to the screen and writing the application or game code to maintain this high frame-rate level.

This process can be problematic. As is the case in finding performance bottlenecks, certain parts of application code can drop frames unexpectedly, causing performance to be uneven and 3D playback to seem choppy. These performance deficits may not be related to major coding issues, but rather to certain portions of the code base that require some tweaks or minor modifications.

Today there are a number of great development tools that can help developers track down the portions of code that cause frame-rate problems. These tools, many of which are available as shareware, can often save a great deal of time and effort for the developer. This article introduces some of these tools.

FRAPS* Benchmarking Software
FRAPS*, which stands for “Frames per Second”, was created by developer Rod Maher in 1999. It started as a simple tool to measure frame rates in 3D applications, but after four years of development, the program evolved to accomplish much more.

FRAPS can be described as benchmarking software that allows you to measure the true speed of your system in frames per second. It can display your system's frame rate in the corner of your screen as the application runs, eliminating the need for developers to build that functionality into their applications. FRAPS also offers developers with the ability to capture screen contents as real-time high-resolution video at up to 30 frames per second.

FRAPS can save frame-rate performance data to an external text file, allowing developers to analyze or benchmark the average frame rate between any two points in time by hitting a pre-designated benchmark key.

IPEAK Tools for Analysis, Testing, and Monitoring
IPEAK GPT (Graphics Performance Toolkit), now discontinued, was a suite of tools that measured 3-D hardware accelerator performance, analyzed and recorded application workload, and analyzed the interaction of graphics hardware and software to help developers isolate weaknesses and achieve peak performance. IPEAK GPT created a database of all the application data files that access the 3D graphics system and recorded information about each frame.

This information was logged into a database, providing developers with the ability to analyze the files and determine specific performance bottlenecks within their applications. IPEAK GPT also had the ability to split the computer screen into four sections, providing different aspects of visual feedback during application runtime. These four views included a texture mode, wireframe view, overdraw, and standard preview. Unfortunately, GPT was discontinued after its initial release supporting DirectX 7.0 and OpenGL 1.2.

The DirectX* SDK's Graphic Performance Analyzer
Microsoft announced plans to include a tool known as the Graphics Performance Analyzer (GPA) with its freely downloadable DirectX SDK*. This tool contains all the performance features of IPEAK GPT, but it has been updated to work on DirectX 9.0 or later. GPA has the ability to monitor all API usage, as well as all activities that the application has within the system on a per-frame basis, and it includes many new and practical features.

VTune™ Performance Analyzer Provides Multifaceted Optimization Support
The VTune™ Performance Analyzer can help analyze the performance of digital media applications by locating sections of code that take a long time to execute and that generate a significant number of events. Analysis of these events may provide clues about how to improve code performance. With the VTune analyzer, developers can track critical function calls and monitor specific processor events, such as cache misses, triggered by specific sections of code. They can also calculate event ratios to determine if processor events are slowing performance.

The VTune Performance Analyzer collects performance data on applications and systems, displaying it in graphs or tables. Once created, the developer can also drill down into these graphs and quickly take a closer look at which portion of the source code has the problem area. The VTune environment shows source code and/or the disassembly code of one source file in the monitored module, annotated with additional information about the code. The analyzer displays the source code for any program that has been compiled with the debug information turned on, or for which the developer specifies symbol files.

VTune tools also support the creation of custom DLLs, allowing the developer to plug the VTune analyzer into an application at specific locations and then correlate what is happening within a 3D application with what the user sees taking place on the screen.

Xylobot* is Useful in Creating Media Workloads
Xylobot* is a generic game-development tool that is compatible with most DirectX games. Xylobot can record keyboard and mouse actions, and then play back those actions within the application. This functionality is particularly useful in creating online games. Xylobot can generate a reproducibl e workload, where a series of actions are scripted. With Xylobot, the developer can produce a series of similar sequences using the scripting tool, and then profile that sequence any number of times. This functionality allows developers to make changes to their code, then compare and correlate one profiled sequence to each subsequent sequence.

No comments:

Post a Comment