@luma.gl/webgl 8.5.17 → 8.5.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.js +79 -71
- package/dist/dist.min.js +1 -1
- package/dist/es5/classes/resource.js +4 -2
- package/dist/es5/classes/resource.js.map +1 -1
- package/dist/es5/init.js +1 -1
- package/dist/esm/classes/resource.js +4 -2
- package/dist/esm/classes/resource.js.map +1 -1
- package/dist/esm/init.js +1 -1
- package/package.json +4 -4
- package/src/classes/resource.js +11 -3
|
@@ -291,6 +291,8 @@ var Resource = function (_Symbol$toStringTag) {
|
|
|
291
291
|
this._trackAllocatedMemoryForContext(bytes, name);
|
|
292
292
|
|
|
293
293
|
this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);
|
|
294
|
+
|
|
295
|
+
this.byteLength = bytes;
|
|
294
296
|
}
|
|
295
297
|
}, {
|
|
296
298
|
key: "_trackAllocatedMemoryForContext",
|
|
@@ -302,7 +304,6 @@ var Resource = function (_Symbol$toStringTag) {
|
|
|
302
304
|
|
|
303
305
|
stats.get('GPU Memory').addCount(bytes);
|
|
304
306
|
stats.get("".concat(name, " Memory")).addCount(bytes);
|
|
305
|
-
this.byteLength = bytes;
|
|
306
307
|
}
|
|
307
308
|
}, {
|
|
308
309
|
key: "_trackDeallocatedMemory",
|
|
@@ -312,6 +313,8 @@ var Resource = function (_Symbol$toStringTag) {
|
|
|
312
313
|
this._trackDeallocatedMemoryForContext(name);
|
|
313
314
|
|
|
314
315
|
this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);
|
|
316
|
+
|
|
317
|
+
this.byteLength = 0;
|
|
315
318
|
}
|
|
316
319
|
}, {
|
|
317
320
|
key: "_trackDeallocatedMemoryForContext",
|
|
@@ -323,7 +326,6 @@ var Resource = function (_Symbol$toStringTag) {
|
|
|
323
326
|
|
|
324
327
|
stats.get('GPU Memory').subtractCount(this.byteLength);
|
|
325
328
|
stats.get("".concat(name, " Memory")).subtractCount(this.byteLength);
|
|
326
|
-
this.byteLength = 0;
|
|
327
329
|
}
|
|
328
330
|
}]);
|
|
329
331
|
return Resource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/resource.js"],"names":["ERR_RESOURCE_METHOD_UNDEFINED","Resource","gl","opts","id","userData","gl2","Symbol","toStringTag","_bound","_handle","handle","undefined","_createHandle","byteLength","_addStats","constructor","name","deleteChildren","children","_deleteHandle","_removeStats","filter","Boolean","forEach","child","delete","funcOrHandle","_bindHandle","value","bind","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","options","keys","values","parameterKeys","Object","key","getParameter","type","Error","_setParameter","setParameter","className","version","methodNames","luma","stats","lumaStats","get","incrementCount","decrementCount","bytes","_trackAllocatedMemoryForContext","canvas","addCount","_trackDeallocatedMemoryForContext","subtractCount"],"mappings":"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","sourcesContent":["import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n }\n\n _trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n }\n\n _trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n}\n"],"file":"resource.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/resource.js"],"names":["ERR_RESOURCE_METHOD_UNDEFINED","Resource","gl","opts","id","userData","gl2","Symbol","toStringTag","_bound","_handle","handle","undefined","_createHandle","byteLength","_addStats","constructor","name","deleteChildren","children","_deleteHandle","_removeStats","filter","Boolean","forEach","child","delete","funcOrHandle","_bindHandle","value","bind","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","options","keys","values","parameterKeys","Object","key","getParameter","type","Error","_setParameter","setParameter","className","version","methodNames","luma","stats","lumaStats","get","incrementCount","decrementCount","bytes","_trackAllocatedMemoryForContext","canvas","addCount","_trackDeallocatedMemoryForContext","subtractCount"],"mappings":"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","sourcesContent":["import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n /**\n * Track common allocated memory and memory based on particular gl context.\n * @param {number} bytes\n * @param {string} name\n */\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = bytes;\n }\n\n _trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n }\n\n /**\n * Deallocate memory for common statistic and for each gl context as well.\n * @param {string} name\n */\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = 0;\n }\n\n _trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n }\n}\n"],"file":"resource.js"}
|
package/dist/es5/init.js
CHANGED
|
@@ -17,7 +17,7 @@ var _stats = require("@probe.gl/stats");
|
|
|
17
17
|
|
|
18
18
|
var _env = require("@probe.gl/env");
|
|
19
19
|
|
|
20
|
-
var VERSION = typeof "8.5.
|
|
20
|
+
var VERSION = typeof "8.5.18" !== 'undefined' ? "8.5.18" : 'untranspiled source';
|
|
21
21
|
var STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
|
|
22
22
|
|
|
23
23
|
var StatsManager = function () {
|
|
@@ -228,6 +228,8 @@ export default class Resource {
|
|
|
228
228
|
this._trackAllocatedMemoryForContext(bytes, name);
|
|
229
229
|
|
|
230
230
|
this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);
|
|
231
|
+
|
|
232
|
+
this.byteLength = bytes;
|
|
231
233
|
}
|
|
232
234
|
|
|
233
235
|
_trackAllocatedMemoryForContext(bytes) {
|
|
@@ -236,7 +238,6 @@ export default class Resource {
|
|
|
236
238
|
const stats = lumaStats.get("Memory Usage".concat(id));
|
|
237
239
|
stats.get('GPU Memory').addCount(bytes);
|
|
238
240
|
stats.get("".concat(name, " Memory")).addCount(bytes);
|
|
239
|
-
this.byteLength = bytes;
|
|
240
241
|
}
|
|
241
242
|
|
|
242
243
|
_trackDeallocatedMemory() {
|
|
@@ -245,6 +246,8 @@ export default class Resource {
|
|
|
245
246
|
this._trackDeallocatedMemoryForContext(name);
|
|
246
247
|
|
|
247
248
|
this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);
|
|
249
|
+
|
|
250
|
+
this.byteLength = 0;
|
|
248
251
|
}
|
|
249
252
|
|
|
250
253
|
_trackDeallocatedMemoryForContext() {
|
|
@@ -253,7 +256,6 @@ export default class Resource {
|
|
|
253
256
|
const stats = lumaStats.get("Memory Usage".concat(id));
|
|
254
257
|
stats.get('GPU Memory').subtractCount(this.byteLength);
|
|
255
258
|
stats.get("".concat(name, " Memory")).subtractCount(this.byteLength);
|
|
256
|
-
this.byteLength = 0;
|
|
257
259
|
}
|
|
258
260
|
|
|
259
261
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/classes/resource.js"],"names":["isWebGL2","assertWebGLContext","lumaStats","getKey","getKeyValue","assert","uid","stubRemovedMethods","ERR_RESOURCE_METHOD_UNDEFINED","Resource","Symbol","toStringTag","constructor","gl","opts","id","userData","gl2","_bound","_handle","handle","undefined","_createHandle","byteLength","_addStats","toString","name","delete","deleteChildren","children","_deleteHandle","_removeStats","filter","Boolean","forEach","child","bind","funcOrHandle","_bindHandle","value","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","type","setParameter","Error","_setParameter","setParameters","className","version","methodNames","initialize","_getOptsFromHandle","_context","luma","stats","get","incrementCount","decrementCount","_trackAllocatedMemory","bytes","_trackAllocatedMemoryForContext","canvas","addCount","_trackDeallocatedMemory","_trackDeallocatedMemoryForContext","subtractCount"],"mappings":"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","sourcesContent":["import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n }\n\n _trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.byteLength = bytes;\n }\n\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n }\n\n _trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n this.byteLength = 0;\n }\n}\n"],"file":"resource.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/classes/resource.js"],"names":["isWebGL2","assertWebGLContext","lumaStats","getKey","getKeyValue","assert","uid","stubRemovedMethods","ERR_RESOURCE_METHOD_UNDEFINED","Resource","Symbol","toStringTag","constructor","gl","opts","id","userData","gl2","_bound","_handle","handle","undefined","_createHandle","byteLength","_addStats","toString","name","delete","deleteChildren","children","_deleteHandle","_removeStats","filter","Boolean","forEach","child","bind","funcOrHandle","_bindHandle","value","unbind","getParameter","pname","parameters","PARAMETERS","parameter","isWebgl2","parameterAvailable","getExtension","extension","webgl1Default","webgl1","webgl2Default","webgl2","defaultValue","_getParameter","getParameters","options","keys","values","parameterKeys","Object","key","type","setParameter","Error","_setParameter","setParameters","className","version","methodNames","initialize","_getOptsFromHandle","_context","luma","stats","get","incrementCount","decrementCount","_trackAllocatedMemory","bytes","_trackAllocatedMemoryForContext","canvas","addCount","_trackDeallocatedMemory","_trackDeallocatedMemoryForContext","subtractCount"],"mappings":"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","sourcesContent":["import {isWebGL2, assertWebGLContext} from '@luma.gl/gltools';\nimport {lumaStats} from '../init';\nimport {getKey, getKeyValue} from '../webgl-utils/constants-to-keys';\nimport {assert} from '../utils/assert';\nimport {uid} from '../utils/utils';\nimport {stubRemovedMethods} from '../utils/stub-methods';\n\nconst ERR_RESOURCE_METHOD_UNDEFINED = 'Resource subclass must define virtual methods';\n\n// TODO - Handle context loss\n// function glGetContextLossCount(gl) {\n// return (gl.luma && gl.luma.glCount) || 0;\n// }\n\nexport default class Resource {\n // eslint-disable-next-line accessor-pairs\n get [Symbol.toStringTag]() {\n return 'Resource';\n }\n constructor(gl, opts = {}) {\n assertWebGLContext(gl);\n\n const {id, userData = {}} = opts;\n this.gl = gl;\n // @ts-ignore\n this.gl2 = gl;\n // this.ext = polyfillContext(gl);\n this.id = id || uid(this[Symbol.toStringTag]);\n this.userData = userData;\n this._bound = false;\n\n // Set the handle\n // If handle was provided, use it, otherwise create a new handle\n\n // TODO - Stores the handle with context loss information\n // this.glCount = glGetContextLossCount(this.gl);\n\n // Default VertexArray needs to be created with null handle, so compare against undefined\n this._handle = opts.handle;\n if (this._handle === undefined) {\n this._handle = this._createHandle();\n }\n\n // Only meaningful for resources that allocate GPU memory\n this.byteLength = 0;\n\n this._addStats();\n }\n\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}(${this.id})`;\n }\n\n get handle() {\n // TODO - Add context loss handling\n // Will regenerate and reinitialize the handle if necessary\n // const glCount = glGetContextLossCount(this.gl);\n // if (this.glCount !== glCount) {\n // this._handle = this._createHandle(this.opts);\n // this._glCount = glCount;\n // // Reinitialize object\n // this.initialize(this.opts);\n // }\n return this._handle;\n }\n\n delete({deleteChildren = false} = {}) {\n // Delete this object, and get refs to any children\n // @ts-ignore\n const children = this._handle && this._deleteHandle(this._handle);\n if (this._handle) {\n this._removeStats();\n }\n this._handle = null;\n\n // Optionally, recursively delete the children\n // @ts-ignore\n if (children && deleteChildren) {\n // @ts-ignore\n children.filter(Boolean).forEach(child => child.delete());\n }\n\n return this;\n }\n\n bind(funcOrHandle = this.handle) {\n if (typeof funcOrHandle !== 'function') {\n this._bindHandle(funcOrHandle);\n return this;\n }\n\n let value;\n\n if (!this._bound) {\n this._bindHandle(this.handle);\n this._bound = true;\n\n value = funcOrHandle();\n\n this._bound = false;\n this._bindHandle(null);\n } else {\n value = funcOrHandle();\n }\n\n return value;\n }\n\n unbind() {\n this.bind(null);\n }\n\n /**\n * Query a Resource parameter\n *\n * @param {GLenum} pname\n * @return {GLint|GLfloat|GLenum} param\n */\n getParameter(pname, opts = {}) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n // Use parameter definitions to handle unsupported parameters\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if we can query for this parameter\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n const webgl1Default = parameter.webgl1;\n const webgl2Default = 'webgl2' in parameter ? parameter.webgl2 : parameter.webgl1;\n const defaultValue = isWebgl2 ? webgl2Default : webgl1Default;\n return defaultValue;\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // Attempt to query for it and let WebGL report errors\n return this._getParameter(pname, opts);\n }\n\n // Many resources support a getParameter call -\n // getParameters will get all parameters - slow but useful for debugging\n // eslint-disable-next-line complexity\n getParameters(options = {}) {\n const {parameters, keys} = options;\n\n // Get parameter definitions for this Resource\n // @ts-ignore\n const PARAMETERS = this.constructor.PARAMETERS || {};\n\n const isWebgl2 = isWebGL2(this.gl);\n\n const values = {};\n\n // Query all parameters if no list provided\n const parameterKeys = parameters || Object.keys(PARAMETERS);\n\n // WEBGL limits\n for (const pname of parameterKeys) {\n const parameter = PARAMETERS[pname];\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n parameter &&\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (parameterAvailable) {\n const key = keys ? getKey(this.gl, pname) : pname;\n values[key] = this.getParameter(pname, options);\n if (keys && parameter.type === 'GLenum') {\n values[key] = getKey(this.gl, values[key]);\n }\n }\n }\n\n return values;\n }\n\n /**\n * Update a Resource setting\n *\n * @todo - cache parameter to avoid issuing WebGL calls?\n *\n * @param {string} pname - parameter (GL constant, value or key)\n * @param {GLint|GLfloat|GLenum} value\n * @return {Resource} returns self to enable chaining\n */\n setParameter(pname, value) {\n pname = getKeyValue(this.gl, pname);\n assert(pname);\n\n // @ts-ignore\n const parameters = this.constructor.PARAMETERS || {};\n\n const parameter = parameters[pname];\n if (parameter) {\n const isWebgl2 = isWebGL2(this.gl);\n\n // Check if this parameter is available on this platform\n const parameterAvailable =\n (!('webgl2' in parameter) || isWebgl2) &&\n (!('extension' in parameter) || this.gl.getExtension(parameter.extension));\n\n if (!parameterAvailable) {\n throw new Error('Parameter not available on this platform');\n }\n\n // Handle string keys\n if (parameter.type === 'GLenum') {\n value = getKeyValue(value);\n }\n }\n\n // If unknown parameter - Could be a valid parameter not covered by PARAMS\n // attempt to set it and let WebGL report errors\n this._setParameter(pname, value);\n return this;\n }\n\n /*\n * Batch update resource parameters\n * Assumes the subclass supports a setParameter call\n */\n setParameters(parameters) {\n for (const pname in parameters) {\n this.setParameter(pname, parameters[pname]);\n }\n return this;\n }\n\n // Install stubs for removed methods\n stubRemovedMethods(className, version, methodNames) {\n return stubRemovedMethods(this, className, version, methodNames);\n }\n\n // PUBLIC VIRTUAL METHODS\n initialize(opts) {}\n\n // PROTECTED METHODS - These must be overridden by subclass\n _createHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _deleteHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _bindHandle(handle) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _getOptsFromHandle() {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n /** @returns {number} */\n _getParameter(pname, opts) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n _setParameter(pname, value) {\n throw new Error(ERR_RESOURCE_METHOD_UNDEFINED);\n }\n\n // PRIVATE METHODS\n\n _context() {\n this.gl.luma = this.gl.luma || {};\n return this.gl.luma;\n }\n\n _addStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n\n _removeStats() {\n const name = this[Symbol.toStringTag];\n const stats = lumaStats.get('Resource Counts');\n\n stats.get(`${name}s Active`).decrementCount();\n }\n\n /**\n * Track common allocated memory and memory based on particular gl context.\n * @param {number} bytes\n * @param {string} name\n */\n _trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n this._trackAllocatedMemoryForContext(bytes, name);\n this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = bytes;\n }\n\n _trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n }\n\n /**\n * Deallocate memory for common statistic and for each gl context as well.\n * @param {string} name\n */\n _trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n this._trackDeallocatedMemoryForContext(name);\n this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);\n this.byteLength = 0;\n }\n\n _trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {\n const stats = lumaStats.get(`Memory Usage${id}`);\n\n stats.get('GPU Memory').subtractCount(this.byteLength);\n stats.get(`${name} Memory`).subtractCount(this.byteLength);\n }\n}\n"],"file":"resource.js"}
|
package/dist/esm/init.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { log } from '@luma.gl/gltools';
|
|
2
2
|
import { Stats } from '@probe.gl/stats';
|
|
3
3
|
import { isBrowser } from '@probe.gl/env';
|
|
4
|
-
const VERSION = typeof "8.5.
|
|
4
|
+
const VERSION = typeof "8.5.18" !== 'undefined' ? "8.5.18" : 'untranspiled source';
|
|
5
5
|
const STARTUP_MESSAGE = 'set luma.log.level=1 (or higher) to trace rendering';
|
|
6
6
|
export class StatsManager {
|
|
7
7
|
constructor() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@luma.gl/webgl",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.18",
|
|
4
4
|
"description": "WebGL2 Classes",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"publishConfig": {
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@babel/runtime": "^7.0.0",
|
|
38
|
-
"@luma.gl/constants": "8.5.
|
|
39
|
-
"@luma.gl/gltools": "8.5.
|
|
38
|
+
"@luma.gl/constants": "8.5.18",
|
|
39
|
+
"@luma.gl/gltools": "8.5.18",
|
|
40
40
|
"@probe.gl/env": "^3.5.0",
|
|
41
41
|
"@probe.gl/stats": "^3.5.0"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "337c12325d3aa1699245fbdc0fba7f9252a29996"
|
|
44
44
|
}
|
package/src/classes/resource.js
CHANGED
|
@@ -294,22 +294,31 @@ export default class Resource {
|
|
|
294
294
|
stats.get(`${name}s Active`).decrementCount();
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
+
/**
|
|
298
|
+
* Track common allocated memory and memory based on particular gl context.
|
|
299
|
+
* @param {number} bytes
|
|
300
|
+
* @param {string} name
|
|
301
|
+
*/
|
|
297
302
|
_trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {
|
|
298
303
|
this._trackAllocatedMemoryForContext(bytes, name);
|
|
299
304
|
this._trackAllocatedMemoryForContext(bytes, name, this.gl.canvas && this.gl.canvas.id);
|
|
305
|
+
this.byteLength = bytes;
|
|
300
306
|
}
|
|
301
307
|
|
|
302
308
|
_trackAllocatedMemoryForContext(bytes, name = this[Symbol.toStringTag], id = '') {
|
|
303
309
|
const stats = lumaStats.get(`Memory Usage${id}`);
|
|
304
|
-
|
|
305
310
|
stats.get('GPU Memory').addCount(bytes);
|
|
306
311
|
stats.get(`${name} Memory`).addCount(bytes);
|
|
307
|
-
this.byteLength = bytes;
|
|
308
312
|
}
|
|
309
313
|
|
|
314
|
+
/**
|
|
315
|
+
* Deallocate memory for common statistic and for each gl context as well.
|
|
316
|
+
* @param {string} name
|
|
317
|
+
*/
|
|
310
318
|
_trackDeallocatedMemory(name = this[Symbol.toStringTag]) {
|
|
311
319
|
this._trackDeallocatedMemoryForContext(name);
|
|
312
320
|
this._trackDeallocatedMemoryForContext(name, this.gl.canvas && this.gl.canvas.id);
|
|
321
|
+
this.byteLength = 0;
|
|
313
322
|
}
|
|
314
323
|
|
|
315
324
|
_trackDeallocatedMemoryForContext(name = this[Symbol.toStringTag], id = '') {
|
|
@@ -317,6 +326,5 @@ export default class Resource {
|
|
|
317
326
|
|
|
318
327
|
stats.get('GPU Memory').subtractCount(this.byteLength);
|
|
319
328
|
stats.get(`${name} Memory`).subtractCount(this.byteLength);
|
|
320
|
-
this.byteLength = 0;
|
|
321
329
|
}
|
|
322
330
|
}
|