karoterra / aviutl-GLShaderKit

AviUtl 拡張編集スクリプトで GLSL を使用するための DLL
MIT License
9 stars 0 forks source link

RadeonだとAviUtlを閉じるときに応答なしになる #6

Closed karoterra closed 2 months ago

karoterra commented 3 months ago

GLShaderKitを使っているとAviUtl終了時に応答なしになるとの報告を受けた。 GPUはAMD Radeonを使用しているとのこと。 ログを出力するコードを追加したバイナリで確認してもらったところ以下の箇所で処理が止まっているようである。 https://github.com/karoterra/aviutl-GLShaderKit/blob/5ad29835052d6c580f3e5b53c137ecc1adf8af58/src/gl_context.cpp#L132 ただし、その上の Activate() から Deactivate() にかけてエラーは出ていないようである。

karoterra commented 2 months ago

以下の環境で確認したところ、 wglDeleteContext() がハングする理由はよくわからなかったが、エラーが発生したり GL_DEBUG_OUTPUT で特に何も出力されないが確かにハングした。

試しに純スクリプト用DLLではなく、フィルタプラグイン .auf として func_init で初期化、 func_exit でコンテキストなどのリソース破棄をしてみたところハングしなくなった。 この方向で修正する場合、モジュールの読み込み周りも修正する必要があり、すでに公開されているGLShaderKit使用スクリプトへの影響を考慮する必要がある。