360-Capture-SDK icon indicating copy to clipboard operation
360-Capture-SDK copied to clipboard

Crash in debug on AMD hardware

Open psychicteeth opened this issue 6 years ago • 6 comments

Hi folks,

When I compile the DLL from source, and overwrite the dll after importing the supplied unitypackage, I can get videos to record in release. However, the library crashes in AMDEncoder::fillSurface when calling CopySubresourceRegion in debug. Is this a known issue? Any ideas what I can do to fix it?

GPU hardware is Radeon RX 580, have tried with Unity 2017.4.1f1 and 2018.2.0b7.

psychicteeth avatar Jul 02 '18 14:07 psychicteeth

Hi,

Do you have a log( %LOCALAPPDATA%\FBCapture\FBCaptureSDK.txt)? One thing you might want to take a look is D3D11CreateDevice in FBCaptureSystem.cpp. If it's failing there, you will need to install D3D11 SDK layer or you can also remove that flag.

Solution 1: #ifdef DEBUG // createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; #endif

Solution 2: https://stackoverflow.com/questions/32809169/use-d3d11-debug-layer-with-vs2013-on-windows-10

grancia avatar Jul 02 '18 16:07 grancia

Thanks, I will check those solutions out. The log is thus:

[ 2018-07-04 09:52:54 ][INFO] Capture SDK Version: : 2.0 [ 2018-07-04 09:52:54 ][INFO] Graphics Card Info: : Radeon RX 580 Series [ 2018-07-04 09:52:54 ][INFO] Graphics Card Info: : Microsoft Basic Render Driver [ 2018-07-04 09:52:54 ][INFO] Output folder already existed [ 2018-07-04 09:52:54 ][INFO] AMF version (header): : 1000400000000 [ 2018-07-04 09:52:54 ][INFO] AMF version (runtime): : 1000400020000 [ 2018-07-04 09:52:54 ][INFO] Passed capture capability tests. Ready to start encoding [ 2018-07-04 09:52:55 ][ERROR] No endpoints found [ 2018-07-04 09:52:55 ][INFO] Can't find VR audio devices. Just use default audio input and output [ 2018-07-04 09:52:55 ][ERROR] Failed to get default input audio endpoint with GetDefaultAudioEndpoint. [Error code] : -2147023728 [ 2018-07-04 09:52:55 ][INFO] But we want to keep going without microphone [ 2018-07-04 09:52:55 ][INFO] Start audio capture [ 2018-07-04 09:52:55 ][INFO] Encoding configuration is initiated

And the crash occurs when you start recording. The encoding thread starts up, and when you pass the first frame the AMD encoder crashes. The call stack looks like:

ID3D11DeviceContext::CopySubresourceRegion AMDEncoder::fillSurface AMDEncoder::encodeMain EncoderMain::startEncoding

psychicteeth avatar Jul 04 '18 09:07 psychicteeth

Output from DirectX

D3D11 CORRUPTION: ID3D11DeviceContext::CopySubresourceRegion: First parameter is corrupt or NULL [ MISCELLANEOUS CORRUPTION #13: CORRUPTED_PARAMETER1]

psychicteeth avatar Jul 04 '18 12:07 psychicteeth

The texture descriptors look fine - they match exactly except for the encoding texture is marked as a shared resource image

psychicteeth avatar Jul 04 '18 14:07 psychicteeth

The crash also occurs if you replace CopySubresourceRegion with CopyResource

psychicteeth avatar Jul 05 '18 10:07 psychicteeth

Can you check if you're still able to see the issue with v2.2? Please don't forget to build in release mode or remove following line in FBCaptureSystem.cpp if you didn't install D3D11 SDK Layers library.

#ifdef DEBUG // createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG; #endif

grancia avatar Aug 06 '18 20:08 grancia