Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/thatdeveloperguy-website / app/experience/renderer-capability.ts |
| Date | Not specified in source |
| Repository | Janady13/thatdeveloperguy-website |
| Revision | 2bea2ebdff0e34494bff597d4fa9c8422a0c3a94 |
| Branch | main |
| Path or archive member | app/experience/renderer-capability.ts |
| Original SHA-256 | 0fc48d7c1d504ae8c28e64c37d6e6c2cd3eedfd8f1dd994b683c84ffd9beecad |
| Git blob SHA | 2c6928138facf0e5d3da398c99271cb549d6935e |
| Reading-copy SHA-256 | 0fc48d7c1d504ae8c28e64c37d6e6c2cd3eedfd8f1dd994b683c84ffd9beecad |
Recovered source transcript
Download complete source text ↓19 lines · 1.2 KB
/**
* The native layer is offered only on hardware-accelerated WebGL2. Software renderers (SwiftShader, llvmpipe, Mesa software)
* can draw the vector rooms, but at seconds per frame on the main thread — a hung page, not an enhancement.
*/
export type RendererVerdict = { ok: true; renderer: string } | { ok: false; reason: string; renderer?: string };
export function probeRenderer(): RendererVerdict {
if (typeof document === 'undefined') return { ok: false, reason: 'no document' };
const canvas = document.createElement('canvas');
let gl: WebGL2RenderingContext | null = null;
try { gl = canvas.getContext('webgl2', { failIfMajorPerformanceCaveat: true }); } catch { gl = null; }
if (!gl) return { ok: false, reason: 'no hardware WebGL2 context (major performance caveat or unsupported)' };
const info = gl.getExtension('WEBGL_debug_renderer_info');
const renderer = info ? String(gl.getParameter(info.UNMASKED_RENDERER_WEBGL)) : 'unknown';
gl.getExtension('WEBGL_lose_context')?.loseContext();
if (/swiftshader|llvmpipe|softpipe|software|mesa offscreen/i.test(renderer)) return { ok: false, reason: `software renderer: ${renderer}`, renderer };
return { ok: true, renderer };
}