| Previous | Next |
| D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES | D2DERR_EFFECT_IS_NOT_REGISTERED |
D2DERR_INTERMEDIATE_TOO_LARGE
D2DERR_INTERMEDIATE_TOO_LARGE identifies a failure in Direct2D targets, device capabilities, and intermediates. An effect graph requires an intermediate image too large for current tiling or device limits. Investigation of D2DERR_INTERMEDIATE_TOO_LARGE should preserve the original object generation before cleanup, retry, or fallback creates a secondary result.
Diagnostic evidence matrix
| Record | Why it matters here |
|---|---|
| Input and output rectangles for every node | Comparing input and output rectangles for every node shows whether D2DERR_INTERMEDIATE_TOO_LARGE follows input, object state, or environment. |
| Device maximum bitmap size and tiling settings | Preserving device maximum bitmap size and tiling settings provides the evidence needed to test this distinction: tOO_MANY_SHADER_ELEMENTS is shader complexity; INTERMEDIATE_TOO_LARGE is spatial resource size. |
| Blur, scale, convolution, and transform expansion | For D2DERR_INTERMEDIATE_TOO_LARGE, recording blur, scale, convolution, and transform expansion separates the Direct2D targets, device capabilities, and intermediates boundary from a later wrapper symptom. |
| DPI and world transform | In D2DERR_INTERMEDIATE_TOO_LARGE diagnostics, recording DPI and world transform ties the HRESULT to the Direct2D targets, device capabilities, and intermediates boundary rather than to the final visible failure. |
Start with the returning API
A device context has target identity and is backed by a Direct3D device with format, feature, shader, and maximum-size limits in the D2DERR_INTERMEDIATE_TOO_LARGE path. For D2DERR_INTERMEDIATE_TOO_LARGE, temporarily changing targets, requesting unsupported capabilities, or propagating huge effect bounds are different problems. When D2DERR_INTERMEDIATE_TOO_LARGE is returned, record target history and capability queries before allocating or drawing.
For D2DERR_INTERMEDIATE_TOO_LARGE, inspect the following boundary: bounds propagation and tiling of effect intermediates.
Reproduce without destructive cleanup
When D2DERR_INTERMEDIATE_TOO_LARGE is returned, use the original target and a small supported bitmap or effect region first. Then change one target, capability, format, or spatial expansion at a time while logging device and context generations in the D2DERR_INTERMEDIATE_TOO_LARGE path.
- Render a smaller region in the D2DERR_INTERMEDIATE_TOO_LARGE path.
- For D2DERR_INTERMEDIATE_TOO_LARGE, reduce effect expansion or scale.
- When D2DERR_INTERMEDIATE_TOO_LARGE is returned, split processing into tiles with overlap where mathematically valid.
- Log the first node whose bounds exceed limits in the D2DERR_INTERMEDIATE_TOO_LARGE path.
Limits of this code
TOO_MANY_SHADER_ELEMENTS is shader complexity; INTERMEDIATE_TOO_LARGE is spatial resource size. For D2DERR_INTERMEDIATE_TOO_LARGE, 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.
Useful comparison axes
| Test | Interpretation | Hold constant |
|---|---|---|
| Same environment, reduced input | If D2DERR_INTERMEDIATE_TOO_LARGE disappears with a smaller faithful case, complexity within Direct2D targets, device capabilities, and intermediates is implicated. | For D2DERR_INTERMEDIATE_TOO_LARGE, keep input and output rectangles for every node fixed while simplifying blur, scale, convolution, and transform expansion. |
| Same input, fresh object generation | If D2DERR_INTERMEDIATE_TOO_LARGE 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. | For D2DERR_INTERMEDIATE_TOO_LARGE, place device maximum bitmap size and tiling settings on the timeline of the last successful transition. |
| Same operation on a controlled second path | If D2DERR_INTERMEDIATE_TOO_LARGE follows one environment, the failure is not explained by source data alone. | For D2DERR_INTERMEDIATE_TOO_LARGE, compare adapter and feature level, factory and device generations, target identity, debug-layer output, and thread ownership while preserving DPI and world transform. |
What success must demonstrate
A correction for D2DERR_INTERMEDIATE_TOO_LARGE should let the operation at the Direct2D targets, device capabilities, and intermediates boundary complete repeatedly under the original supported conditions. Repeat the control that begins with “Render a smaller region” and confirm that the following lifecycle step also succeeds. For D2DERR_INTERMEDIATE_TOO_LARGE, keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.
Technical references
When D2DERR_INTERMEDIATE_TOO_LARGE is returned, these references define the public API family, object model, or error list used to interpret this status.
- Microsoft: Direct2D error codes.
- Microsoft: Direct2D devices and device contexts.
- Microsoft: Direct2D custom effects.
- Microsoft: Direct2D API overview.
Looking for a different code? Search another status or error code.