Hi,
I'm developing a DirectX11-based shader authoring tools ( http://www.shaderplay.com/screenshot_1.jpg ) and am working on putting in support for shader tracing/debugging similar to PIX for the 360/PC where the user can step through shader code.
The shader tracing functionality in available in DirectX 11.1 only and given that I was working with DX 11 hardware, I was actually able to get this working with the DirectX 11.2 API and the DirectX WARP software device type ( D3D_DRIVER_TYPE_WARP ), as well as the D3D_FEATURE_LEVEL_11_1 feature level, and the required D3D11_CREATE_DEVICE_DEBUGGABLE creation flag. This actually worked but as you can imagine it's slow as hell.
I noticed AMDs Radeon R7/R9 had full Direct X 11.2 support so I just picked up a XFX R7 260x and XFX R9 270x for testing. The device creation fails to create a D3D_FEATURE_LEVEL_11_1 with the D3D11_CREATE_DEVICE_DEBUGGABLE flag. Shouldn't the DX11.2 hardware support shader tracing? I'm on the latest driver ( 12/17/2013 ), but not the beta ones. Is this something you plan on supporting in upcoming drivers?
The following works and has shader tracing capability but is using a software WARP device.
D3D_FEATURE_LEVEL FeatureLevels[] = { D3D_FEATURE_LEVEL_11_1 };
HRESULT Result = D3D11CreateDevice( NULL, D3D_DRIVER_TYPE_WARP, NULL, D3D11_CREATE_DEVICE_SINGLETHREADED | D3D11_CREATE_DEVICE_DEBUGGABLE, FeatureLevels, 1, D3D11_SDK_VERSION, &m_D3DDevice, &m_FeatureLevel, &m_D3DDeviceContext );
The following fails with result of "0x887a0004 : The specified device interface or feature level is not supported on this system." ( using R9 270x or R7 260x )
D3D_FEATURE_LEVEL FeatureLevels[] = { D3D_FEATURE_LEVEL_11_1 };
HRESULT Result = D3D11CreateDevice( NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, D3D11_CREATE_DEVICE_SINGLETHREADED | D3D11_CREATE_DEVICE_DEBUGGABLE, FeatureLevels, 1, D3D11_SDK_VERSION, &m_D3DDevice, &m_FeatureLevel, &m_D3DDeviceContext );
The following succeds without D3D11_CREATE_DEVICE_DEBUGGABLE and creates a 11.1 device but without shader tracing.
D3D_FEATURE_LEVEL FeatureLevels[] = { D3D_FEATURE_LEVEL_11_1 };
HRESULT Result = D3D11CreateDevice( NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, D3D11_CREATE_DEVICE_SINGLETHREADED, FeatureLevels, 1, D3D11_SDK_VERSION, &m_D3DDevice, &m_FeatureLevel, &m_D3DDeviceContext );
Any help would be greatly appreciated, I would really love to get this feature working, especially with NVidia not even supporting 11.1 or 11.2...
Cheers,
Scott