| Previous | Next |
| D2DERR_EXCEEDS_MAX_BITMAP_SIZE | D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION |
D2DERR_INVALID_GRAPH_CONFIGURATION
D2DERR_INVALID_GRAPH_CONFIGURATION identifies a failure in Direct2D custom-effect transform graphs. A custom effect transform graph violates a public graph construction rule.
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.
Nodes, input mapping, output node, connections, and transform input counts.
Build a useful incident record
| Record | Why it matters here |
|---|---|
| All node identities and input counts | Recording all node identities and input counts ties the HRESULT to the Direct2D custom-effect transform graphs boundary rather than to the final visible failure. |
| Edges and effect-input mappings | Comparing edges and effect-input mappings shows whether this result follows input, object state, or environment. |
| Output node and passthrough state | Preserving output node and passthrough state provides the evidence needed to test this distinction: iNVALID_INTERNAL_GRAPH_CONFIGURATION identifies an internal inconsistency; INVALID_GRAPH_CONFIGURATION generally points to the graph supplied by effect code. |
| Initialize or SetGraph sequence | Recording Initialize or SetGraph sequence separates the Direct2D custom-effect transform graphs boundary from a later wrapper symptom. |
Interpret the controls
| Test | Interpretation | Hold constant |
|---|---|---|
| Same environment, reduced input | If this result disappears with a smaller faithful case, complexity within Direct2D custom-effect transform graphs is implicated. | Keep all node identities and input counts fixed while simplifying output node and passthrough state. |
| Same input, fresh object instance | If it changes after rebuilding state, examine ownership across the caller’s object graph, custom effect or renderer, Direct2D validation layer, backing device, and deferred draw boundary. | Place edges and effect-input mappings on the timeline of the last successful transition. |
| Same operation on a controlled second path | If it follows one environment, the failure is not explained by source data alone. | Compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving Initialize or SetGraph sequence. |
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.
- Build a one-node pass-through graph.
- Add nodes and edges incrementally.
- Ensure each required effect input maps once.
- Set one reachable output node.
Keep neighboring failures separate
INVALID_INTERNAL_GRAPH_CONFIGURATION identifies an internal inconsistency; INVALID_GRAPH_CONFIGURATION generally points to the graph supplied by effect code. 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.
Prove the correction
A correction should let the operation at the Direct2D custom-effect transform graphs boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Build a one-node pass-through graph” and confirm that the following lifecycle step also succeeds.
Technical references
Looking for a different code? Search another status or error code.