@luma.gl/webgl 9.0.0-alpha.46 → 9.0.0-alpha.48

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.
Files changed (88) hide show
  1. package/LICENSE +34 -0
  2. package/dist/adapter/converters/device-parameters.d.ts.map +1 -1
  3. package/dist/adapter/converters/device-parameters.js +73 -40
  4. package/dist/adapter/converters/device-parameters.js.map +1 -1
  5. package/dist/adapter/converters/sampler-parameters.js +60 -61
  6. package/dist/adapter/converters/sampler-parameters.js.map +1 -1
  7. package/dist/adapter/converters/shader-formats.js +12 -13
  8. package/dist/adapter/converters/shader-formats.js.map +1 -1
  9. package/dist/adapter/converters/texture-formats.js +179 -180
  10. package/dist/adapter/converters/texture-formats.js.map +1 -1
  11. package/dist/adapter/converters/vertex-formats.js +20 -21
  12. package/dist/adapter/converters/vertex-formats.js.map +1 -1
  13. package/dist/adapter/device-helpers/device-features.js +2 -2
  14. package/dist/adapter/device-helpers/device-features.js.map +1 -1
  15. package/dist/adapter/device-helpers/device-limits.js +53 -54
  16. package/dist/adapter/device-helpers/device-limits.js.map +1 -1
  17. package/dist/adapter/device-helpers/get-device-info.d.ts.map +1 -1
  18. package/dist/adapter/device-helpers/get-device-info.js +23 -12
  19. package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
  20. package/dist/adapter/helpers/decode-webgl-types.js +31 -32
  21. package/dist/adapter/helpers/decode-webgl-types.js.map +1 -1
  22. package/dist/adapter/helpers/get-shader-layout.js +29 -30
  23. package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
  24. package/dist/adapter/helpers/parse-shader-compiler-log.d.ts.map +1 -1
  25. package/dist/adapter/helpers/parse-shader-compiler-log.js +16 -4
  26. package/dist/adapter/helpers/parse-shader-compiler-log.js.map +1 -1
  27. package/dist/adapter/helpers/set-uniform.js +40 -41
  28. package/dist/adapter/helpers/set-uniform.js.map +1 -1
  29. package/dist/adapter/helpers/webgl-topology-utils.js +38 -39
  30. package/dist/adapter/helpers/webgl-topology-utils.js.map +1 -1
  31. package/dist/adapter/objects/webgl-renderbuffer.js +5 -6
  32. package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
  33. package/dist/adapter/resources/webgl-buffer.js +14 -15
  34. package/dist/adapter/resources/webgl-buffer.js.map +1 -1
  35. package/dist/adapter/resources/webgl-command-buffer.js +25 -26
  36. package/dist/adapter/resources/webgl-command-buffer.js.map +1 -1
  37. package/dist/adapter/resources/webgl-framebuffer.js +22 -23
  38. package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
  39. package/dist/adapter/resources/webgl-render-pass.js +2 -3
  40. package/dist/adapter/resources/webgl-render-pass.js.map +1 -1
  41. package/dist/adapter/resources/webgl-render-pipeline.js +7 -8
  42. package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
  43. package/dist/adapter/resources/webgl-sampler.js +2 -3
  44. package/dist/adapter/resources/webgl-sampler.js.map +1 -1
  45. package/dist/adapter/resources/webgl-shader.js +3 -4
  46. package/dist/adapter/resources/webgl-shader.js.map +1 -1
  47. package/dist/adapter/resources/webgl-texture.js +27 -28
  48. package/dist/adapter/resources/webgl-texture.js.map +1 -1
  49. package/dist/adapter/resources/webgl-transform-feedback.d.ts +5 -11
  50. package/dist/adapter/resources/webgl-transform-feedback.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgl-transform-feedback.js +16 -13
  52. package/dist/adapter/resources/webgl-transform-feedback.js.map +1 -1
  53. package/dist/adapter/resources/webgl-vertex-array.d.ts +2 -2
  54. package/dist/adapter/resources/webgl-vertex-array.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgl-vertex-array.js +5 -6
  56. package/dist/adapter/resources/webgl-vertex-array.js.map +1 -1
  57. package/dist/adapter/webgl-device.js.map +1 -1
  58. package/dist/classic/accessor.js +4 -5
  59. package/dist/classic/accessor.js.map +1 -1
  60. package/dist/classic/copy-and-blit.js +16 -17
  61. package/dist/classic/copy-and-blit.js.map +1 -1
  62. package/dist/classic/format-utils.js +14 -15
  63. package/dist/classic/format-utils.js.map +1 -1
  64. package/dist/classic/typed-array-utils.d.ts +2 -0
  65. package/dist/classic/typed-array-utils.d.ts.map +1 -1
  66. package/dist/classic/typed-array-utils.js +18 -19
  67. package/dist/classic/typed-array-utils.js.map +1 -1
  68. package/dist/context/debug/webgl-developer-tools.js +0 -1
  69. package/dist/context/debug/webgl-developer-tools.js.map +1 -1
  70. package/dist/context/parameters/webgl-parameter-tables.js +256 -257
  71. package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
  72. package/dist/context/polyfill/get-parameter-polyfill.js +34 -35
  73. package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
  74. package/dist/context/polyfill/polyfill-table.js +9 -10
  75. package/dist/context/polyfill/polyfill-table.js.map +1 -1
  76. package/dist/context/polyfill/polyfill-vertex-array-object.js +17 -17
  77. package/dist/context/polyfill/polyfill-vertex-array-object.js.map +1 -1
  78. package/dist/dist.dev.js +987 -2700
  79. package/dist/index.cjs +390 -267
  80. package/dist.min.js +39 -28
  81. package/package.json +5 -5
  82. package/src/adapter/converters/device-parameters.ts +40 -25
  83. package/src/adapter/device-helpers/get-device-info.ts +36 -8
  84. package/src/adapter/helpers/parse-shader-compiler-log.ts +21 -7
  85. package/src/adapter/resources/webgl-transform-feedback.ts +13 -16
  86. package/src/adapter/resources/webgl-vertex-array.ts +4 -3
  87. package/src/adapter/webgl-device.ts +3 -2
  88. package/src/classic/typed-array-utils.ts +2 -0
