Commit 67e359c8 by huangdarwin Committed by Rohit Singh

GL: Delete frame buffers after use.

Before, we used to never call glDeleteFramebuffers, which could
in theory lead to leaks in the number of frame buffers
available and make releasing the GL context more expensive.

PiperOrigin-RevId: 514387847
parent db606428
......@@ -644,6 +644,14 @@ public final class GlUtil {
return fboId[0];
}
/** Deletes a framebuffer. */
public static void deleteFbo(int fboId) throws GlException {
int[] fboIdArray = new int[1];
fboIdArray[0] = fboId;
GLES20.glDeleteFramebuffers(/* n= */ 1, fboIdArray, /* offset= */ 0);
checkGlError();
}
/**
* Throws a {@link GlException} with the given message if {@code expression} evaluates to {@code
* false}.
......
......@@ -205,6 +205,7 @@ import java.util.concurrent.Executor;
while (allTextures.hasNext()) {
TextureInfo textureInfo = allTextures.next();
GlUtil.deleteTexture(textureInfo.texId);
GlUtil.deleteFbo(textureInfo.fboId);
}
freeOutputTextures.clear();
inUseOutputTextures.clear();
......
......@@ -154,6 +154,7 @@ public abstract class SingleFrameGlShaderProgram implements GlShaderProgram {
|| outputSize.getHeight() != outputTexture.height) {
if (outputTexture != null) {
GlUtil.deleteTexture(outputTexture.texId);
GlUtil.deleteFbo(outputTexture.fboId);
}
int outputTexId = GlUtil.createTexture(outputSize.getWidth(), outputSize.getHeight(), useHdr);
int outputFboId = GlUtil.createFboForTexture(outputTexId);
......@@ -187,6 +188,7 @@ public abstract class SingleFrameGlShaderProgram implements GlShaderProgram {
if (outputTexture != null) {
try {
GlUtil.deleteTexture(outputTexture.texId);
GlUtil.deleteFbo(outputTexture.fboId);
} catch (GlUtil.GlException e) {
throw new VideoFrameProcessingException(e);
}
......
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