原因わかりました
D3DPRESENT_INTERVAL_DEFAULTだからとフレーム処理してないのが原因でした(余裕があるときは60回以上Present呼ばれてる?それともPresent待ちの時に他のスレッドまで止めてる?)
D3DPRESENT_INTERVAL_IMMEDIATE用に書いたフレーム処理をしたらうまくいきました

ご迷惑をおかけしました、ありがとうございます