OpenGL API metrics help you understand how often your application is using subsets of the API which might cause performance issues when used incorrectly or too frequently.

The table below lists all OpenGL ES* API Metrics that you can analyze with Intel® GPA.

 

 

 

 

 

Metric Name

Description

Buffer Creations

Represents the number of OpenGL/OpenGL ES buffers that are allocated from your application per frame.

Improving Performance

When the Buffer Creations metric is high, see if you can change your application to allocate required buffers once at application startup.

Draw Calls

Represents the number of draw calls issued from your application per frame.

Improving Performance

When the Draw Calls metric is high, see if you can optimize your application’s geometry to better batch vertexes into fewer draw calls.

Indexed Draw Calls

Represents the number of indexed draw calls being issued from your application per frame.

Improving Performance

  • When the Indexed Draw Calls metric is high, see if you can optimize your application’s geometry to better batch vertices into fewer draw calls, specifically those that use glDrawElements or its modifications.
  • When the Indexed Draw Calls metric is significantly lower than the Draw Calls metric see if you can optimize your application to use indexed geometry passed to the glDrawElements API or its modifications, rather than glDrawArrays and its modifications. Additionally, check the Vertex Count and Indexed Vertex Count metrics to see how much data is being drawn without indexing to estimate the impact of such optimization.
Vertex Count

Represents the number of vertices passed by your application to OpenGL* draw calls per frame. This totals the counts passed to the draw calls.

Improving Performance

  • When the Vertex Count metric is higher than expected and fragment processing is not the bottleneck, check whether you can improve culling, or whether you can use LOD or other techniques to reduce geometric complexity.
  • When the Vertex Count metric is low, try to increase geometric complexity as an alternative to expensive operations such as Alpha Test that might slow down the pipeline.
Indexed Vertex Count Represents the number of indexed vertices passed by your application to indexed draw calls per frame.

Improving Performance

When the Indexed Vertex Count metric is significantly lower than the Vertex Count metric, see if you can optimize your application to use indexed geometry passed to the glDrawElements API or its modifications, rather than glDrawArrays and its modifications.

FPS

Represents the average Frame Per Second your application is rendering on the device.

Frame Time Represents the instantaneous frame time in microseconds.

Frame Number

Increments every time a frame is rendered. It can be useful to show progress when the application is rendering a static scene and other metrics are steady.

RT Clears Represents the number of Render Target clears per frame.
UseProgram Calls Represents the number of calls to use OpenGL/OpenGL* ES shader programs from your application per frame.

Improving Performance

When the UseProgram Calls metric is high, see if you can improve batching to draw all the objects that use a particular program before binding the next one. Combining several shaders into an uber-shader with static flow control can also reduce this metric and its associated cost, but does not always result in a performance improvement.

Error Gets Represents the number of times that the glGetError method is called from your application per frame.

Improving Performance

When the Error Gets metric is high, see if you can optimize your application to avoid checking for error conditions during its render path.

Total State Changes Represents the number of OpenGL/OpenGL* ES API calls that are changing the state of the GPU pipeline.
BindBuffer Calls Represents the number of calls to bind OpenGL/OpenGL* ES buffers from your application per frame.

Improving Performance

When the BindBuffer Calls metric is high, see if you can improve batching to draw all instances of the same geometry without switching the bound buffer. Additional performance gains might come from using one buffer for several pieces of geometry and just drawing the appropriate piece where needed.

BindTexture Calls Represents the number of calls to bind OpenGL/OpenGL* ES textures from your application per frame.

Improving Performance

When the BindTexture Calls metric is high, see if you can improve batching to draw all the objects that use a particular texture before binding the next one. If possible, a further step to improve performance would be to use texture atlasing rather than multiple smaller textures.

RT Changes Represents the number of Render Target changes per frame.

 

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.