createCubeRenderTarget method
A cube a pass may aim at one face and one level of.
This used to be null, and the conformance suite is what said it could not stay null. The argument for the null was that a cube a probe can draw into is only useful beside a chain it can filter into, so the two should arrive together — but supportsCubeTextures answering true is a promise about more than sampling: the suite reads it as "a pass can name a face of a cube", clears three of them and reads them back, and a backend that answered true and then handed back no cube failed that check rather than declining it. It was a gap wearing a refusal's clothes.
The chain arrived with it and went unclaimed for a while: mipLevels has
been honoured here since the cube was, and supportsRenderToMip went on
saying no. Both halves ReflectionProbeNode.supportedOn asks for are yes
now. Six array layers and a view per face and level is
webgpu_resources.dart's whole answer.
Implementation
@override
TextureHandle? createCubeRenderTarget({
required int size,
required TextureFormat format,
int mipLevels = 1,
}) => guard(
'a ${size}x$size ${format.name} cube target',
() => webgpuCreateCubeRenderTarget(
gpuDevice,
_textures,
size: size,
format: format,
mipLevels: mipLevels,
),
);