What does HRESULT 0x88990027 (D2DERR_INTERMEDIATE_TOO_LARGE) mean?

 
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

RecordWhy it matters here
Input and output rectangles for every nodeComparing 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 settingsPreserving 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 expansionFor 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 transformIn 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.

  1. Render a smaller region in the D2DERR_INTERMEDIATE_TOO_LARGE path.
  2. For D2DERR_INTERMEDIATE_TOO_LARGE, reduce effect expansion or scale.
  3. When D2DERR_INTERMEDIATE_TOO_LARGE is returned, split processing into tiles with overlap where mathematically valid.
  4. 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

TestInterpretationHold constant
Same environment, reduced inputIf 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 generationIf 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 pathIf 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.


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