UNPKG

@tensorflow/tfjs-core

Version:

Hardware-accelerated JavaScript library for machine intelligence

99 lines (98 loc) 5.23 kB
/** * @license * Copyright 2017 Google Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */ /// <reference types="webgl2" /> import { PixelData, TypedArray } from '../../types'; import { WebGL1DisjointQueryTimerExtension, WebGL2DisjointQueryTimerExtension } from './webgl_types'; export interface FenceContext { query: WebGLQuery | WebGLSync; isFencePassed(): boolean; } export declare class GPGPUContext { gl: WebGLRenderingContext; textureFloatExtension: {}; textureHalfFloatExtension: {}; colorBufferFloatExtension: {}; colorBufferHalfFloatExtension: {}; disjointQueryTimerExtension: WebGL2DisjointQueryTimerExtension | WebGL1DisjointQueryTimerExtension; vertexBuffer: WebGLBuffer; indexBuffer: WebGLBuffer; framebuffer: WebGLFramebuffer; outputTexture: WebGLTexture | null; program: WebGLProgram | null; private disposed; private disjoint; private textureConfig; constructor(gl?: WebGLRenderingContext); private readonly debug; dispose(): void; createFloat32MatrixTexture(rows: number, columns: number): WebGLTexture; createFloat16MatrixTexture(rows: number, columns: number): WebGLTexture; createUnsignedBytesMatrixTexture(rows: number, columns: number): WebGLTexture; uploadPixelDataToTexture(texture: WebGLTexture, pixels: PixelData | ImageData | HTMLImageElement | HTMLCanvasElement): void; uploadDenseMatrixToTexture(texture: WebGLTexture, width: number, height: number, data: TypedArray): void; createFloat16PackedMatrixTexture(rows: number, columns: number): WebGLTexture; createPackedMatrixTexture(rows: number, columns: number): WebGLTexture; deleteMatrixTexture(texture: WebGLTexture): void; downloadByteEncodedFloatMatrixFromOutputTexture(texture: WebGLTexture, rows: number, columns: number): Float32Array; downloadPackedMatrixFromBuffer(buffer: WebGLBuffer, batch: number, rows: number, columns: number, physicalRows: number, physicalCols: number): Float32Array; downloadFloat32MatrixFromBuffer(buffer: WebGLBuffer, size: number): Float32Array; createBufferFromTexture(texture: WebGLTexture, rows: number, columns: number): WebGLBuffer; createAndWaitForFence(): Promise<void>; private createFence; downloadMatrixFromPackedTexture(texture: WebGLTexture, physicalRows: number, physicalCols: number): Float32Array; private vertexAttrsAreBound; createProgram(fragmentShaderSource: string): WebGLProgram; deleteProgram(program: WebGLProgram): void; setProgram(program: WebGLProgram | null): void; getUniformLocation(program: WebGLProgram, uniformName: string, shouldThrow?: boolean): WebGLUniformLocation; getAttributeLocation(program: WebGLProgram, attribute: string): number; getUniformLocationNoThrow(program: WebGLProgram, uniformName: string): WebGLUniformLocation; setInputMatrixTexture(inputMatrixTexture: WebGLTexture, uniformLocation: WebGLUniformLocation, textureUnit: number): void; setOutputMatrixTexture(outputMatrixTexture: WebGLTexture, rows: number, columns: number): void; setOutputPackedMatrixTexture(outputPackedMatrixTexture: WebGLTexture, rows: number, columns: number): void; setOutputMatrixWriteRegion(startRow: number, numRows: number, startColumn: number, numColumns: number): void; setOutputPackedMatrixWriteRegion(startRow: number, numRows: number, startColumn: number, numColumns: number): void; debugValidate(): void; executeProgram(): void; blockUntilAllProgramsCompleted(): void; private getQueryTimerExtension; private getQueryTimerExtensionWebGL2; private getQueryTimerExtensionWebGL1; beginQuery(): WebGLQuery; endQuery(): void; waitForQueryAndGetTime(query: WebGLQuery): Promise<number>; private getQueryTime; private isQueryAvailable; pollFence(fenceContext: FenceContext): Promise<void>; private itemsToPoll; pollItems(): void; private addItemToPoll; private bindTextureToFrameBuffer; private unbindTextureToFrameBuffer; private downloadMatrixDriver; private setOutputMatrixTextureDriver; private setOutputMatrixWriteRegionDriver; private throwIfDisposed; private throwIfNoProgram; } /** * Finds the index of the last true element using linear search. * Note: We can't do binary search because Chrome expects us to explicitly * test all fences before download: * https://github.com/tensorflow/tfjs/issues/1145 */ export declare function linearSearchLastTrue(arr: Array<() => boolean>): number;