supportsRenderToMip property

  1. @override
bool get supportsRenderToMip
override

Whether a pass can draw into a mip level below the base — see ColorTarget.mipLevel.

Asked rather than assumed, and it is the one capability here that splits a single backend by platform: flutter_gpu reports it as doesSupportFramebufferRenderMipmap, true on Metal and Vulkan and false on its OpenGL ES path, where an attachment naming a level other than zero is refused. WebGL2 attaches any level with framebufferTexture2D, and the software rasteriser writes into whichever array it is pointed at.

Rendering into a cube face is not gated by this — every backend that answers true to supportsCubeTextures can attach a face at the base level. What this decides is whether a probe's roughness chain can be filtered on the device: a reflection probe renders six views into a cube and then convolves them into the levels below, and the second half needs a level to draw into. A device that says no gets no probe at all — see ReflectionProbeNode.supportedOn, which asks this and supportsCubeTextures together — because a cube with a base level only is a mirror at every roughness, which is a picture nobody asked for; the material there goes on reading the scene's environment.

Implementation

@override
bool get supportsRenderToMip => inner.supportsRenderToMip;