From f0fcad16a9959b66808b235e08c330af46c3fd2d Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Thu, 25 Nov 2021 19:11:18 +0000 Subject: [PATCH] GL: Remove redundant use() call. This is already called in GlUtil.Program(). Tested by confirming that the demo-gl target still runs as expected. Refactoring change only. No intended functional changes. PiperOrigin-RevId: 412308564 --- .../java/androidx/media3/common/util/GlUtil.java | 15 ++++++++++++--- .../video/VideoDecoderGLSurfaceView.java | 1 - .../video/spherical/ProjectionRenderer.java | 4 ---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/util/GlUtil.java b/libraries/common/src/main/java/androidx/media3/common/util/GlUtil.java index 09aa393963..9cf31519c4 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/GlUtil.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/GlUtil.java @@ -42,7 +42,7 @@ import java.util.HashMap; import java.util.Map; import javax.microedition.khronos.egl.EGL10; -/** GL utilities. */ +/** OpenGL ES 2.0 utilities. */ @UnstableApi public final class GlUtil { @@ -86,7 +86,10 @@ public final class GlUtil { } /** - * Compiles a GL shader program from vertex and fragment shader GLSL GLES20 code. + * Creates a GL shader program from vertex and fragment shader GLSL GLES20 code. + * + *

This involves slow steps, like compiling, linking, and switching the GL program, so do not + * call this in fast rendering loops. * * @param vertexShaderGlsl The vertex shader program. * @param fragmentShaderGlsl The fragment shader program. @@ -129,8 +132,14 @@ public final class GlUtil { checkGlError(); } - /** Uses the program. */ + /** + * Uses the program. + * + *

Call this in the rendering loop to switch between different programs. + */ public void use() { + // TODO(http://b/205002913): When multiple GL programs are supported by Transformer, make sure + // to call use() to switch between programs. GLES20.glUseProgram(programId); checkGlError(); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoDecoderGLSurfaceView.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoDecoderGLSurfaceView.java index 903c2b7478..a4a29ec46c 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoDecoderGLSurfaceView.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/VideoDecoderGLSurfaceView.java @@ -168,7 +168,6 @@ public final class VideoDecoderGLSurfaceView extends GLSurfaceView @Override public void onSurfaceCreated(GL10 unused, EGLConfig config) { program = new GlUtil.Program(VERTEX_SHADER, FRAGMENT_SHADER); - program.use(); int posLocation = program.getAttributeArrayLocationAndEnable("in_pos"); GLES20.glVertexAttribPointer( posLocation, diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/spherical/ProjectionRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/spherical/ProjectionRenderer.java index 03a5283ff6..b59479c264 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/spherical/ProjectionRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/spherical/ProjectionRenderer.java @@ -15,7 +15,6 @@ */ package androidx.media3.exoplayer.video.spherical; -import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.GlUtil.checkGlError; import android.opengl.GLES11Ext; @@ -139,9 +138,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } // Configure shader. - checkNotNull(program).use(); - checkGlError(); - float[] texMatrix; if (stereoMode == C.STEREO_MODE_TOP_BOTTOM) { texMatrix = rightEye ? TEX_MATRIX_BOTTOM : TEX_MATRIX_TOP;