[WebXR Layers] Implement Cube layer
WebXR Layers let web content submit compositor layers directly to the XR runtime, bypassing normal framebuffer composition. WebKit splits XR work between the WebProcess (JS, GL calls) and the UIProcess (owns the XR session, talks to OpenXR). Cube layers are uniquely difficult: GL cube maps have 6 faces and cannot be shared across processes via DMABuf like ordinary 2D textures.
Source/WebCore/Modules/webxr/WebXRWebGLSwapchain.cpp
This commit implements XRCubeLayer end-to-end: WebCore-side swapchain management, a new WebXRWebGLMultiTextureSwapchain abstract base generalizing multi-face/array texture handling, cross-process serialization of cube layer data, and an OpenXR backend using XR_KHR_composition_layer_cube. The 6 faces are serialized into side-by-side 2D textures for IPC transfer, then reconstructed in the UIProcess via reconstructCubeFaces(). Stereo mode doubles this to 12 faces across two cube maps. Both mono/stereo and texture-array-backed cube layers are supported.
Significance
This is substantial new GPU texture-management code crossing the WebProcess/UIProcess boundary, with non-trivial index arithmetic over multi-face cube maps — exactly where integer overflow or bounds-confusion bugs tend to hide.