sdfsdfs
This commit is contained in:
86
node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs
generated
vendored
Normal file
86
node_modules/pixi.js/lib/rendering/renderers/shared/texture/TextureGCSystem.mjs
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
import { ExtensionType } from '../../../../extensions/Extensions.mjs';
|
||||
|
||||
"use strict";
|
||||
const _TextureGCSystem = class _TextureGCSystem {
|
||||
/** @param renderer - The renderer this System works for. */
|
||||
constructor(renderer) {
|
||||
this._renderer = renderer;
|
||||
this.count = 0;
|
||||
this.checkCount = 0;
|
||||
}
|
||||
init(options) {
|
||||
options = { ..._TextureGCSystem.defaultOptions, ...options };
|
||||
this.checkCountMax = options.textureGCCheckCountMax;
|
||||
this.maxIdle = options.textureGCAMaxIdle ?? options.textureGCMaxIdle;
|
||||
this.active = options.textureGCActive;
|
||||
}
|
||||
/**
|
||||
* Checks to see when the last time a texture was used.
|
||||
* If the texture has not been used for a specified amount of time, it will be removed from the GPU.
|
||||
*/
|
||||
postrender() {
|
||||
if (!this._renderer.renderingToScreen) {
|
||||
return;
|
||||
}
|
||||
this.count++;
|
||||
if (!this.active)
|
||||
return;
|
||||
this.checkCount++;
|
||||
if (this.checkCount > this.checkCountMax) {
|
||||
this.checkCount = 0;
|
||||
this.run();
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Checks to see when the last time a texture was used.
|
||||
* If the texture has not been used for a specified amount of time, it will be removed from the GPU.
|
||||
*/
|
||||
run() {
|
||||
const managedTextures = this._renderer.texture.managedTextures;
|
||||
for (let i = 0; i < managedTextures.length; i++) {
|
||||
const texture = managedTextures[i];
|
||||
if (texture.autoGarbageCollect && texture.resource && texture._touched > -1 && this.count - texture._touched > this.maxIdle) {
|
||||
texture._touched = -1;
|
||||
texture.unload();
|
||||
}
|
||||
}
|
||||
}
|
||||
destroy() {
|
||||
this._renderer = null;
|
||||
}
|
||||
};
|
||||
/** @ignore */
|
||||
_TextureGCSystem.extension = {
|
||||
type: [
|
||||
ExtensionType.WebGLSystem,
|
||||
ExtensionType.WebGPUSystem
|
||||
],
|
||||
name: "textureGC"
|
||||
};
|
||||
/** default options for the TextureGCSystem */
|
||||
_TextureGCSystem.defaultOptions = {
|
||||
/**
|
||||
* If set to true, this will enable the garbage collector on the GPU.
|
||||
* @default true
|
||||
*/
|
||||
textureGCActive: true,
|
||||
/**
|
||||
* @deprecated since 8.3.0
|
||||
* @see {@link TextureGCSystem.textureGCMaxIdle}
|
||||
*/
|
||||
textureGCAMaxIdle: null,
|
||||
/**
|
||||
* The maximum idle frames before a texture is destroyed by garbage collection.
|
||||
* @default 60 * 60
|
||||
*/
|
||||
textureGCMaxIdle: 60 * 60,
|
||||
/**
|
||||
* Frames between two garbage collections.
|
||||
* @default 600
|
||||
*/
|
||||
textureGCCheckCountMax: 600
|
||||
};
|
||||
let TextureGCSystem = _TextureGCSystem;
|
||||
|
||||
export { TextureGCSystem };
|
||||
//# sourceMappingURL=TextureGCSystem.mjs.map
|
Reference in New Issue
Block a user