Xbox-specific interfaces are provided for performance profiling. These interfaces support the following functionality:
API items for performance profiling for Xbox One are in the Xbox-specific area of the DirectX API, rather than grouped with the DirectX 11 API; see Direct3D 11 Xbox One Reference.
If you use Command Lists and profile with the INSTRUMENTED version of the Monolithic Direct3D libraries, be sure to double-check performance occasionally with the retail version of the libraries. PIX currently adds measurable record-time overhead to Command Lists with INSTRUMENTED builds.
If you run a CPU profile on the graphics driver (either UMD*.DLL or CIUMD_HYDRA.DLL) and see “CGraphicsContext::SlowRebindBecauseResourceSetTwiceInSameStage” anywhere then that can be good news because that’s typically easy CPU time that you can reclaim. When ID3D11DeviceContext::Map is called on a dynamic resource that is currently bound into the context (for example, by VSSetConstantBuffers), at that time, the driver needs to tell the hardware the new location of the resource in memory.
The driver uses a fast path when the resource is bound only once into any given stage. However, if a resource is bound more than once into any single stage, then this slow path is called. This path is extremely slow because it has to do an exhaustive search through all stages and all slots to find all occurrences of that resource.
Therefore, if you see this function in your list, such as the following line, put a breakpoint on it; for example:
umd-i.dll!CGraphicsContext::SlowRebindBecauseResourceSetTwiceInSameStage
And then remove your duplicate binds.