| 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.
- Run cycle detection before SetInput or graph commit.
- Use distinct intermediate images.
- build the chain from source toward output.
- Avoid using the current target as its own upstream input.
Technical references
Looking for a different code? Search another status or error code.
