/// Checks if visual has time critical content. You need to call InvalidateVisual for this property to be re-queried.
/// </summary>
boolHasRenderTimeCriticalContent{get;}
/// <summary>
/// Checks if visual has a new frame. This property can be read from any thread.
/// </summary>
boolThreadSafeHasNewFrame{get;}
/// <summary>
/// Draws the new frame during the render pass. That can happen on any thread
/// </summary>
/// <param name="context">DrawingContext. The available API is limited by stuff that can run on non-UI thread (brushes has to be immutable, no visual brush, etc)</param>
/// <param name="logicalSize">Logical size of the visual during the layout pass associated with the current frame</param>
/// <param name="scaling">DPI scaling of the target surface associated with the current frame</param>