Graphics
Intel® graphics drivers and software, compatibility, troubleshooting, performance, and optimization
22666 Discussions

Crash in PSSetShaderResources with stencil view of texture

Baldur_K_
Beginner
2,281 Views


-----------------------------------------

System Used: Intel NUC NUC5i5RYH
CPU SKU: i5-5250U
GPU SKU: HD Graphics 6000
Processor Line: Not sure what this is honestly
System BIOS Version: Can check later if relevant
CMOS settings: Can check later if relevant
Graphics Driver Version: 15.40.25.4463
GOP/VBIOS Version: Can check later if relevant
Operating System: Windows
OS Version: Windows 10 64-bit
API: D3D11
Occurs on non-Intel GPUs?: No

Steps to Reproduce:
-------------------------------
1. Create a 2D texture with a typeless depth-stencil format like DXGI_FORMAT_R32G8X24_TYPELESS. Do NOT set D3D11_BIND_DEPTH_STENCIL - only set D3D11_BIND_SHADER_RESOURCE.
2. Create an SRV of the stencil values, in format DXGI_FORMAT_X32_TYPELESS_G8X24_UINT.
3. Copy data into the texture from elsewhere - e.g. another texture that did have the depth-stencil bind flag and was used for rendering.
4. Call PSSetShaderResources to bind the stencil view for reading.
5. Crash occurs inside PSSetShaderResources.

Expected Results:
-------------------------------

No crash and stencil reading via the green channel.

Actual Results:
-------------------------------

Crash on the CPU inside PSSetShaderResources.

Additional Information:

I've attached a sample project which reproduces the bug. The source is fairly stripped down, around ~200 lines without shaders. There's also a pre-compiled exe to run. It follows the repro steps above, and renders to a different depth texture with the BIND_DEPTH_STENCIL flag then copies into the texture for the repro.

At the top of the .cpp there are a couple of toggles you can switch to see where the bug is happening:

- FORCE_WARP is default 0, but set to 1 it will use the WARP renderer. No crash happens, and the rendering is correct (I don't create a window but this can be verified in a graphics debugger if you need to). ADD_BIND_DEPTH_STENCIL
- ADD_BIND_DEPTH_STENCIL will add the D3D11_BIND_DEPTH_STENCIL bind flag onto the texture. This should not be required - the texture is NOT ever bound to depth-stencil, its data is filled via CopyResource. Only BIND_SHADER_RESOURCE should be needed. Note there are no D3D11 debug layer warnings.

btw the code also contains a bug repro for another issue - https://software.intel.com/en-us/forums/graphics-driver-bug-reporting/topic/681614 - so you can ignore the code inside clear_uav_test() I just re-used the same code skeleton for both.

Hopefully this is clear enough - let me know if you need more information.

0 Kudos
2 Replies
Michael_C_Intel2
Employee
2,281 Views

Hi Baldur,

Issue is reported and I am working wit the driver team. I will update you when I learn more. 

-Michael 

0 Kudos
Michael_C_Intel2
Employee
2,281 Views

Hi Baldur,

We have a fix for your issue and it should be in the next driver release. We were working on a fix already as internal testing had also found it. 

-Michael 

0 Kudos
Reply