UpdateResourceImmediate(bool bClearRenderTarget=true) does not respect the bClearRenderTarget

I think the problem you were running into is that UTexture::UpdateResource() automatically “renames” the underlying resource for you.

Since the CPU and GPU are on different timelines you can think of “renaming” as a new surface is allocated for you on each UpdateResource() since the previous updates may still be in flight on the GPU.

So in this case “bClearOnUpdate” really means, “will you write all the pixels? in that case you can skip the initial clear.” On update the whole surface is expected to be refreshed.

If you can describe your end goals we can discuss some alternative approaches.