半年以上悩んでいる問題があるので質問します。

OpneGLでV同期を取る方法ですが、
SwapBuffers()を高優先度スレッドで呼ぶようにし、
メインスレッドをシグナルで起こすように実装しています。

なぜかSwapBuffers()がV同期待ちをしてくれず、
高優先度スレッド側でsleep()を呼ばないと、
メインスレッドにCPU時間が回らない状況です。

高優先度スレッドでV同期&スワップバッファが終わった後、
メインスレッド起動、メインスレッドの仕事が終わったら
V待ち関数(条件変数待ち)でメインスレッドをスリープし、
あまった時間を低優先度スレッドに渡すようなフレームワークを考えています。

グラフィックボードはATI Radeon HD4550です。
wglSwapIntervalEXT()をつかってもV同期が取れません。
PCのOpenGLの設定も、常にV同期待ちを行うように設定しています。

原因、解決方法がわかるか方がいたらお願いします。