@@ -21,17 +21,17 @@ function wrapGLError(gl) {
21
21
  let err;
22
22
  do {
23
23
  err = f.apply(gl);
24
- if (err !== gl.NO_ERROR) {
24
+ if (err !== 0) {
25
25
  glErrorShadow[err] = true;
26
26
  }
27
- } while (err !== gl.NO_ERROR);
27
+ } while (err !== 0);
28
28
  for (err in glErrorShadow) {
29
29
  if (glErrorShadow[err]) {
30
30
  delete glErrorShadow[err];
31
31
  return parseInt(err, 10);
32
32
  }
33
33
  }
34
- return gl.NO_ERROR;
34
+ return 0;
35
35
  };
36
36
  }
37
37
  const WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {
@@ -51,7 +51,7 @@ WebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {
51
51
  this.enabled = false;
52
52
  this.buffer = null;
53
53
  this.size = 4;
54
- this.type = gl.FLOAT;
54
+ this.type = 5126;
55
55
  this.normalized = false;
56
56
  this.stride = 16;
57
57
  this.offset = 0;
@@ -98,10 +98,10 @@ const OESVertexArrayObject = function OESVertexArrayObject(gl) {
98
98
  };
99
99
  gl.bindBuffer = function bindBuffer(target, buffer) {
100
100
  switch (target) {
101
- case gl.ARRAY_BUFFER:
101
+ case 34962:
102
102
  self.currentArrayBuffer = buffer;
103
103
  break;
104
- case gl.ELEMENT_ARRAY_BUFFER:
104
+ case 34963:
105
105
  self.currentVertexArrayObject.elementArrayBuffer = buffer;
106
106
  break;
107
107
  default:
@@ -112,17 +112,17 @@ const OESVertexArrayObject = function OESVertexArrayObject(gl) {
112
112
  const vao = self.currentVertexArrayObject;
113
113
  const attrib = vao.attribs[index];
114
114
  switch (pname) {
115
- case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
115
+ case 34975:
116
116
  return attrib.buffer;
117
- case gl.VERTEX_ATTRIB_ARRAY_ENABLED:
117
+ case 34338:
118
118
  return attrib.enabled;
119
- case gl.VERTEX_ATTRIB_ARRAY_SIZE:
119
+ case 34339:
120
120
  return attrib.size;
121
- case gl.VERTEX_ATTRIB_ARRAY_STRIDE:
121
+ case 34340:
122
122
  return attrib.stride;
123
- case gl.VERTEX_ATTRIB_ARRAY_TYPE:
123
+ case 34341:
124
124
  return attrib.type;
125
- case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:
125
+ case 34922:
126
126
  return attrib.normalized;
127
127
  default:
128
128
  return original.getVertexAttrib.apply(this, arguments);
@@ -161,7 +161,7 @@ OESVertexArrayObject.prototype.reset_ = function reset_() {
161
161
  }
162
162
  }
163
163
  const gl = this.gl;
164
- this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
164
+ this.maxVertexAttribs = gl.getParameter(34921);
165
165
  this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);
166
166
  this.currentVertexArrayObject = null;
167
167
  this.currentArrayBuffer = null;
@@ -191,7 +191,7 @@ OESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arra
191
191
  OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {
192
192
  const gl = this.gl;
193
193
  if (arrayObject && !arrayObject.isAlive) {
194
- synthesizeGLError(gl.INVALID_OPERATION, 'bindVertexArrayOES: attempt to bind deleted arrayObject');
194
+ synthesizeGLError(1282, 'bindVertexArrayOES: attempt to bind deleted arrayObject');
195
195
  return;
196
196
  }
197
197
  const original = this.original;
@@ -203,7 +203,7 @@ OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(
203
203
  return;
204
204
  }
205
205
  if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {
206
- original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);
206
+ original.bindBuffer.call(gl, 34963, newVAO.elementArrayBuffer);
207
207
  }
208
208
  let currentBinding = this.currentArrayBuffer;
209
209
  const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);
@@ -221,7 +221,7 @@ OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(
221
221
  let bufferChanged = false;
222
222
  if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {
223
223
  if (currentBinding !== attrib.buffer) {
224
- original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);
224
+ original.bindBuffer.call(gl, 34962, attrib.buffer);
225
225
  currentBinding = attrib.buffer;
226
226
  }
227
227
  bufferChanged = true;
@@ -232,7 +232,7 @@ OESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(
232
232
  }
233
233
  }
234
234
  if (this.currentArrayBuffer !== currentBinding) {
235
- original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);
235
+ original.bindBuffer.call(gl, 34962, this.currentArrayBuffer);
236
236
  }
237
237
  };
238
238
  export function polyfillVertexArrayObject(gl) {
@@ -1 +1 @@
1
- {"version":3,"file":"polyfill-vertex-array-object.js","names":["glErrorShadow","error","msg","globalThis","console","log","synthesizeGLError","err","opt_msg","undefined","wrapGLError","gl","f","getError","apply","NO_ERROR","parseInt","WebGLVertexArrayObjectOES","ext","isAlive","hasBeenBound","elementArrayBuffer","attribs","Array","maxVertexAttribs","n","length","attrib","VertexAttrib","maxAttrib","enabled","buffer","size","type","FLOAT","normalized","stride","offset","cached","recache","prototype","join","OESVertexArrayObject","self","original","getParameter","enableVertexAttribArray","disableVertexAttribArray","bindBuffer","getVertexAttrib","vertexAttribPointer","pname","VERTEX_ARRAY_BINDING_OES","currentVertexArrayObject","defaultVertexArrayObject","arguments","index","vao","Math","max","target","ARRAY_BUFFER","currentArrayBuffer","ELEMENT_ARRAY_BUFFER","VERTEX_ATTRIB_ARRAY_BUFFER_BINDING","VERTEX_ATTRIB_ARRAY_ENABLED","VERTEX_ATTRIB_ARRAY_SIZE","VERTEX_ATTRIB_ARRAY_STRIDE","VERTEX_ATTRIB_ARRAY_TYPE","VERTEX_ATTRIB_ARRAY_NORMALIZED","indx","instrumentExtension","canvas","addEventListener","reset_","contextWasLost","vertexArrayObjects","ii","MAX_VERTEX_ATTRIBS","bindVertexArrayOES","createVertexArrayOES","arrayObject","push","deleteVertexArrayOES","splice","indexOf","isVertexArrayOES","INVALID_OPERATION","oldVAO","newVAO","call","currentBinding","oldAttrib","bufferChanged","polyfillVertexArrayObject","createVertexArray","original_getSupportedExtensions","getSupportedExtensions","list","original_getExtension","getExtension","name","__OESVertexArrayObject"],"sources":["../../../src/context/polyfill/polyfill-vertex-array-object.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/*\n ** Copyright (c) 2015 The Khronos Group Inc.\n **\n ** Permission is hereby granted, free of charge, to any person obtaining a\n ** copy of this software and/or associated documentation files (the\n ** \"Materials\"), to deal in the Materials without restriction, including\n ** without limitation the rights to use, copy, modify, merge, publish,\n ** distribute, sublicense, and/or sell copies of the Materials, and to\n ** permit persons to whom the Materials are furnished to do so, subject to\n ** the following conditions:\n **\n ** The above copyright notice and this permission notice shall be included\n ** in all copies or substantial portions of the Materials.\n **\n ** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n */\n\n// Modified to use ES6 and polyfill a provided context rather than\n// the global class.\n\n// @ts-nocheck external code\n/* eslint-disable */ \n\nconst glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== gl.NO_ERROR) {\n glErrorShadow[err] = true;\n }\n } while (err !== gl.NO_ERROR);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return gl.NO_ERROR;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = gl.FLOAT;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n\n this.cached = '';\n this.recache();\n};\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.gl = gl;\n\n wrapGLError(gl);\n\n const original = (this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n });\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case gl.ARRAY_BUFFER:\n self.currentArrayBuffer = buffer;\n break;\n case gl.ELEMENT_ARRAY_BUFFER:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch (pname) {\n case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:\n return attrib.buffer;\n case gl.VERTEX_ATTRIB_ARRAY_ENABLED:\n return attrib.enabled;\n case gl.VERTEX_ATTRIB_ARRAY_SIZE:\n return attrib.size;\n case gl.VERTEX_ATTRIB_ARRAY_STRIDE:\n return attrib.stride;\n case gl.VERTEX_ATTRIB_ARRAY_TYPE:\n return attrib.type;\n case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n // eslint-disable-next-line max-params\n gl.vertexAttribPointer = function vertexAttribPointer(\n indx,\n size,\n type,\n normalized,\n stride,\n offset\n ) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n // undefined for headless gl\n if (gl.canvas) {\n gl.canvas.addEventListener(\n 'webglcontextrestored',\n () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n },\n true\n );\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(\n gl.INVALID_OPERATION,\n 'bindVertexArrayOES: attempt to bind deleted arrayObject'\n );\n return;\n }\n const original = this.original;\n\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(\n gl,\n n,\n attrib.size,\n attrib.type,\n attrib.normalized,\n attrib.stride,\n attrib.offset\n );\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n // VAOs directly supported on object (i.e. WebGL 2 context)\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) {\n return ext;\n }\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n return this.__OESVertexArrayObject;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"polyfill-vertex-array-object.js","names":["glErrorShadow","error","msg","globalThis","console","log","synthesizeGLError","err","opt_msg","undefined","wrapGLError","gl","f","getError","apply","parseInt","WebGLVertexArrayObjectOES","ext","isAlive","hasBeenBound","elementArrayBuffer","attribs","Array","maxVertexAttribs","n","length","attrib","VertexAttrib","maxAttrib","enabled","buffer","size","type","normalized","stride","offset","cached","recache","prototype","join","OESVertexArrayObject","self","original","getParameter","enableVertexAttribArray","disableVertexAttribArray","bindBuffer","getVertexAttrib","vertexAttribPointer","pname","VERTEX_ARRAY_BINDING_OES","currentVertexArrayObject","defaultVertexArrayObject","arguments","index","vao","Math","max","target","currentArrayBuffer","indx","instrumentExtension","canvas","addEventListener","reset_","contextWasLost","vertexArrayObjects","ii","bindVertexArrayOES","createVertexArrayOES","arrayObject","push","deleteVertexArrayOES","splice","indexOf","isVertexArrayOES","oldVAO","newVAO","call","currentBinding","oldAttrib","bufferChanged","polyfillVertexArrayObject","createVertexArray","original_getSupportedExtensions","getSupportedExtensions","list","original_getExtension","getExtension","name","__OESVertexArrayObject"],"sources":["../../../src/context/polyfill/polyfill-vertex-array-object.ts"],"sourcesContent":["// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\n\n/*\n ** Copyright (c) 2015 The Khronos Group Inc.\n **\n ** Permission is hereby granted, free of charge, to any person obtaining a\n ** copy of this software and/or associated documentation files (the\n ** \"Materials\"), to deal in the Materials without restriction, including\n ** without limitation the rights to use, copy, modify, merge, publish,\n ** distribute, sublicense, and/or sell copies of the Materials, and to\n ** permit persons to whom the Materials are furnished to do so, subject to\n ** the following conditions:\n **\n ** The above copyright notice and this permission notice shall be included\n ** in all copies or substantial portions of the Materials.\n **\n ** THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\n */\n\n// Modified to use ES6 and polyfill a provided context rather than\n// the global class.\n\n// @ts-nocheck external code\n/* eslint-disable */ \n\nconst glErrorShadow = {};\n\nfunction error(msg) {\n if (globalThis.console && globalThis.console.error) {\n globalThis.console.error(msg);\n }\n}\n\nfunction log(msg) {\n if (globalThis.console && globalThis.console.log) {\n globalThis.console.log(msg);\n }\n}\n\nfunction synthesizeGLError(err, opt_msg) {\n glErrorShadow[err] = true;\n if (opt_msg !== undefined) {\n error(opt_msg);\n }\n}\n\nfunction wrapGLError(gl) {\n const f = gl.getError;\n gl.getError = function getError() {\n let err;\n do {\n err = f.apply(gl);\n if (err !== gl.NO_ERROR) {\n glErrorShadow[err] = true;\n }\n } while (err !== gl.NO_ERROR);\n\n for (err in glErrorShadow) {\n if (glErrorShadow[err]) {\n delete glErrorShadow[err];\n return parseInt(err, 10);\n }\n }\n\n return gl.NO_ERROR;\n };\n}\n\nconst WebGLVertexArrayObjectOES = function WebGLVertexArrayObjectOES(ext) {\n const gl = ext.gl;\n\n this.ext = ext;\n this.isAlive = true;\n this.hasBeenBound = false;\n\n this.elementArrayBuffer = null;\n this.attribs = new Array(ext.maxVertexAttribs);\n for (let n = 0; n < this.attribs.length; n++) {\n const attrib = new WebGLVertexArrayObjectOES.VertexAttrib(gl);\n this.attribs[n] = attrib;\n }\n\n this.maxAttrib = 0;\n};\n\nWebGLVertexArrayObjectOES.VertexAttrib = function VertexAttrib(gl) {\n this.enabled = false;\n this.buffer = null;\n this.size = 4;\n this.type = gl.FLOAT;\n this.normalized = false;\n this.stride = 16;\n this.offset = 0;\n\n this.cached = '';\n this.recache();\n};\nWebGLVertexArrayObjectOES.VertexAttrib.prototype.recache = function recache() {\n this.cached = [this.size, this.type, this.normalized, this.stride, this.offset].join(':');\n};\n\nconst OESVertexArrayObject = function OESVertexArrayObject(gl) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n this.gl = gl;\n\n wrapGLError(gl);\n\n const original = (this.original = {\n getParameter: gl.getParameter,\n enableVertexAttribArray: gl.enableVertexAttribArray,\n disableVertexAttribArray: gl.disableVertexAttribArray,\n bindBuffer: gl.bindBuffer,\n getVertexAttrib: gl.getVertexAttrib,\n vertexAttribPointer: gl.vertexAttribPointer\n });\n\n gl.getParameter = function getParameter(pname) {\n if (pname === self.VERTEX_ARRAY_BINDING_OES) {\n if (self.currentVertexArrayObject === self.defaultVertexArrayObject) {\n return null;\n }\n return self.currentVertexArrayObject;\n }\n return original.getParameter.apply(this, arguments);\n };\n\n gl.enableVertexAttribArray = function enableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = true;\n return original.enableVertexAttribArray.apply(this, arguments);\n };\n gl.disableVertexAttribArray = function disableVertexAttribArray(index) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, index);\n const attrib = vao.attribs[index];\n attrib.enabled = false;\n return original.disableVertexAttribArray.apply(this, arguments);\n };\n\n gl.bindBuffer = function bindBuffer(target, buffer) {\n switch (target) {\n case gl.ARRAY_BUFFER:\n self.currentArrayBuffer = buffer;\n break;\n case gl.ELEMENT_ARRAY_BUFFER:\n self.currentVertexArrayObject.elementArrayBuffer = buffer;\n break;\n default:\n }\n return original.bindBuffer.apply(this, arguments);\n };\n\n gl.getVertexAttrib = function getVertexAttrib(index, pname) {\n const vao = self.currentVertexArrayObject;\n const attrib = vao.attribs[index];\n switch (pname) {\n case gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:\n return attrib.buffer;\n case gl.VERTEX_ATTRIB_ARRAY_ENABLED:\n return attrib.enabled;\n case gl.VERTEX_ATTRIB_ARRAY_SIZE:\n return attrib.size;\n case gl.VERTEX_ATTRIB_ARRAY_STRIDE:\n return attrib.stride;\n case gl.VERTEX_ATTRIB_ARRAY_TYPE:\n return attrib.type;\n case gl.VERTEX_ATTRIB_ARRAY_NORMALIZED:\n return attrib.normalized;\n default:\n return original.getVertexAttrib.apply(this, arguments);\n }\n };\n\n // eslint-disable-next-line max-params\n gl.vertexAttribPointer = function vertexAttribPointer(\n indx,\n size,\n type,\n normalized,\n stride,\n offset\n ) {\n const vao = self.currentVertexArrayObject;\n vao.maxAttrib = Math.max(vao.maxAttrib, indx);\n const attrib = vao.attribs[indx];\n attrib.buffer = self.currentArrayBuffer;\n attrib.size = size;\n attrib.type = type;\n attrib.normalized = normalized;\n attrib.stride = stride;\n attrib.offset = offset;\n attrib.recache();\n return original.vertexAttribPointer.apply(this, arguments);\n };\n\n if (gl.instrumentExtension) {\n gl.instrumentExtension(this, 'OES_vertex_array_object');\n }\n\n // undefined for headless gl\n if (gl.canvas) {\n gl.canvas.addEventListener(\n 'webglcontextrestored',\n () => {\n log('OESVertexArrayObject emulation library context restored');\n self.reset_();\n },\n true\n );\n }\n\n this.reset_();\n};\n\nOESVertexArrayObject.prototype.VERTEX_ARRAY_BINDING_OES = 0x85b5;\n\nOESVertexArrayObject.prototype.reset_ = function reset_() {\n const contextWasLost = this.vertexArrayObjects !== undefined;\n if (contextWasLost) {\n for (let ii = 0; ii < this.vertexArrayObjects.length; ++ii) {\n this.vertexArrayObjects.isAlive = false;\n }\n }\n const gl = this.gl;\n this.maxVertexAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n\n this.defaultVertexArrayObject = new WebGLVertexArrayObjectOES(this);\n this.currentVertexArrayObject = null;\n this.currentArrayBuffer = null;\n this.vertexArrayObjects = [this.defaultVertexArrayObject];\n\n this.bindVertexArrayOES(null);\n};\n\nOESVertexArrayObject.prototype.createVertexArrayOES = function createVertexArrayOES() {\n const arrayObject = new WebGLVertexArrayObjectOES(this);\n this.vertexArrayObjects.push(arrayObject);\n return arrayObject;\n};\n\nOESVertexArrayObject.prototype.deleteVertexArrayOES = function deleteVertexArrayOES(arrayObject) {\n arrayObject.isAlive = false;\n this.vertexArrayObjects.splice(this.vertexArrayObjects.indexOf(arrayObject), 1);\n if (this.currentVertexArrayObject === arrayObject) {\n this.bindVertexArrayOES(null);\n }\n};\n\nOESVertexArrayObject.prototype.isVertexArrayOES = function isVertexArrayOES(arrayObject) {\n if (arrayObject && arrayObject instanceof WebGLVertexArrayObjectOES) {\n if (arrayObject.hasBeenBound && arrayObject.ext === this) {\n return true;\n }\n }\n return false;\n};\n\nOESVertexArrayObject.prototype.bindVertexArrayOES = function bindVertexArrayOES(arrayObject) {\n const gl = this.gl;\n if (arrayObject && !arrayObject.isAlive) {\n synthesizeGLError(\n gl.INVALID_OPERATION,\n 'bindVertexArrayOES: attempt to bind deleted arrayObject'\n );\n return;\n }\n const original = this.original;\n\n const oldVAO = this.currentVertexArrayObject;\n this.currentVertexArrayObject = arrayObject || this.defaultVertexArrayObject;\n this.currentVertexArrayObject.hasBeenBound = true;\n const newVAO = this.currentVertexArrayObject;\n\n if (oldVAO === newVAO) {\n return;\n }\n\n if (!oldVAO || newVAO.elementArrayBuffer !== oldVAO.elementArrayBuffer) {\n original.bindBuffer.call(gl, gl.ELEMENT_ARRAY_BUFFER, newVAO.elementArrayBuffer);\n }\n\n let currentBinding = this.currentArrayBuffer;\n const maxAttrib = Math.max(oldVAO ? oldVAO.maxAttrib : 0, newVAO.maxAttrib);\n for (let n = 0; n <= maxAttrib; n++) {\n const attrib = newVAO.attribs[n];\n const oldAttrib = oldVAO ? oldVAO.attribs[n] : null;\n\n if (!oldVAO || attrib.enabled !== oldAttrib.enabled) {\n if (attrib.enabled) {\n original.enableVertexAttribArray.call(gl, n);\n } else {\n original.disableVertexAttribArray.call(gl, n);\n }\n }\n\n if (attrib.enabled) {\n let bufferChanged = false;\n if (!oldVAO || attrib.buffer !== oldAttrib.buffer) {\n if (currentBinding !== attrib.buffer) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, attrib.buffer);\n currentBinding = attrib.buffer;\n }\n bufferChanged = true;\n }\n\n if (bufferChanged || attrib.cached !== oldAttrib.cached) {\n original.vertexAttribPointer.call(\n gl,\n n,\n attrib.size,\n attrib.type,\n attrib.normalized,\n attrib.stride,\n attrib.offset\n );\n }\n }\n }\n\n if (this.currentArrayBuffer !== currentBinding) {\n original.bindBuffer.call(gl, gl.ARRAY_BUFFER, this.currentArrayBuffer);\n }\n};\n\nexport function polyfillVertexArrayObject(gl) {\n if (typeof gl.createVertexArray === 'function') {\n // VAOs directly supported on object (i.e. WebGL 2 context)\n return;\n }\n\n const original_getSupportedExtensions = gl.getSupportedExtensions;\n gl.getSupportedExtensions = function getSupportedExtensions() {\n const list = original_getSupportedExtensions.call(this) || [];\n if (list.indexOf('OES_vertex_array_object') < 0) {\n list.push('OES_vertex_array_object');\n }\n return list;\n };\n\n const original_getExtension = gl.getExtension;\n gl.getExtension = function getExtension(name) {\n const ext = original_getExtension.call(this, name);\n if (ext) {\n return ext;\n }\n if (name !== 'OES_vertex_array_object') {\n return null;\n }\n\n if (!gl.__OESVertexArrayObject) {\n this.__OESVertexArrayObject = new OESVertexArrayObject(this);\n }\n return this.__OESVertexArrayObject;\n };\n}\n"],"mappings":"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"}