Commit ca4928cf by tofunmi Committed by Marc Baechinger

Rollback of https://github.com/google/ExoPlayer/commit/5a62d1bc25e921df363eb741b82b00a7c87dc94f

*** Original commit ***

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.

If we see stability issues in the future, we can reconsider and move this back
to glFinish (or GL synchronization mechanisms like fences, which are more
complex)

***

PiperOrigin-RevId: 527848094
parent 69be61ea
......@@ -360,13 +360,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
outputTexture.fboId, outputTexture.width, outputTexture.height);
GlUtil.clearOutputFrame();
checkNotNull(defaultShaderProgram).drawFrame(inputTexture.texId, presentationTimeUs);
// 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();
GLES20.glFinish();
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