Case Study / 001

Patternata

High-Performance Large-Format Canvas Engine for iOS

A Metal-powered tiled rendering system enabling canvases up to 12,993 × 12,993 px and 8,268 × 21,260 px at 300 DPI on iPhone and iPad.

Patternata rendering a large-format canvas
12,993px Canvas Active
Industry
Creative ToolsGraphics Engine
Project Type
Rendering EnginePerformance Architecture
Platform
iOS (Metal)
Canvas Scale
Up to 8,268 × 21,260 px
Export
Raster + VectorPDF / SVG
Role
Lead ArchitectDeveloper
Context

The Real Constraint

Most drawing apps rely on a single large GPU texture. At 300 DPI, print-scale canvases quickly exceed safe memory and texture limits.

70 × 180 cm @ 300 DPI8,268 × 21,260 px
110 × 110 cm @ 300 DPI12,993 × 12,993 px

Allocating these as single textures leads to crashes, frame drops, or instability on memory-constrained iPhones. Patternata was built to solve this at the architectural level.

Scale Comparison

Beyond every GPU texture limit.

Metal Texture Limit (iPhone)8,192px
Print-Scale Requirement (300 DPI)15,000px
Patternata (Tiled)
21,260px
Engineering Challenges

Constraints

GPU Texture Size Limits

Metal texture allocation constraints for large dimensions.

Memory Pressure on 4GB Devices

Stability on iPhone 11-class hardware.

Real-Time Interaction

Maintaining smooth pan, zoom, and draw on extreme pixel counts.

Export Constraints

Avoiding single-texture export bottlenecks.

Print Fidelity

Preserving physical scale accuracy at 300 DPI.

Architecture

Tiled Rendering

Tiled rendering grid visualization
Core Architecture

Tile Grid Engine

Instead of allocating one massive texture, the canvas is divided into a grid of smaller tile textures. Each tile is managed independently, created on demand, and cached with device-tiered memory limits.

01Physical units converted to pixel space
02Canvas segmented into tile grid
03Viewport-driven tile residency
04Dirty-region redraw strategy
05Selective tile recovery on eviction
Performance

Runtime Stability

Real-time interaction on large canvas
Viewport-Driven Rendering

60 FPS Stability

Rendering is viewport-driven. Only visible tiles are rendered per frame.

Interaction updates use transforms instead of full redraw.

Stroke baking targets intersecting tiles only.

Render loop is capped at 60 FPS intentionally for stability and thermal control.

Export

Progressive Pipeline

Export pipeline processing canvas

Large outputs do not render as a single texture. Instead, the export pipeline processes the canvas progressively to stay within hardware limits.

01Progressive strip rendering
02GPU-safe dimension guards
03CPU fallback for extreme strips
04Vector export via separate PDF/SVG pipeline
Results

Outcome

21k+Max Canvas (px)

Print-scale rendering up to 8,268 × 21,260 px

60fpsStable Interaction

Smooth pan, zoom, and draw on extreme canvases

4GB→M4Device Range

Tiered stability from iPhone 11 to M-series iPad

0Export Crashes

Reliable output without texture-limit failures

Ownership

Role & Ownership

Led the architecture and implementation of the tiled Metal rendering engine, memory-tiered tile system, selective redraw pipeline, and progressive export strategy.

Stack

Tech Stack

SwiftMetalUIKitCore GraphicsPDFKitCustom Rendering Engine

Start Building

Have a product that needs to push hardware boundaries?