iGPU Activator

Fix annoying lag for integrated iGPU!

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

You will need to install an extension such as Tampermonkey to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name         iGPU Activator
// @name:zh-CN   iGPU Activator
// @version      0.1
// @description  Fix annoying lag for integrated iGPU!
// @description:zh-cn 解决Intel核显导致的浏览器卡顿!
// @author       MapleRecall
// @icon         https://ark.intel.com/etc.clientlibs/settings/wcm/designs/intel/default/resources/favicon-32x32.png
// @match        *://*/*
// @grant        none
// @noframes
// @namespace https://greatest.deepsurf.us/users/53
// ==/UserScript==

(function() {
    'use strict';

    const canvas = document.createElement("canvas");
    canvas.width = 1;
    canvas.height = 1;
    canvas.style.position = "fixed";
    canvas.style.top = 0;
    canvas.style.left = 0;
    canvas.style.zIndex = 100000000;
    canvas.style.isolation = "isolate";
    canvas.style.pointerEvents = "none";
    document.body.append(canvas);

    const gl = canvas.getContext("webgl");
    function draw() {
        gl.clearColor(0, 0, 0, 0);
        gl.clear(gl.COLOR_BUFFER_BIT);
    }

    let drawTimer;
    let idleTimer;
    function stopDraw() {
        canvas.style.display = "none";
        clearTimeout(idleTimer);
        clearInterval(drawTimer);
    }

    function startDraw() {
        stopDraw();
        if (document.hidden || document.fullscreenElement) return;

        canvas.style.display = "";
        drawTimer = setInterval(draw, 200);
    }

    document.addEventListener("visibilitychange", startDraw);
    document.addEventListener("fullscreenchange", startDraw);
    document.addEventListener("mouseenter", startDraw);
    document.addEventListener("mouseleave", () => { idleTimer = setTimeout(stopDraw, 60000) });

    startDraw();
})();