pear-devs/pear-desktop · info · Error

Your browser does not support GPU Acceleration. CPU Tamer by

Error message

Your browser does not support GPU Acceleration. CPU Tamer by AnimationFrame is skipped.

What it means

CPU Tamer by AnimationFrame depends on browser GPU acceleration (it uses requestAnimationFrame driven by rAF-based timing). On startup it probes GPU availability; if unsupported, it throws this error to signal that the tamer is intentionally skipped — an expected, informational abort rather than a crash.

Source

Thrown at src/plugins/performance-improvement/scripts/cpu-tamer/cpu-tamer-by-animationframe.js:67

          /** @type {(reason?: any) => void} */
          this.reject = reject_;
        }
      }
    };
  })();

  const isGPUAccelerationAvailable = (() => {
    // https://gist.github.com/cvan/042b2448fcecefafbb6a91469484cdf8
    try {
      const canvas = document.createElement('canvas');
      return !!(canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));
    } catch (e) {
      return false;
    }
  })();

  if (!isGPUAccelerationAvailable) {
    throw new Error('Your browser does not support GPU Acceleration. CPU Tamer by AnimationFrame is skipped.');
  }

  const timeupdateDT = (() => {

    window.__j6YiAc__ = 1;

    document.addEventListener('timeupdate', () => {
      window.__j6YiAc__ = Date.now();
    }, true);

    let kz = -1;
    try {
      kz = top.__j6YiAc__;
    } catch (e) {

    }

    return kz >= 1 ? () => top.__j6YiAc__ : () => window.__j6YiAc__;

View on GitHub (pinned to 1e2aac5706)

Solutions

  1. Treat this error as non-fatal: catch it and log that CPU tamer is disabled
  2. Enable hardware acceleration in browser settings and reload if you want the tamer active
  3. In VMs/headless environments, expect it and skip loading this script entirely

Example fix

// before
injectUserscript(cpuTamerByAnimationFrame);

// after
injectUserscript(cpuTamerByAnimationFrame).catch((e) => {
  if (!/GPU Acceleration/.test(e.message)) throw e;
  log.info('CPU tamer skipped: no GPU acceleration');
});
Defensive patterns

Strategy: try-catch

Validate before calling

const hasGpu = (() => { try { const c = document.createElement('canvas'); return !!c.getContext('webgl2') || !!c.getContext('webgl'); } catch { return false; } })();
if (hasGpu) inject(cpuTamerSrc);

Try / catch

inject(cpuTamerSrc).catch((e) => { if (!/GPU Acceleration/.test(e.message)) throw e; log.info('CPU tamer skipped: no GPU'); });

Prevention

When it happens

Trigger: Running in a browser with hardware acceleration disabled (chrome://settings or about:config); headless/VM environments without GPU; remote desktop sessions; browsers or OS configurations where WebGL/compositing is unavailable or blocklisted.

Common situations: Users with 'Use hardware acceleration when available' turned off; Linux without proper GPU drivers; virtual machines and CI; old GPUs on the blocklist; battery-saver modes disabling GPU compositing.

Related errors


AI-assisted analysis of pear-devs/pear-desktop@1e2aac5706 (2026-08-27). Data as JSON: /api/errors/6e1fbfe6820c866b. Report an issue: GitHub.