File size: 2,047 Bytes
645859a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
export interface GetGPUTier {
    /**
     * URL of directory where benchmark data is hosted.
     *
     * @default https://unpkg.com/detect-gpu@{version}/dist/benchmarks
     */
    benchmarksURL?: string;
    /**
     * Optionally pass in a WebGL context to avoid creating a temporary one
     * internally.
     */
    glContext?: WebGLRenderingContext | WebGL2RenderingContext;
    /**
     * Whether to fail if the system performance is low or if no hardware GPU is
     * available.
     *
     * @default false
     */
    failIfMajorPerformanceCaveat?: boolean;
    /**
     * Framerate per tier for mobile devices.
     *
     * @defaultValue [0, 15, 30, 60]
     */
    mobileTiers?: number[];
    /**
     * Framerate per tier for desktop devices.
     *
     * @defaultValue [0, 15, 30, 60]
     */
    desktopTiers?: number[];
    /**
     * Optionally override specific parameters. Used mainly for testing.
     */
    override?: {
        renderer?: string;
        /**
         * Override whether device is an iPad.
         */
        isIpad?: boolean;
        /**
         * Override whether device is a mobile device.
         */
        isMobile?: boolean;
        /**
         * Override device screen size.
         */
        screenSize?: {
            width: number;
            height: number;
        };
        /**
         * Override how benchmark data is loaded
         */
        loadBenchmarks?: (file: string) => Promise<ModelEntry[]>;
    };
}
export type TierType = 'SSR' | 'WEBGL_UNSUPPORTED' | 'BLOCKLISTED' | 'FALLBACK' | 'BENCHMARK';
export type TierResult = {
    tier: number;
    type: TierType;
    isMobile?: boolean;
    fps?: number;
    gpu?: string;
    device?: string;
};
export type ModelEntryScreen = [number, number, number, string | undefined];
export type ModelEntry = [string, string, string, 0 | 1, ModelEntryScreen[]];
export declare const getGPUTier: ({ mobileTiers, desktopTiers, override, glContext, failIfMajorPerformanceCaveat, benchmarksURL, }?: GetGPUTier) => Promise<TierResult>;