Commit 5a62d1bc by huangdarwin Committed by Marc Baechinger

Effect: glFlush instead of glFinish on tex output

This is much faster (~2-3x) than glFlush. While there's a risk that GL commands
queued to the GL server may not be complete by the time non-GL commands access
the texture, this should be unlikely as we only access the texture from GL.

PiperOrigin-RevId: 527641520
parent e9bc5193
...@@ -360,7 +360,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -360,7 +360,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
outputTexture.fboId, outputTexture.width, outputTexture.height); outputTexture.fboId, outputTexture.width, outputTexture.height);
GlUtil.clearOutputFrame(); GlUtil.clearOutputFrame();
checkNotNull(defaultShaderProgram).drawFrame(inputTexture.texId, presentationTimeUs); checkNotNull(defaultShaderProgram).drawFrame(inputTexture.texId, presentationTimeUs);
GLES20.glFinish();
// glFlush is used here instead of glFinish due to the performance regression that blocking this
// thread would do when calling glFinish. As glFlush is non-blocking, it's possible that non-GL
// access to the output texture may read stale data (ex. from the prior frame). If we see issues
// (ex. flakiness) from glFlush, consider requiring apps reading the texture to call glFinish,
// or reconsider using glFinish here.
GLES20.glFlush();
checkNotNull(textureOutputListener).onTextureRendered(outputTexture, presentationTimeUs); checkNotNull(textureOutputListener).onTextureRendered(outputTexture, presentationTimeUs);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment