What does HRESULT 0x88990020 (D2DERR_CYCLIC_GRAPH) mean?

 
Previous Next
D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION D2DERR_BITMAP_CANNOT_DRAW

D2DERR_CYCLIC_GRAPH

The scope of D2DERR_CYCLIC_GRAPH is Direct2D custom-effect transform graphs. The effect image or transform dependencies form a cycle. Keep 0x88990020 beside the returning method because a wrapper can replace this distinction with a generic subsystem message.

What the status establishes

A transform graph must have valid node identities, supported input counts, complete input mappings, one reachable output, and no cycles. Public graph configuration errors usually point to caller construction; an internal graph error warrants preserving a minimal valid-looking graph and runtime evidence rather than inventing a missing public rule.

Edges among effects, command lists, images, and transform nodes.

Keep neighboring failures separate

INVALID_GRAPH_CONFIGURATION is broader; CYCLIC_GRAPH gives the exact acyclic invariant that failed. Do not respond with a universal render-target recreation loop unless the returned status specifically documents device-loss recovery; graph, property, numeric, lifetime, and print-state errors require correcting their contract.

Evidence to preserve

  • Node and image identities
  • Edge that closes the cycle
  • Effect input assignments and target image
  • Graph generation and reuse history

Reduce the scenario safely

Build one pass-through node, validate it, and add one node or edge per step. Log input count, edge endpoints, effect-input mapping, output selection, and topological order before committing the graph.

  1. Run cycle detection before SetInput or graph commit.
  2. Use distinct intermediate images.
  3. build the chain from source toward output.
  4. Avoid using the current target as its own upstream input.

Technical references


Looking for a different code? Search another status or error code.