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 this result 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 this result 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 expansionRecording blur, scale, convolution, and transform expansion separates the Direct2D targets, device capabilities, and intermediates boundary from a later wrapper symptom.
DPI and world transformIn this result 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. Temporarily changing targets, requesting unsupported capabilities, or propagating huge effect bounds are different problems., record target history and capability queries before allocating or drawing.

Inspect the following boundary: bounds propagation and tiling of effect intermediates.

Reproduce without destructive cleanup

When it 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.

  1. Render a smaller region.
  2. reduce effect expansion or scale.
  3. When it is returned, split processing into tiles with overlap where mathematically valid.
  4. Log the first node whose bounds exceed limits.

Limits of this code

TOO_MANY_SHADER_ELEMENTS is shader complexity; INTERMEDIATE_TOO_LARGE is spatial resource size. 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 this result disappears with a smaller faithful case, complexity within Direct2D targets, device capabilities, and intermediates is implicated.Keep input and output rectangles for every node fixed while simplifying blur, scale, convolution, and transform expansion.
Same input, fresh object generationIf 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 device maximum bitmap size and tiling settings on the timeline of the last successful transition.
Same operation on a controlled second pathIf 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 DPI and world transform.

What success must demonstrate

A correction for it 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. Keep the original failing sample and one deliberate negative case so fallback cannot be mistaken for repair.

Technical references

When it 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.