操作
バグ #444
完了ゲームプレー中にReset TDR occurred
バグ #444:
ゲームプレー中にReset TDR occurred
説明
楽曲プレー中に発生
ファイル
操作
説明
楽曲プレー中に発生
ファイル
| beatoraja.log (325 KB) beatoraja.log | いづ さん, 2026/06/27 20:23 | ||
| log.evtx (68 KB) log.evtx | いづ さん, 2026/06/27 20:23 | ||
| log2.evtx (68 KB) log2.evtx | いづ さん, 2026/06/27 20:23 |
実装に着手しました。
feature/444
glFinish()」を、TDRを誘発・悪化させにくい軽量なfence同期(bounded glClientWaitSync)へ置き換え、GPUドライバへのストレスを低減する。対応が完了しました。
楽曲プレー中のWindows GPU TDRクラッシュ(バグチェック0x141 / nvoglv64.dllのfail-fast / Ada GPU)の緩和。根本はNVIDIAドライバ起因のTDRでbeatoraja内のロジックバグではないが、beatoraja側で制御可能な唯一の要素である「Low Latencyフレームペーシング時の毎フレーム glFinish()」を、ドライバ負荷の軽い上限付きフェンス同期へ置換した。
LowLatencyFrameSync(関数型インターフェース)を新設し、低遅延モード時のフレーム末尾GPU同期を戦略化。MainController:戦略を注入可能にし、未注入時は従来どおり Gdx.gl.glFinish() にフォールバック。発火条件は不変。判定を純粋静的ヘルパー isLowLatencyFrameSyncEnabled(Config) に切り出し。Lwjgl3DesktopBackend:FenceLowLatencyFrameSync を実装。GL32C.glFenceSync + 50ms上限付き glClientWaitSync(GL_SYNC_FLUSH_COMMANDS_BIT)、GL32/ARB_syncの遅延ケイパビリティ検出、未対応時は GL11.glFinish() フォールバック。src/bms/player/beatoraja/LowLatencyFrameSync.java(新規)、src/bms/player/beatoraja/MainController.java、src/bms/player/beatoraja/desktop/Lwjgl3DesktopBackend.java、src/test/java/bms/player/beatoraja/LowLatencyFrameSyncTest.java(新規)の計4件.\gradlew.bat test : 成功(BUILD SUCCESSFUL、新規 LowLatencyFrameSyncTest 6ケースパス)