dolphin-emu/dolphin — pull request #365 by galop1n (2014-05-13 08:13:04+00:00)
Title: D3D Back end large CPU saving

The idea is to prune D3D API calls are they are costly and responsive of a lower framerate compared to the GL backend on all my test.

Here a summary :

The redundancy detection is made low level first by wrapping the ID3D11DeviceContext object.

Use the Draw "BaseVertexLocation" instead of IASetVertexBuffers "pOffsets" to prune the later call.

Add an "Equal" member function to NativeVertexFormat and skip unneccessary Flush.

Also, the state objects for Blend, Rasterizer or Samplers in D3D never die even if you call Release on them, so messing up with creating and releasing them all the time was a complete waste of time, a simple hash table in the user code is by far faster than letting the "Create" API searching back for it.