Hi, I did open the bug report. Some notes to this PR:
My colleagues and I are able to reproduce this bug regularly, even though it takes sometimes up to 3 or 4 weeks until the D3DERR_DEVICEHUNG error shows up. We are currently evaluating two versions of fixes, but until now we do not have any results. I will post them as soon as I got them. Version 1 (this version): Based on the observation, that the TestCooperativeLevel/CheckDeviceState method returns D3D_OK again after about 20 - 60 seconds, the reinitialize is called after the first time the state is returning D3D_OK. The 'isHung' flag stores the information until then. Version 2: calls reinitialize directly after D3DERR_DEVICEHUNG has been returned. Basically if (hr == D3DERR_DEVICEREMOVED || hr == D3DERR_DEVICEHUNG ) { .. } I did not modify the validatePresent method, as for our workaround (see ticket) it was not necessary. At least the native call swapchain->present dows not return that error code (https://learn.microsoft.com/en-us/windows/win32/api/d3d9/nf-d3d9-idirect3dswapchain9-present). I did not look decisively into all the native calls behind D3DRTTexture#readPixels. As I said I will post the results (prism.verbose output) for the 2 versions later as a base for discussions. ------------- Commit messages: - Reinitialize D3D pipeline directly after D3DERR_DEVICEHUNG error is - Merge branch 'openjdk:master' into D3DERR_DEVICEHUNG - Removed trailing whitespace - Handle D3DERR_DEVICEHUNG error Changes: https://git.openjdk.org/jfx/pull/1199/files Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1199&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8313648 Stats: 23 lines in 2 files changed: 14 ins; 4 del; 5 mod Patch: https://git.openjdk.org/jfx/pull/1199.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1199/head:pull/1199 PR: https://git.openjdk.org/jfx/pull/1199