Skip to content
Snippets Groups Projects
Commit d4bd167d authored by Alexander Rose's avatar Alexander Rose
Browse files

don't use fences for now, too slow

parent bc81523e
No related branches found
No related tags found
No related merge requests found
...@@ -79,18 +79,23 @@ let SentWebglSyncObjectNotSupportedInWebglMessage = false ...@@ -79,18 +79,23 @@ let SentWebglSyncObjectNotSupportedInWebglMessage = false
function waitForGpuCommandsComplete(gl: GLRenderingContext): Promise<void> { function waitForGpuCommandsComplete(gl: GLRenderingContext): Promise<void> {
return new Promise(resolve => { return new Promise(resolve => {
if (isWebGL2(gl)) { if (isWebGL2(gl)) {
// TODO seems quite slow
fence(gl, resolve) fence(gl, resolve)
} else { } else {
if (!SentWebglSyncObjectNotSupportedInWebglMessage) { if (!SentWebglSyncObjectNotSupportedInWebglMessage) {
console.info('Sync object not supported in WebGL') console.info('Sync object not supported in WebGL')
SentWebglSyncObjectNotSupportedInWebglMessage = true SentWebglSyncObjectNotSupportedInWebglMessage = true
} }
gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, tmpPixel) waitForGpuCommandsCompleteSync(gl)
resolve() resolve()
} }
}) })
} }
function waitForGpuCommandsCompleteSync(gl: GLRenderingContext): void {
gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, tmpPixel)
}
export function createImageData(buffer: ArrayLike<number>, width: number, height: number) { export function createImageData(buffer: ArrayLike<number>, width: number, height: number) {
const w = width * 4 const w = width * 4
const h = height const h = height
...@@ -147,6 +152,7 @@ export interface WebGLContext { ...@@ -147,6 +152,7 @@ export interface WebGLContext {
readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => void readPixels: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => void
readPixelsAsync: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => Promise<void> readPixelsAsync: (x: number, y: number, width: number, height: number, buffer: Uint8Array) => Promise<void>
waitForGpuCommandsComplete: () => Promise<void> waitForGpuCommandsComplete: () => Promise<void>
waitForGpuCommandsCompleteSync: () => void
destroy: () => void destroy: () => void
} }
...@@ -279,6 +285,7 @@ export function createContext(gl: GLRenderingContext): WebGLContext { ...@@ -279,6 +285,7 @@ export function createContext(gl: GLRenderingContext): WebGLContext {
}, },
readPixelsAsync, readPixelsAsync,
waitForGpuCommandsComplete: () => waitForGpuCommandsComplete(gl), waitForGpuCommandsComplete: () => waitForGpuCommandsComplete(gl),
waitForGpuCommandsCompleteSync: () => waitForGpuCommandsCompleteSync(gl),
destroy: () => { destroy: () => {
unbindResources(gl) unbindResources(gl)
......
...@@ -110,7 +110,7 @@ async function GaussianDensityTexture2d(ctx: RuntimeContext, webgl: WebGLContext ...@@ -110,7 +110,7 @@ async function GaussianDensityTexture2d(ctx: RuntimeContext, webgl: WebGLContext
render(texture) render(texture)
if (ctx.shouldUpdate) await ctx.update({ message: 'gpu gaussian density calculation' }) if (ctx.shouldUpdate) await ctx.update({ message: 'gpu gaussian density calculation' })
await webgl.waitForGpuCommandsComplete() await webgl.waitForGpuCommandsCompleteSync()
return { texture, scale: Vec3.inverse(Vec3.zero(), delta), bbox: expandedBox, dim } return { texture, scale: Vec3.inverse(Vec3.zero(), delta), bbox: expandedBox, dim }
} }
...@@ -157,7 +157,7 @@ async function GaussianDensityTexture3d(ctx: RuntimeContext, webgl: WebGLContext ...@@ -157,7 +157,7 @@ async function GaussianDensityTexture3d(ctx: RuntimeContext, webgl: WebGLContext
render(texture) render(texture)
await ctx.update({ message: 'gpu gaussian density calculation' }); await ctx.update({ message: 'gpu gaussian density calculation' });
await webgl.waitForGpuCommandsComplete() await webgl.waitForGpuCommandsCompleteSync()
return { texture, scale: Vec3.inverse(Vec3.zero(), delta), bbox: expandedBox, dim } return { texture, scale: Vec3.inverse(Vec3.zero(), delta), bbox: expandedBox, dim }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment