@luma.gl/webgl 9.0.0-alpha.10 → 9.0.0-alpha.12
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/adapter/converters/device-parameters.js +1 -12
- package/dist/adapter/converters/device-parameters.js.map +1 -1
- package/dist/adapter/converters/texture-formats.d.ts.map +1 -1
- package/dist/adapter/converters/texture-formats.js +0 -9
- package/dist/adapter/converters/texture-formats.js.map +1 -1
- package/dist/adapter/converters/vertex-formats.d.ts.map +1 -1
- package/dist/adapter/converters/vertex-formats.js +3 -0
- package/dist/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/adapter/device-helpers/device-features.d.ts.map +1 -1
- package/dist/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/adapter/device-helpers/get-device-info.js +4 -0
- package/dist/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts +1 -1
- package/dist/adapter/helpers/get-shader-layout.d.ts.map +1 -1
- package/dist/adapter/helpers/get-shader-layout.js +2 -4
- package/dist/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/adapter/helpers/set-uniform.js +1 -1
- package/dist/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/adapter/objects/constants-to-keys.d.ts.map +1 -1
- package/dist/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/adapter/objects/webgl-resource.d.ts +2 -4
- package/dist/adapter/objects/webgl-resource.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-resource.js +1 -7
- package/dist/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.d.ts.map +1 -1
- package/dist/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/adapter/resources/webgl-buffer.d.ts +0 -1
- package/dist/adapter/resources/webgl-buffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-buffer.js +0 -2
- package/dist/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts +0 -1
- package/dist/adapter/resources/webgl-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-framebuffer.js +2 -2
- package/dist/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-render-pipeline.js +4 -32
- package/dist/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/adapter/resources/webgl-sampler.d.ts +1 -0
- package/dist/adapter/resources/webgl-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-sampler.js +4 -0
- package/dist/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/adapter/resources/webgl-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/adapter/resources/webgl-texture.d.ts +2 -2
- package/dist/adapter/resources/webgl-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgl-texture.js +1 -3
- package/dist/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/adapter/webgl-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgl-canvas-context.js +4 -3
- package/dist/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/adapter/webgl-device.d.ts +34 -29
- package/dist/adapter/webgl-device.d.ts.map +1 -1
- package/dist/adapter/webgl-device.js +37 -28
- package/dist/adapter/webgl-device.js.map +1 -1
- package/dist/classic/buffer.d.ts.map +1 -1
- package/dist/classic/buffer.js.map +1 -1
- package/dist/context/debug/webgl-developer-tools.js +1 -7
- package/dist/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/context/parameters/unified-parameter-api.d.ts.map +1 -1
- package/dist/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.d.ts +103 -103
- package/dist/context/parameters/webgl-parameter-tables.d.ts.map +1 -1
- package/dist/context/parameters/webgl-parameter-tables.js +15 -14
- package/dist/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/context/polyfill/context-data.d.ts +13 -0
- package/dist/context/polyfill/context-data.d.ts.map +1 -0
- package/dist/context/polyfill/context-data.js +14 -0
- package/dist/context/polyfill/context-data.js.map +1 -0
- package/dist/context/polyfill/get-parameter-polyfill.d.ts +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.d.ts.map +1 -1
- package/dist/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/context/polyfill/polyfill-context.js +4 -4
- package/dist/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/context/polyfill/polyfill-table.d.ts +7 -7
- package/dist/context/polyfill/polyfill-table.d.ts.map +1 -1
- package/dist/context/polyfill/polyfill-table.js +5 -4
- package/dist/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/context/state-tracker/track-context-state.d.ts.map +1 -1
- package/dist/context/state-tracker/track-context-state.js +0 -1
- package/dist/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/context/state-tracker/with-parameters.js +1 -1
- package/dist/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/device-parameters.js +1 -12
- package/dist/es5/adapter/converters/device-parameters.js.map +1 -1
- package/dist/es5/adapter/converters/texture-formats.js +1 -10
- package/dist/es5/adapter/converters/texture-formats.js.map +1 -1
- package/dist/es5/adapter/converters/vertex-formats.js +3 -0
- package/dist/es5/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/es5/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/es5/adapter/device-helpers/get-device-info.js +4 -0
- package/dist/es5/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/es5/adapter/helpers/get-shader-layout.js +2 -4
- package/dist/es5/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/es5/adapter/helpers/set-uniform.js +1 -1
- package/dist/es5/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/es5/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/es5/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-resource.js +1 -6
- package/dist/es5/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/es5/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-buffer.js +0 -1
- package/dist/es5/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js +2 -1
- package/dist/es5/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-render-pipeline.js +2 -38
- package/dist/es5/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-sampler.js +5 -0
- package/dist/es5/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/es5/adapter/resources/webgl-texture.js +1 -7
- package/dist/es5/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/es5/adapter/webgl-canvas-context.js +3 -4
- package/dist/es5/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/es5/adapter/webgl-device.js +38 -27
- package/dist/es5/adapter/webgl-device.js.map +1 -1
- package/dist/es5/classic/buffer.js.map +1 -1
- package/dist/es5/context/debug/webgl-developer-tools.js +1 -7
- package/dist/es5/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/es5/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/es5/context/parameters/webgl-parameter-tables.js +10 -9
- package/dist/es5/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/es5/context/polyfill/context-data.js +21 -0
- package/dist/es5/context/polyfill/context-data.js.map +1 -0
- package/dist/es5/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-context.js +4 -4
- package/dist/es5/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/es5/context/polyfill/polyfill-table.js +5 -4
- package/dist/es5/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/es5/context/state-tracker/track-context-state.js +0 -1
- package/dist/es5/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/es5/context/state-tracker/with-parameters.js +4 -2
- package/dist/es5/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/es5/index.js +0 -14
- package/dist/es5/index.js.map +1 -1
- package/dist/esm/adapter/converters/device-parameters.js +1 -12
- package/dist/esm/adapter/converters/device-parameters.js.map +1 -1
- package/dist/esm/adapter/converters/texture-formats.js +0 -9
- package/dist/esm/adapter/converters/texture-formats.js.map +1 -1
- package/dist/esm/adapter/converters/vertex-formats.js +3 -0
- package/dist/esm/adapter/converters/vertex-formats.js.map +1 -1
- package/dist/esm/adapter/device-helpers/device-features.js.map +1 -1
- package/dist/esm/adapter/device-helpers/get-device-info.js +4 -0
- package/dist/esm/adapter/device-helpers/get-device-info.js.map +1 -1
- package/dist/esm/adapter/helpers/get-shader-layout.js +2 -4
- package/dist/esm/adapter/helpers/get-shader-layout.js.map +1 -1
- package/dist/esm/adapter/helpers/set-uniform.js +1 -1
- package/dist/esm/adapter/helpers/set-uniform.js.map +1 -1
- package/dist/esm/adapter/objects/constants-to-keys.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js +1 -1
- package/dist/esm/adapter/objects/webgl-renderbuffer.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-resource.js +1 -7
- package/dist/esm/adapter/objects/webgl-resource.js.map +1 -1
- package/dist/esm/adapter/objects/webgl-vertex-array-object.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-buffer.js +0 -2
- package/dist/esm/adapter/resources/webgl-buffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-command-encoder.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-framebuffer.js +2 -2
- package/dist/esm/adapter/resources/webgl-framebuffer.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-render-pipeline.js +4 -32
- package/dist/esm/adapter/resources/webgl-render-pipeline.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-sampler.js +4 -0
- package/dist/esm/adapter/resources/webgl-sampler.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-shader.js.map +1 -1
- package/dist/esm/adapter/resources/webgl-texture.js +1 -3
- package/dist/esm/adapter/resources/webgl-texture.js.map +1 -1
- package/dist/esm/adapter/webgl-canvas-context.js +4 -3
- package/dist/esm/adapter/webgl-canvas-context.js.map +1 -1
- package/dist/esm/adapter/webgl-device.js +37 -28
- package/dist/esm/adapter/webgl-device.js.map +1 -1
- package/dist/esm/classic/buffer.js.map +1 -1
- package/dist/esm/context/debug/webgl-developer-tools.js +1 -7
- package/dist/esm/context/debug/webgl-developer-tools.js.map +1 -1
- package/dist/esm/context/parameters/unified-parameter-api.js.map +1 -1
- package/dist/esm/context/parameters/webgl-parameter-tables.js +15 -14
- package/dist/esm/context/parameters/webgl-parameter-tables.js.map +1 -1
- package/dist/esm/context/polyfill/context-data.js +14 -0
- package/dist/esm/context/polyfill/context-data.js.map +1 -0
- package/dist/esm/context/polyfill/get-parameter-polyfill.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-context.js +4 -4
- package/dist/esm/context/polyfill/polyfill-context.js.map +1 -1
- package/dist/esm/context/polyfill/polyfill-table.js +5 -4
- package/dist/esm/context/polyfill/polyfill-table.js.map +1 -1
- package/dist/esm/context/state-tracker/track-context-state.js +0 -1
- package/dist/esm/context/state-tracker/track-context-state.js.map +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js +1 -1
- package/dist/esm/context/state-tracker/with-parameters.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/adapter/converters/device-parameters.ts +11 -11
- package/src/adapter/converters/texture-formats.ts +12 -12
- package/src/adapter/converters/vertex-formats.ts +1 -0
- package/src/adapter/device-helpers/device-features.ts +0 -1
- package/src/adapter/device-helpers/get-device-info.ts +5 -1
- package/src/adapter/helpers/get-shader-layout.ts +18 -15
- package/src/adapter/helpers/set-uniform.ts +1 -1
- package/src/adapter/objects/constants-to-keys.ts +4 -1
- package/src/adapter/objects/webgl-renderbuffer.ts +5 -5
- package/src/adapter/objects/webgl-resource.ts +7 -12
- package/src/adapter/objects/webgl-vertex-array-object.ts +4 -4
- package/src/adapter/resources/webgl-buffer.ts +4 -4
- package/src/adapter/resources/webgl-command-encoder.ts +4 -4
- package/src/adapter/resources/webgl-framebuffer.ts +6 -5
- package/src/adapter/resources/webgl-render-pipeline.ts +24 -23
- package/src/adapter/resources/webgl-sampler.ts +5 -1
- package/src/adapter/resources/webgl-shader.ts +1 -1
- package/src/adapter/resources/webgl-texture.ts +5 -7
- package/src/adapter/webgl-canvas-context.ts +2 -3
- package/src/adapter/webgl-device.ts +69 -59
- package/src/classic/buffer.ts +7 -4
- package/src/context/debug/webgl-developer-tools.ts +7 -7
- package/src/context/parameters/unified-parameter-api.ts +1 -1
- package/src/context/parameters/webgl-parameter-tables.ts +113 -94
- package/src/context/polyfill/context-data.ts +27 -0
- package/src/context/polyfill/get-parameter-polyfill.ts +7 -6
- package/src/context/polyfill/polyfill-context.ts +5 -5
- package/src/context/polyfill/polyfill-table.ts +14 -13
- package/src/context/state-tracker/track-context-state.ts +0 -1
- package/src/context/state-tracker/with-parameters.ts +2 -1
- package/src/index.ts +0 -3
- package/dist/context/context/context-state.d.ts +0 -18
- package/dist/context/context/context-state.d.ts.map +0 -1
- package/dist/context/context/context-state.js +0 -26
- package/dist/context/context/context-state.js.map +0 -1
- package/dist/context/context/device-pixels.d.ts +0 -25
- package/dist/context/context/device-pixels.d.ts.map +0 -1
- package/dist/context/context/device-pixels.js +0 -103
- package/dist/context/context/device-pixels.js.map +0 -1
- package/dist/es5/context/context/context-state.js +0 -31
- package/dist/es5/context/context/context-state.js.map +0 -1
- package/dist/es5/context/context/device-pixels.js +0 -121
- package/dist/es5/context/context/device-pixels.js.map +0 -1
- package/dist/esm/context/context/context-state.js +0 -26
- package/dist/esm/context/context/context-state.js.map +0 -1
- package/dist/esm/context/context/device-pixels.js +0 -103
- package/dist/esm/context/context/device-pixels.js.map +0 -1
- package/src/context/context/context-state.ts +0 -41
- package/src/context/context/device-pixels.ts +0 -158
|
@@ -7,11 +7,10 @@ import type {
|
|
|
7
7
|
CanvasContextProps,
|
|
8
8
|
TextureFormat
|
|
9
9
|
} from '@luma.gl/api';
|
|
10
|
-
import {Device, CanvasContext, log,
|
|
10
|
+
import {Device, CanvasContext, log, uid} from '@luma.gl/api';
|
|
11
11
|
import {isBrowser} from '@probe.gl/env';
|
|
12
12
|
import {polyfillContext} from '../context/polyfill/polyfill-context';
|
|
13
|
-
import {trackContextState} from '../context/state-tracker/track-context-state';
|
|
14
|
-
import {ContextState} from '../context/context/context-state';
|
|
13
|
+
import {popContextState, pushContextState, trackContextState} from '../context/state-tracker/track-context-state';
|
|
15
14
|
import {createBrowserContext} from '../context/context/create-browser-context';
|
|
16
15
|
import {
|
|
17
16
|
createHeadlessContext,
|
|
@@ -33,17 +32,17 @@ import {
|
|
|
33
32
|
import type {
|
|
34
33
|
BufferProps,
|
|
35
34
|
ShaderProps,
|
|
36
|
-
Sampler,
|
|
35
|
+
// Sampler,
|
|
37
36
|
SamplerProps,
|
|
38
37
|
TextureProps,
|
|
39
38
|
ExternalTexture,
|
|
40
39
|
ExternalTextureProps,
|
|
41
40
|
FramebufferProps,
|
|
42
|
-
RenderPipeline,
|
|
41
|
+
// RenderPipeline,
|
|
43
42
|
RenderPipelineProps,
|
|
44
43
|
ComputePipeline,
|
|
45
44
|
ComputePipelineProps,
|
|
46
|
-
RenderPass,
|
|
45
|
+
// RenderPass,
|
|
47
46
|
RenderPassProps,
|
|
48
47
|
ComputePass,
|
|
49
48
|
ComputePassProps
|
|
@@ -60,10 +59,8 @@ import WEBGLRenderPipeline from './resources/webgl-render-pipeline';
|
|
|
60
59
|
|
|
61
60
|
const LOG_LEVEL = 1;
|
|
62
61
|
|
|
63
|
-
let counter = 0;
|
|
64
|
-
|
|
65
62
|
/** WebGPU style Device API for a WebGL context */
|
|
66
|
-
export default class WebGLDevice extends Device
|
|
63
|
+
export default class WebGLDevice extends Device {
|
|
67
64
|
//
|
|
68
65
|
// Public `Device` API
|
|
69
66
|
//
|
|
@@ -95,37 +92,6 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
95
92
|
private _features?: Set<DeviceFeature>;
|
|
96
93
|
private _limits?: DeviceLimits;
|
|
97
94
|
|
|
98
|
-
//
|
|
99
|
-
// WebGL-only API (not part of `Device` API)
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
/** WebGL1 typed context. Can always be used. */
|
|
103
|
-
readonly gl: WebGLRenderingContext;
|
|
104
|
-
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
105
|
-
readonly gl2: WebGL2RenderingContext | null = null;
|
|
106
|
-
readonly debug: boolean = false;
|
|
107
|
-
|
|
108
|
-
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
109
|
-
readonly isWebGL1: boolean;
|
|
110
|
-
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
111
|
-
readonly isWebGL2: boolean;
|
|
112
|
-
|
|
113
|
-
get webglLimits(): WebGLLimits {
|
|
114
|
-
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
115
|
-
return this._webglLimits;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
private _webglLimits?: WebGLLimits;
|
|
119
|
-
|
|
120
|
-
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
121
|
-
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
122
|
-
/** State used by luma.gl classes */
|
|
123
|
-
readonly _extensions: Record<string, any> = {};
|
|
124
|
-
_polyfilled: boolean = false;
|
|
125
|
-
|
|
126
|
-
/** Instance of Spector.js (if initialized) */
|
|
127
|
-
spector;
|
|
128
|
-
|
|
129
95
|
//
|
|
130
96
|
// Static methods, expected to be present by `luma.createDevice()`
|
|
131
97
|
//
|
|
@@ -184,7 +150,7 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
184
150
|
//
|
|
185
151
|
|
|
186
152
|
constructor(props: DeviceProps) {
|
|
187
|
-
super(props);
|
|
153
|
+
super({...props, id: props.id || uid('webgl-device')});
|
|
188
154
|
|
|
189
155
|
// If attaching to an already attached context, return the attached device
|
|
190
156
|
// @ts-expect-error device is attached to context
|
|
@@ -206,7 +172,7 @@ export default class WebGLDevice extends Device implements ContextState {
|
|
|
206
172
|
message: 'Computer entered sleep mode, or too many apps or browser tabs are using the GPU.'
|
|
207
173
|
});
|
|
208
174
|
|
|
209
|
-
let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl;
|
|
175
|
+
let gl: WebGLRenderingContext | WebGL2RenderingContext | null = props.gl || null;
|
|
210
176
|
gl =
|
|
211
177
|
gl ||
|
|
212
178
|
(isBrowser() ? createBrowserContext(this.canvasContext.canvas, {...props, onContextLost}) : null);
|
|
@@ -270,29 +236,13 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
270
236
|
* Destroys the context
|
|
271
237
|
* @note Has no effect for browser contexts, there is no browser API for destroying contexts
|
|
272
238
|
*/
|
|
273
|
-
destroy() {
|
|
239
|
+
destroy(): void {
|
|
274
240
|
const ext = this.gl.getExtension('STACKGL_destroy_context');
|
|
275
241
|
if (ext) {
|
|
276
242
|
ext.destroy();
|
|
277
243
|
}
|
|
278
244
|
}
|
|
279
245
|
|
|
280
|
-
/**
|
|
281
|
-
* Loses the context
|
|
282
|
-
* @note Triggers context loss, mainly for testing
|
|
283
|
-
*/
|
|
284
|
-
loseDevice() {
|
|
285
|
-
const ext = this.gl.getExtension('WEBGL_lose_context');
|
|
286
|
-
if (ext) {
|
|
287
|
-
ext.loseContext();
|
|
288
|
-
}
|
|
289
|
-
// loseContext should trigger context loss callback but
|
|
290
|
-
this._resolveContextLost?.({
|
|
291
|
-
reason: 'destroyed',
|
|
292
|
-
message: 'Application triggered context loss'
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
|
|
296
246
|
get isLost(): boolean {
|
|
297
247
|
return this.gl.isContextLost();
|
|
298
248
|
}
|
|
@@ -390,6 +340,66 @@ ${this.info.vendor}, ${this.info.renderer} for canvas: ${this.canvasContext.id}`
|
|
|
390
340
|
this.renderPass = null;
|
|
391
341
|
// this.canvasContext.commit();
|
|
392
342
|
}
|
|
343
|
+
|
|
344
|
+
//
|
|
345
|
+
// WebGL-only API (not part of `Device` API)
|
|
346
|
+
//
|
|
347
|
+
|
|
348
|
+
/** WebGL1 typed context. Can always be used. */
|
|
349
|
+
readonly gl: WebGLRenderingContext;
|
|
350
|
+
/** WebGL2 typed context. Need to check isWebGL2 or isWebGL1 before using. */
|
|
351
|
+
readonly gl2: WebGL2RenderingContext | null = null;
|
|
352
|
+
readonly debug: boolean = false;
|
|
353
|
+
|
|
354
|
+
/** `true` if this is a WebGL1 context. @note `false` if WebGL2 */
|
|
355
|
+
readonly isWebGL1: boolean;
|
|
356
|
+
/** `true` if this is a WebGL2 context. @note `false` if WebGL1 */
|
|
357
|
+
readonly isWebGL2: boolean;
|
|
358
|
+
|
|
359
|
+
/** State used by luma.gl classes: TODO - move to canvasContext*/
|
|
360
|
+
readonly _canvasSizeInfo = {clientWidth: 0, clientHeight: 0, devicePixelRatio: 1};
|
|
361
|
+
|
|
362
|
+
/** State used by luma.gl classes - TODO - not used? */
|
|
363
|
+
readonly _extensions: Record<string, any> = {};
|
|
364
|
+
_polyfilled: boolean = false;
|
|
365
|
+
|
|
366
|
+
/** Instance of Spector.js (if initialized) */
|
|
367
|
+
spector;
|
|
368
|
+
|
|
369
|
+
private _webglLimits?: WebGLLimits;
|
|
370
|
+
|
|
371
|
+
/** Return WebGL specific limits */
|
|
372
|
+
get webglLimits() : WebGLLimits {
|
|
373
|
+
this._webglLimits = this._webglLimits || getWebGLLimits(this.gl);
|
|
374
|
+
return this._webglLimits;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Loses the context
|
|
379
|
+
* @note Triggers context loss, mainly for testing
|
|
380
|
+
* @todo Promote to `Device` API?
|
|
381
|
+
*/
|
|
382
|
+
loseDevice(): void {
|
|
383
|
+
const ext = this.gl.getExtension('WEBGL_lose_context');
|
|
384
|
+
if (ext) {
|
|
385
|
+
ext.loseContext();
|
|
386
|
+
}
|
|
387
|
+
// loseContext should trigger context loss callback but
|
|
388
|
+
this._resolveContextLost?.({
|
|
389
|
+
reason: 'destroyed',
|
|
390
|
+
message: 'Application triggered context loss'
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/** Save current WebGL context state onto an internal stack */
|
|
395
|
+
pushState(): void {
|
|
396
|
+
pushContextState(this.gl);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/** Restores previously saved context state */
|
|
400
|
+
popState(): void {
|
|
401
|
+
popContextState(this.gl);
|
|
402
|
+
}
|
|
393
403
|
}
|
|
394
404
|
|
|
395
405
|
/** Check if supplied parameter is a WebGLRenderingContext */
|
package/src/classic/buffer.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
// luma.gl, MIT license
|
|
2
|
+
|
|
1
3
|
import type {Device, BufferProps, TypedArray} from '@luma.gl/api';
|
|
2
|
-
import {
|
|
4
|
+
import {assert, checkProps} from '@luma.gl/api';
|
|
3
5
|
import GL from '@luma.gl/constants';
|
|
4
6
|
import {assertWebGL2Context} from '../context/context/webgl-checks';
|
|
5
7
|
import {AccessorObject} from '../types';
|
|
@@ -106,7 +108,7 @@ export default class ClassicBuffer extends WEBGLBuffer {
|
|
|
106
108
|
Object.seal(this);
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
destroy(): void {
|
|
111
|
+
override destroy(): void {
|
|
110
112
|
if (this.handle) {
|
|
111
113
|
this.removeStats();
|
|
112
114
|
this.trackDeallocatedMemory();
|
|
@@ -116,9 +118,10 @@ export default class ClassicBuffer extends WEBGLBuffer {
|
|
|
116
118
|
}
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
write(data: TypedArray, byteOffset?: number): void {
|
|
121
|
+
override write(data: TypedArray, byteOffset?: number): void {
|
|
120
122
|
this.subData({data, offset: byteOffset});
|
|
121
123
|
}
|
|
124
|
+
|
|
122
125
|
// returns number of elements in the buffer (assuming that the full buffer is used)
|
|
123
126
|
getElementCount(accessor: AccessorObject = this.accessor): number {
|
|
124
127
|
return Math.round(this.byteLength / Accessor.getBytesPerElement(accessor));
|
|
@@ -278,7 +281,7 @@ export default class ClassicBuffer extends WEBGLBuffer {
|
|
|
278
281
|
* Reads data from buffer into an ArrayBufferView or SharedArrayBuffer.
|
|
279
282
|
* @note WEBGL2 ONLY
|
|
280
283
|
*/
|
|
281
|
-
getData(options?: {
|
|
284
|
+
override getData(options?: {
|
|
282
285
|
dstData?: any;
|
|
283
286
|
srcByteOffset?: number;
|
|
284
287
|
dstOffset?: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// luma.gl, MIT license
|
|
2
|
-
import {log, loadScript} from '@luma.gl/api
|
|
2
|
+
import {log, loadScript} from '@luma.gl/api';
|
|
3
3
|
import GL from '@luma.gl/constants';
|
|
4
4
|
|
|
5
5
|
const WEBGL_DEBUG_CDN_URL = 'https://unpkg.com/webgl-debug@2.0.1/index.js';
|
|
@@ -11,12 +11,12 @@ type DebugContextProps = {
|
|
|
11
11
|
webgl2?: boolean;
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
14
|
+
// const DEFAULT_DEBUG_CONTEXT_PROPS: Required<DebugContextProps> = {
|
|
15
|
+
// debug: true,
|
|
16
|
+
// throwOnError: false,
|
|
17
|
+
// break: [],
|
|
18
|
+
// webgl2: false,
|
|
19
|
+
// }
|
|
20
20
|
|
|
21
21
|
// Helper to get shared context data
|
|
22
22
|
function getContextData(gl: any) {
|
|
@@ -10,7 +10,6 @@ import {
|
|
|
10
10
|
GL_PARAMETER_GETTERS
|
|
11
11
|
} from './webgl-parameter-tables';
|
|
12
12
|
|
|
13
|
-
import {isWebGL} from '../context/webgl-checks';
|
|
14
13
|
import WebGLDevice from '../../adapter/webgl-device';
|
|
15
14
|
|
|
16
15
|
export type {GLParameters};
|
|
@@ -129,6 +128,7 @@ export function resetParameters(device: Device | WebGLRenderingContext): void {
|
|
|
129
128
|
|
|
130
129
|
// Returns true if given object is empty, false otherwise.
|
|
131
130
|
function isObjectEmpty(object) {
|
|
131
|
+
// @ts-ignore dummy key variable
|
|
132
132
|
for (const key in object) {
|
|
133
133
|
return false;
|
|
134
134
|
}
|