Преглед на файлове

added isDebugMode to handle more comprehensive checks

Alexander Rose преди 6 години
родител
ревизия
67f7d30612
променени са 5 файла, в които са добавени 18 реда и са изтрити 12 реда
  1. 3 3
      src/mol-gl/webgl/context.ts
  2. 3 3
      src/mol-gl/webgl/program.ts
  3. 3 3
      src/mol-gl/webgl/render-item.ts
  4. 2 2
      src/mol-gl/webgl/shader.ts
  5. 7 1
      src/mol-util/debug.ts

+ 3 - 3
src/mol-gl/webgl/context.ts

@@ -9,7 +9,7 @@ import { createShaderCache, ShaderCache } from './shader'
 import { GLRenderingContext, COMPAT_instanced_arrays, COMPAT_standard_derivatives, COMPAT_vertex_array_object, getInstancedArrays, getStandardDerivatives, getVertexArrayObject, isWebGL2, COMPAT_element_index_uint, getElementIndexUint, COMPAT_texture_float, getTextureFloat, COMPAT_texture_float_linear, getTextureFloatLinear, COMPAT_blend_minmax, getBlendMinMax, getFragDepth, COMPAT_frag_depth, COMPAT_color_buffer_float, getColorBufferFloat, COMPAT_draw_buffers, getDrawBuffers } from './compat';
 import { createFramebufferCache, FramebufferCache, checkFramebufferStatus } from './framebuffer';
 import { Scheduler } from 'mol-task';
-import { isProductionMode } from 'mol-util/debug';
+import { isDebugMode } from 'mol-util/debug';
 
 export function getGLContext(canvas: HTMLCanvasElement, contextAttributes?: WebGLContextAttributes): GLRenderingContext | null {
     function getContext(contextId: 'webgl' | 'experimental-webgl' | 'webgl2') {
@@ -121,13 +121,13 @@ function waitForGpuCommandsCompleteSync(gl: GLRenderingContext): void {
 }
 
 function readPixels(gl: GLRenderingContext, x: number, y: number, width: number, height: number, buffer: Uint8Array | Float32Array) {
-    if (!isProductionMode) checkFramebufferStatus(gl)
+    if (isDebugMode) checkFramebufferStatus(gl)
     if (buffer instanceof Uint8Array) {
         gl.readPixels(x, y, width, height, gl.RGBA, gl.UNSIGNED_BYTE, buffer)
     } else {
         gl.readPixels(x, y, width, height, gl.RGBA, gl.FLOAT, buffer)
     }
-    if (!isProductionMode) checkError(gl)
+    if (isDebugMode) checkError(gl)
 }
 
 export function createImageData(buffer: ArrayLike<number>, width: number, height: number) {

+ 3 - 3
src/mol-gl/webgl/program.ts

@@ -13,7 +13,7 @@ import { createReferenceCache, ReferenceCache } from 'mol-util/reference-cache';
 import { idFactory } from 'mol-util/id-factory';
 import { RenderableSchema } from '../renderable/schema';
 import { hashFnv32a, hashString } from 'mol-data/util';
-import { isProductionMode } from 'mol-util/debug';
+import { isDebugMode } from 'mol-util/debug';
 import { GLRenderingContext } from './compat';
 import { ShaderCache } from './shader';
 
@@ -134,7 +134,7 @@ export function createProgram(gl: GLRenderingContext, state: WebGLState, extensi
     vertShaderRef.value.attach(program)
     fragShaderRef.value.attach(program)
     gl.linkProgram(program)
-    if (!isProductionMode) {
+    if (isDebugMode) {
         // no-op in FF on Mac, see https://bugzilla.mozilla.org/show_bug.cgi?id=1284425
         // gl.validateProgram(program)
         if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
@@ -145,7 +145,7 @@ export function createProgram(gl: GLRenderingContext, state: WebGLState, extensi
     const locations = getLocations(gl, program, schema)
     const uniformSetters = getUniformSetters(schema)
 
-    if (!isProductionMode) {
+    if (isDebugMode) {
         checkActiveAttributes(gl, program, schema)
         checkActiveUniforms(gl, program, schema)
     }

+ 3 - 3
src/mol-gl/webgl/render-item.ts

@@ -16,7 +16,7 @@ import { ValueCell } from 'mol-util';
 import { ReferenceItem } from 'mol-util/reference-cache';
 import { TextureImage, TextureVolume } from 'mol-gl/renderable/util';
 import { checkFramebufferStatus } from './framebuffer';
-import { isProductionMode } from 'mol-util/debug';
+import { isDebugMode } from 'mol-util/debug';
 
 const getNextRenderItemId = idFactory()
 
@@ -184,7 +184,7 @@ export function createRenderItem<T extends RenderVariantDefines, S extends keyof
                 if (elementsBuffer) elementsBuffer.bind()
                 program.bindAttributes(attributeBuffers)
             }
-            if (!isProductionMode) {
+            if (isDebugMode) {
                 checkFramebufferStatus(ctx.gl)
             }
             if (elementsBuffer) {
@@ -192,7 +192,7 @@ export function createRenderItem<T extends RenderVariantDefines, S extends keyof
             } else {
                 instancedArrays.drawArraysInstanced(glDrawMode, 0, drawCount, instanceCount)
             }
-            if (!isProductionMode) {
+            if (isDebugMode) {
                 try {
                     checkError(ctx.gl)
                 } catch (e) {

+ 2 - 2
src/mol-gl/webgl/shader.ts

@@ -7,7 +7,7 @@
 import { createReferenceCache, ReferenceCache } from 'mol-util/reference-cache';
 import { idFactory } from 'mol-util/id-factory';
 import { GLRenderingContext } from './compat';
-import { isProductionMode } from 'mol-util/debug';
+import { isDebugMode } from 'mol-util/debug';
 
 const getNextShaderId = idFactory()
 
@@ -38,7 +38,7 @@ function createShader(gl: GLRenderingContext, props: ShaderProps): Shader {
     gl.shaderSource(shader, source)
     gl.compileShader(shader)
 
-    if (!isProductionMode && gl.getShaderParameter(shader, gl.COMPILE_STATUS) === false) {
+    if (isDebugMode && gl.getShaderParameter(shader, gl.COMPILE_STATUS) === false) {
         console.warn(`'${type}' shader info log '${gl.getShaderInfoLog(shader)}'\n${addLineNumbers(source)}`)
         throw new Error(`Error compiling ${type} shader`)
     }

+ 7 - 1
src/mol-util/debug.ts

@@ -10,4 +10,10 @@
  */
 const isProductionMode = process.env.NODE_ENV === 'production'
 
-export { isProductionMode }
+/**
+ * set to true to enable more comprehensive checks and assertions,
+ * moslty used in `mol-gl`
+ */
+const isDebugMode = false
+
+export { isProductionMode, isDebugMode }