Implement display list to Metal render passes
Add GpuRenderer that translates the DisplayList into batched Metal GPU
draw calls, replacing the software renderer when Metal is available.
- FillRect → solid-color quads via dummy 1x1 white texture
- DrawGlyphs → textured quads sampling from glyph atlas pages
- DrawImage → textured quads from per-node image textures
- PushClip/PopClip → Metal scissor rects with clip stack
- Batches consecutive same-texture draws into single draw calls
- Flushes batches at texture and clip boundary changes
Platform changes:
- Expose MetalView layer/queue/clear_color accessors
- Add RenderCommandEncoder::set_scissor_rect
- Make MTL_PRIMITIVE_TYPE_TRIANGLE and MetalRenderer accessors public
Browser integration:
- GPU path: style → layout → display list → Metal draw (no bitmap copy)
- Software fallback preserved when Metal unavailable
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>