@spivonious: AFAIK DirectX will just process everything you send to it, leaving the decisions up to you. It's deliberately intended to be as slim an abstraction from the hardware as is possible to give the best performance possible.

In any case there are lots of "high level" decisions about the levels of detail and relevance of data at a given size that DirectX can never understand. As evildictator points out making these decisions in your code allows you to focus performance on the things that matter and ultimately do the minimum necessary work to produce the best output for a given scenario.