Skip to content

Optional WebGL verification

Both selected million-observation gaps are closed. All eight GPU cases and all eight matched CPU reference cases meet their unchanged gates on Apple M1 Pro, MacBookPro18,3, 16 GiB RAM, macOS 26.4 (25E5207k), Chromium 147.0.7727.15 / ANGLE Metal. See all measurements, budgets and limitations. The complete raw matrices retain all three runs per case and the same emitted JavaScript hash. Profiled/interrupted experiments are excluded from these claims.

The shared Charts owner reduces discarded validation copies and large temporary lookup tables, avoids per-point scatter array/string-key churn, and uses compact GPU rectangle storage when shape/paint are uniform. Mixed geometry/paint retains the original full layout and one instanced draw. Vertex, uniform typed-staging and floating coverage resources are reused across redraw/resize. No source observations, CPU inspection entries or SVG fallback/export geometry are dropped. Runtime validation, public snapshot ownership and supported option values remain unchanged. Reordered/shared-observation analytical mappings retain full lookup validation; ordered mappings still check every identity, schema and matrix value.

CheckResult
Charts full unit suite3,038 passed / 180 files
Pivot full unit suite4,069 passed / 326 files
Dense SVG, navigation/XY brush and built-package compatibility33 passed across Chromium, Firefox 148.0.2 and WebKit
Metal GPU functional, coverage, export and resource lifecycle19 passed
Same GPU cohort in standard headless Chromium19 passed; functional evidence only
Forced unavailable GPU, all three browser engines3 passed
M3 GPU + matched CPU reference matrices8 + 8 completed; every applicable gate passes
M2 batched SVG + 1k default SVG regression9 + 3 completed; every original gate passes
Charts/Pivot ESM and UMD builds; source and built public typesPassed
Packed Charts per-type imports, isolated declarations and line-only graphPassed; 223 modules
Public framework SSR checks3 passed
Portal docs contracts and production build9 passed; build passed

The 19 GPU cases include four families in standalone/Pivot, raw pointer/keyboard activation, nulls/clipping/reversal, navigated/restored windows, DPR 2 and narrow resize, real context loss and updates while lost, CPU SVG/PNG exports and PDF encoder input, policy switch and destroy. Additional cases verify dense subpixel coverage before/after shrink and recovery, absent float blending/unavailable GPU, DPR 1/2 hairlines, ordered mixed-color blending in one draw, varying radii after layout expansion, shared typed-buffer/vertex/texture reuse, zero-area recovery and injected upload-failure fallback/recovery. Context/listener accounting shows no extra contexts or attached handlers after switch/destroy in these fixtures.

The PDF test verifies the canonical clean CPU-SVG payload in both products; it does not validate a third-party PDF encoder’s output bytes. Native/vector-PDF pipeline tests pass in the full suite. Center pixels agree within four channel values in the product fixtures; this is not whole-image or SVG feature equality. Actual GPU recovery/performance is measured on Chromium/Metal. Firefox/WebKit checks cover CPU rendering and unavailable-GPU behavior, not untested driver recovery. Standard-headless/software GPU checks are functional evidence only. Retained heap/buffer budgets do not measure native process RSS, peak driver/GPU allocations or long-session leaks. Three-run p95 is the maximum of those samples; the million-bar/column submission margins are small and are not cross-host guarantees.

The source and public package checks are local. The pre-closure base had green CI run 39084633849; that run predates this performance closure. The closure is committed separately on codex/chart-rendering-followthrough; its source-matched CI is recorded on PR #733, which was already merged before this follow-up. No additional merge, package publication, version bump or deployment is part of this request. The package version remains 3.0.10. The separate docs examples checkout was not edited by this performance change; its earlier build/browser evidence remains separate from the current portal reference checks. Matching installed-package release verification remains release work, outside this request.

Terminal window
E2E_PACKAGE=charts E2E_PORT=5421 CHART_GPU_BACKEND=metal pnpm --filter @revolist/revogrid-e2e-enterprise exec playwright test tests/chart-webgl.spec.ts tests/chart-webgl-coverage.spec.ts --config=playwright.webgl.config.ts --project=charts --workers=1
node packages/charts/scripts/report-webgl.mjs packages/charts/docs/webgl-optimized.json --check

Use playwright.charts-compat.config.ts for the three-engine CPU and unavailable GPU cases. The renderer capability matrix continues to define every style/interaction/export fallback. No GPU line, polar or geographic family was added.