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와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 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();
})();