Unpredictable behavior for background waiting

I've run into issues with background waiting for rendering. Specifically when IsWaitingInBackgroundUntilRendered is set to true and 4 views with child views having useMasterRenderingSteps set to true as well.

When toggling visibility or changing rasterizer state (wireframe) the changes are not propagated well. This behavior is not predictable. For the wireframe, you sometimes end up with 2 views in wireframe, sometimes with 3. It's also possible to get half of the view in wireframe and half shaded.

I have no solid way to reproduce it, on some hardware it never happens, on some it's easily reproduced. When the background waiting is disabled however, it does not happen. Though it seems to be related to how performant the hardware is. Setting BackgroundWaitingUntilRenderedThresholdTimeMs to large value also prevents the issue (but that is just disabling the background waiting).

Currently running on DXEngine 5.0.8000. I have dxdiag/ab3d logs available and there are not any issues that I could found.

Roman Janovsky
Hm, this is a good find. I would recommend to disable background waiting in case of multiple child views that use master rendering steps. You can also create child views by setting useMasterRenderingSteps to false.

In this case when useMasterRenderingSteps is true, then the same instance of CompleteRenderingStep is used for multiple views and this can call invalidate view at the wrong times.

I will update the code so that it will automatically disable waiting in the background in that case.
Andrej Benedik

Forum Jump:

Users browsing this thread:
1 Guest(s)