MetalFX FrameInterpolator assertion: `Color texture width mismatch from descriptor` even when all texture sizes match

I am integrating MetalFX FrameInterpolator into a custom Unity RenderGraph–based render pipeline (C++ native plugin + C# render passes), and I am hitting the following assertion at runtime:

/MetalFXDebugError.h:29: failed assertion `Color texture width mismatch from descriptor'

What makes this confusing is that all input/output textures have the correct width and height, and they exactly match the values specified in the MTLFXFrameInterpolatorDescriptor.

Setup

Input resolution: 1024 x 512

Output resolution: 2048 x 1024

MTLFXTemporalScaler is created first and then passed into MTLFXFrameInterpolator

The TemporalScaler and FrameInterpolator descriptors use the same input/output sizes and formats

All Metal textures:

Have no parentTexture

Are 2D textures

Match the descriptor sizes exactly (verified via logging)

Texture bindings at encode time frameInterpolator.colorTexture = mtlTexColor; // 1024 x 512 frameInterpolator.prevColorTexture = mtlTexPrevColor; // 1024 x 512 frameInterpolator.motionTexture = mtlTexMotion; // 1024 x 512 frameInterpolator.depthTexture = mtlTexDepth; // 1024 x 512 frameInterpolator.uiTexture = mtlTexUI; // 2048 x 1024 frameInterpolator.outputTexture = mtlTexOutput; // 2048 x 1024

All widths/heights are logged and match:

Color : 1024 x 512 (input) PrevColor : 1024 x 512 (input) Motion : 1024 x 512 (input) Depth : 1024 x 512 (input) UI : 2048 x 1024 (output) Output : 2048 x 1024 (output)

The TemporalScaler works correctly on its own. The assertion only occurs when using FrameInterpolator.

Important detail about colorTexture

Originally, colorTexture was copied from BuiltinRenderTextureType.CurrentActive. After reading that this might violate MetalFX semantics, I changed the pipeline so that:

colorTexture now comes from a dedicated private RenderGraph texture

It is not the backbuffer

It is not a drawable

It is not used as a final output

It is created before UI rendering

Despite this, the assertion still occurs.

Question

Can uiTexture for MTLFXFrameInterpolator legally come from a texture copied from BuiltinRenderTextureType.CurrentActive?

More generally:

Are there additional hidden constraints on colorTexture / prevColorTexture (such as Metal usage, storageMode, aliasing, or hazard tracking) that could cause this assertion, even when sizes match?

Does FrameInterpolator require colorTexture and prevColorTexture to be created in a very specific way (e.g. non-aliased, ShaderRead usage, identical Metal resource properties)?

Any clarification on the exact semantic requirements for colorTexture, prevColorTexture, or uiTexture in MetalFX FrameInterpolator would be greatly appreciated.

MetalFX FrameInterpolator assertion: `Color texture width mismatch from descriptor` even when all texture sizes match
 
 
Q