I dokn't know enough about D3D to comment specfically, but can offere some general guideance. It's generally safe for multiple threads to concurrently read an object. If one thread is modifying an object, it's generally not safe for other threads to be reading or modifying the object. So generally you can use pointers to objects that are not going to be modified by concurrent threads, and need copies if they are going to be modified. If copies are going to be modified differently, you also need a way to reconcile the different modifications.
One common strategy for parallel rendering is to divide the screen up into patches and render each patch as a separate task. See the tachyon example that ships with TBB for an example of this strategy.