The reason for the crash is that the underlying resource uses DXGI_FORMAT_B8G8R8A8_TYPELESS, and UAV support for that format is optional. UCanvasRenderTarget2D sets bCanCreateUAV to true always, without checking RHIIsTypedUAVLoadSupported() for the format. It does this because it might need to generate mips for the texture, and sometimes this uses a compute shader.

What should happen instead is that we don't request UAV creation if the card can't do UAVs for the format, and mip generation should be forced to use the raster path if there's no UAV. UCanvasRenderTarget2D shouldn't deal with any of this, it should be moved to the base class (UTextureRenderTarget2D) if possible.

Original bug report came from this UDN: [Link Removed]

Steps to Reproduce
  • Create a Canvas Render Target
  • Set format to RTF_RGBA8
  • Observe crash:
    Fatal error: Direct3DDevice->CreateUnorderedAccessView failed with error E_INVALIDARG

[Image Removed]

The error report came from a machine running Win10 1607 (old!) on an Nvidia GTX 1060. No information about driver version.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-114254 in the post.

Login to Vote

ComponentUE - Rendering
Affects Versions4.26
Target Fix5.0
Fix Commit18434935
CreatedApr 26, 2021
ResolvedDec 16, 2021
UpdatedJan 14, 2022