If your application is bound by the vertex processing using excessive bandwidth, the problem might be one of the following:
- Too many triangles
Too many triangles can cause excessive bandwidth usage. This is unlikely to happen unless you have a highly complex scene. See Reduce the number of vertices.
Triangles might also use excessive bandwidth usage if you do not use culling. If you do not use culling the vertex processor processes triangles that are never drawn. See Use culling.
- Vertex shader is too complex
Complex shaders with a lot of intermediate state can fill up cache memory causing it to flush to main memory. If this happens memory bandwidth is used every time data is written to or read from memory.
- Reading non-localized data
If you have data spread widely through data structures the GPU might load data into cache that is never used. Avoid data structures such as sparse vertex arrays, Always try to place data together to make it more cacheable.