Advertisement Jump to content
Sign in to follow this  
L. Spiro

PIX Crash

This topic is 1876 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I can’t run the 64-bit version of PIX on my DirectX 11 build.  It only works on my DirectX 9 build.
 
I have enabled full debug output for the application I am trying to debug in the console and there are no errors in my usage of DirectX 11.
Actually, there is very little time for any errors, as it crashes when I create the swap chain.  Even without the debug run-time I would have caught any errors here long ago as I report errors manually religiously.
 
My code is as follows:

	LSBOOL LSE_CALL CDirectX11::CreateSwapChainBackBuffers( HWND /*_hWnd*/ ) {
		SafeRelease( m_pt2dDepthStencilBuffer );
		SafeRelease( m_pdsvDepthStencilView );
		SafeRelease( m_pdssDepthStencil );
		SafeRelease( m_prtvRenderTargetView );


		// Create the color buffer.
		ID3D11Texture2D * ptBuffer = NULL;
		if ( FAILED( m_pscSwapChain->GetBuffer( 0UL, __uuidof( ID3D11Texture2D ),
			reinterpret_cast<VOID **>(&ptBuffer) ) ) ) {
			CStd::DebugPrintA( "Failed to access front buffer.\r\n" );
		}
// THE LINE BELOW CRASHES PIX.
		if ( FAILED( m_pdDevice->CreateRenderTargetView( ptBuffer, NULL, &m_prtvRenderTargetView ) ) ) {
			CStd::DebugPrintA( "Failed to create the main render target.\r\n" );
		}
		SafeRelease( ptBuffer );
In normal run-time scenarios both GetBuffer() and CreateRenderTargetView() work fine; no errors reported by my code nor by the DirectX debug run-time.

Only inside of PIX it crashes on CreateRenderTargetView().
I’ve also tried “m_pdDevice->CreateRenderTargetView( ptBuffer, NULL, NULL )” to verify the parameters and it returns S_OK.

So the problem is definitely on the side of PIX.

Anyone have this before and know a way around it?


L. Spiro

Share this post


Link to post
Share on other sites
Advertisement


Anyone have this before and know a way around it?

Yes and no.

PIX is highly unstable for DX11 apps - sometime it works, sometime it doesn't. Sometime it works - then you change a minor thing in the app and it crashes or fails.

Pre Febuary 2010 releases where more stable, but (I think) lacked DX11 support.

 

Why aren't you using the VS2012/13 graphics debugger?

Share this post


Link to post
Share on other sites

WinPix is showing its age and is no longer supported. It especially suffers from such seemingly-intermittent crashes. The Graphics Diagnostics in VS2012 and 2013 is the supported tool going forward. Graphics Diagnostics at the present time is not as full-featured as WinPix was, but the team is working hard to get closer to parity. Still, its very useful for debugging problems in its current state, even if it lacks performance tuning features completely for now.

 

For VS2012/Windows 8 (and down-level) its not perfect but still much better than WinPix as far as stability. VS2013/Win8.1 is much more stable and several times faster for capture and playback of errors. Its also free in VS2013 express for Windows Store (but you can still use it to perform useful graphics diagnostics investigations against desktop apps by following the instructions for To enable the capture of graphics information without loading a project or solution here.)

Share this post


Link to post
Share on other sites

Thank you.

 

I will either have to get Windows XP to work on my new motherboard or gain access to a newer version of Visual Studio® (though neither seems likely).

 

 

L. Spiro

Share this post


Link to post
Share on other sites

Is it possible you could use any of the vendor-specific diagnostic tools to help with your situation? The WinPix advantage, and that of Graphics Diagnostics, are their cross-vendor capability, but the vendor tools are quite comparable, even if they all work a bit different. It might be a more tractable solution in your case than other alternatives.

Share this post


Link to post
Share on other sites

Thank you.

 

I will either have to get Windows XP to work on my new motherboard or gain access to a newer version of Visual Studio® (though neither seems likely).

 

 

L. Spiro

 

Actually the express version of VS 2013 now includes the graphics debugger, so you don't need to buy Pro or Ultimate.

Share this post


Link to post
Share on other sites

The problem for DX11 is that PIX doesnt understand the runtime that shipped with win8 and win8.1, so on a win 7 build DX11 pix should work perfectly fine if the application isn't built against the DX11 Win8 SDK version. I never had any issues on DiRT3 with PIX for windows x64, and that was running on DX11 and a 6970 card, used it loads as it was sometimes the only way to figure out whether an animation would work or not in the UI tech.

 

For anything built agains the Win8 SDK DX or higher versions you are going to have to be using the Graphcis Debugger that ships with VS now, which for some reason doesnt work for me.

Share this post


Link to post
Share on other sites

Which OS are you targeting and/or developing on?  Like Ravyne and MJP mentioned, you can use the Graphics debugger from VS2013 for Store Apps to debug desktop apps too.  Depending on which platform you are targeting, you will have to jump through different hoops - but in the end you will get a usable debugger.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!