I'm working on patches for Skyrim, so want to share some info for future official fixes, because some of them almost impossible to fix without engine source code.
BSODs in NVidia display driver (not tested how is it with ATI):
The problem appear for users when video memory size is not enough to keep all managed resources in it, for me it's 512 mb, so when i set everything to max and antialiasing to x8 samples, BSOD appear very fast. First i thought it's something wrong in driver, when it doesn't have enough video memory for internal operations or may be dynamically created render targets in default pool are failed, but when i forced video memory to be in use only 384 mb for managed textures and vb, ib (128 local video memory free, 500+ non local free), bug still the same and of course appear almost at the beginning of gameplay. When i forcing a lot critical sections for calling d3d functions (not all tested, but the most useful with low overhead vecause of not frequent calls), BSOD gone away, but not far, now i can with such stress test (managed resources loading/unloading) run about 5-10 minutes in the map with player.setav speedmult 1000, BSOD happens when time for loading resources to video memory is too big. Also, if device initialization is forced to disable driver management, locking threads give no result, almost. As i told before, it was bad idea to init and use d3d in multithreading mode, it slower than single thread mode for d3d9. I don't want to corrupt my hard drive any more with developing a bugfix for this problem, so giving this information for you. Just remove multithreading code and make all d3d functions to be called from same thread as initialisation, reset and testcooperativelevel (last one also calling from not thread of device creation, wtf???).
And remove that damn reserved VirtualAlloc calls, use HeapAlloc or implemet third party memory manager, modders can't fix that and you limiting available memory for nothing.




