andyhartman / slimdx

Automatically exported from code.google.com/p/slimdx
0 stars 0 forks source link

Performance enhancement for DirectX 11 OutputMergerWrapper #901

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
hi,
it would be great if you could add a SetBlendState method to the 
OutputMergerWrapper which performs exactly as the 
ID3D11DeviceContext::OMSetBlendState method of the DirectX API for performance 
reasons. 
At the moment the wrapper provides getting/setting of the three parameters via 
properties, which internally involves calls to 
ID3D11DeviceContext::OMGetBlendState to get the current values of the other two 
parameters before setting the new parameter. In worst case, this leads to three 
calls to OMGetBlendState and three calls to OMSetBlendState if you wish to set 
all three parameters. Even in the common case you just wish to set the 
BlendState object, a totally unneccessary call to OMGetBlendState precedes the 
set call, even if your code holds all three parameters and could just send them 
to one OMSetBlendState call.
Although I assume the driver caches these objects to deliver them back to the 
caller without asking the graphics card to deliver the data, this seems to be a 
waste of resources in most cases. 
You may leave the properties access as is, but it would be nice to deliver a 
method to supply the complete blend state call at once to the DirectX API.

Original issue reported on code.google.com by tr...@posteo.de on 19 Nov 2013 at 3:58