4 Replies Latest reply on Apr 23, 2014 3:56 PM by scottiebizzle

    No shader tracing support in R7/R9 drivers despite DirectX 11.1/11.2 support?

    scottiebizzle

      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