From 949e9cbd962f4ab0ef10d207b62a68031b0fb0f8 Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Fri, 16 Jun 2023 22:52:05 +0100 Subject: [PATCH] GL: Rename GL methods. To more accurately describe what they do, especially as Compositor will starts to use more contexts or threads, and it's important to know what needs to be reset/recreated/focused before what methods. PiperOrigin-RevId: 541010135 --- .../androidx/media3/common/util/GlUtil.java | 18 ++++++++++++------ .../media3/effect/ContrastPixelTest.java | 2 +- .../androidx/media3/effect/CropPixelTest.java | 2 +- .../effect/DefaultShaderProgramPixelTest.java | 2 +- ...oFrameProcessorVideoFrameRenderingTest.java | 2 +- .../media3/effect/HslAdjustmentPixelTest.java | 2 +- .../effect/OverlayShaderProgramPixelTest.java | 2 +- .../media3/effect/PresentationPixelTest.java | 2 +- .../media3/effect/RgbAdjustmentPixelTest.java | 2 +- .../media3/effect/RgbFilterPixelTest.java | 2 +- .../media3/effect/SingleColorLutPixelTest.java | 2 +- .../media3/effect/BaseGlShaderProgram.java | 2 +- .../effect/DefaultVideoFrameProcessor.java | 2 +- .../effect/FinalShaderProgramWrapper.java | 6 +++--- .../media3/transformer/AndroidTestUtil.java | 2 +- 15 files changed, 28 insertions(+), 22 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 32417f926a..1bb19178fa 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 @@ -211,7 +211,7 @@ public final class GlUtil { if (Util.areEqual(EGL14.eglGetCurrentContext(), EGL14.EGL_NO_CONTEXT)) { // Create a placeholder context and make it current to allow calling GLES20.glGetString(). try { - EGLDisplay eglDisplay = createEglDisplay(); + EGLDisplay eglDisplay = getDefaultEglDisplay(); EGLContext eglContext = createEglContext(eglDisplay); createFocusedPlaceholderEglSurface(eglContext, eglDisplay); glExtensions = GLES20.glGetString(GLES20.GL_EXTENSIONS); @@ -235,8 +235,8 @@ public final class GlUtil { /** Returns an initialized default {@link EGLDisplay}. */ @RequiresApi(17) - public static EGLDisplay createEglDisplay() throws GlException { - return Api17.createEglDisplay(); + public static EGLDisplay getDefaultEglDisplay() throws GlException { + return Api17.getDefaultEglDisplay(); } /** @@ -424,8 +424,14 @@ public final class GlUtil { } } - /** Fills the pixels in the current output render target with (r=0, g=0, b=0, a=0). */ - public static void clearOutputFrame() throws GlException { + /** + * Fills the pixels in the current output render target buffers with (r=0, g=0, b=0, a=0). + * + *

Buffers can be focused using {@link #focusEglSurface} and {@link + * #focusFramebufferUsingCurrentContext}, {@link #focusFramebuffer}, and {@link + * #createFocusedPlaceholderEglSurface}. + */ + public static void clearFocusedBuffers() throws GlException { GLES20.glClearColor(/* red= */ 0, /* green= */ 0, /* blue= */ 0, /* alpha= */ 0); GLES20.glClearDepthf(1.0f); GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); @@ -672,7 +678,7 @@ public final class GlUtil { private Api17() {} @DoNotInline - public static EGLDisplay createEglDisplay() throws GlException { + public static EGLDisplay getDefaultEglDisplay() throws GlException { EGLDisplay eglDisplay = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); checkGlException(!eglDisplay.equals(EGL14.EGL_NO_DISPLAY), "No EGL display."); checkGlException( diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java index 685e9f5c91..c363ba46cf 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/ContrastPixelTest.java @@ -78,7 +78,7 @@ public class ContrastPixelTest { @Before public void createGlObjects() throws Exception { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java index 01ef711fb0..90bb08180c 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/CropPixelTest.java @@ -71,7 +71,7 @@ public final class CropPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java index 4f6c00cc11..722975bd9f 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultShaderProgramPixelTest.java @@ -71,7 +71,7 @@ public final class DefaultShaderProgramPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); EGLSurface placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorVideoFrameRenderingTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorVideoFrameRenderingTest.java index 146b1a4f91..fdb8d3a426 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorVideoFrameRenderingTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/DefaultVideoFrameProcessorVideoFrameRenderingTest.java @@ -387,7 +387,7 @@ public final class DefaultVideoFrameProcessorVideoFrameRenderingTest { int fboId = GlUtil.createFboForTexture(texId); blankTexture = new GlTextureInfo(texId, fboId, /* rboId= */ C.INDEX_UNSET, WIDTH, HEIGHT); GlUtil.focusFramebufferUsingCurrentContext(fboId, WIDTH, HEIGHT); - GlUtil.clearOutputFrame(); + GlUtil.clearFocusedBuffers(); } catch (GlUtil.GlException e) { throw new VideoFrameProcessingException(e); } diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java index 1451cef3fc..914813ee6d 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/HslAdjustmentPixelTest.java @@ -83,7 +83,7 @@ public final class HslAdjustmentPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java index 77dd4a7131..43a4a68990 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java @@ -90,7 +90,7 @@ public class OverlayShaderProgramPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java index 71d8bc5f39..55418e8249 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/PresentationPixelTest.java @@ -80,7 +80,7 @@ public final class PresentationPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java index aaf4762038..2bd5a55242 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbAdjustmentPixelTest.java @@ -77,7 +77,7 @@ public final class RgbAdjustmentPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java index 86a5efde78..a44ddde930 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/RgbFilterPixelTest.java @@ -72,7 +72,7 @@ public final class RgbFilterPixelTest { @Before public void createGlObjects() throws IOException, GlUtil.GlException { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java index f6261d8cfb..439d2a4616 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/SingleColorLutPixelTest.java @@ -77,7 +77,7 @@ public class SingleColorLutPixelTest { @Before public void createGlObjects() throws Exception { - eglDisplay = GlUtil.createEglDisplay(); + eglDisplay = GlUtil.getDefaultEglDisplay(); eglContext = GlUtil.createEglContext(eglDisplay); placeholderEglSurface = GlUtil.createFocusedPlaceholderEglSurface(eglContext, eglDisplay); diff --git a/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java index 9bb384c36b..35e2193e4a 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/BaseGlShaderProgram.java @@ -140,7 +140,7 @@ public abstract class BaseGlShaderProgram implements GlShaderProgram { // Copy frame to fbo. GlUtil.focusFramebufferUsingCurrentContext( outputTexture.getFboId(), outputTexture.getWidth(), outputTexture.getHeight()); - GlUtil.clearOutputFrame(); + GlUtil.clearFocusedBuffers(); drawFrame(inputTexture.getTexId(), presentationTimeUs); inputListener.onInputFrameProcessed(inputTexture); outputListener.onOutputFrameAvailable(outputTexture, presentationTimeUs); diff --git a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java index e618243a4b..e0bd45a3fb 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java @@ -607,7 +607,7 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor { throws GlUtil.GlException, VideoFrameProcessingException { checkState(Thread.currentThread().getName().equals(THREAD_NAME)); - EGLDisplay eglDisplay = GlUtil.createEglDisplay(); + EGLDisplay eglDisplay = GlUtil.getDefaultEglDisplay(); int[] configAttributes = ColorInfo.isTransferHdr(outputColorInfo) ? GlUtil.EGL_CONFIG_ATTRIBUTES_RGBA_1010102 diff --git a/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java b/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java index 512b8e7d97..fa1994bf1c 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/FinalShaderProgramWrapper.java @@ -364,7 +364,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; outputEglSurface, outputSurfaceInfo.width, outputSurfaceInfo.height); - GlUtil.clearOutputFrame(); + GlUtil.clearFocusedBuffers(); defaultShaderProgram.drawFrame(inputTexture.getTexId(), presentationTimeUs); EGLExt.eglPresentationTimeANDROID( @@ -383,7 +383,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; outputTextureTimestamps.add(presentationTimeUs); GlUtil.focusFramebufferUsingCurrentContext( outputTexture.getFboId(), outputTexture.getWidth(), outputTexture.getHeight()); - GlUtil.clearOutputFrame(); + GlUtil.clearFocusedBuffers(); checkNotNull(defaultShaderProgram).drawFrame(inputTexture.getTexId(), presentationTimeUs); // TODO(b/262694346): If Compositor's VFPs all use the same context, media3 should be able to // avoid calling glFinish, and require the onTextureRendered listener to decide whether to @@ -529,7 +529,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; checkNotNull(debugSurfaceViewWrapper) .maybeRenderToSurfaceView( () -> { - GlUtil.clearOutputFrame(); + GlUtil.clearFocusedBuffers(); if (enableColorTransfers) { @C.ColorTransfer int configuredColorTransfer = defaultShaderProgram.getOutputColorTransfer(); diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java index e2e4dc651c..400604c120 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/AndroidTestUtil.java @@ -559,7 +559,7 @@ public final class AndroidTestUtil { * {@link EGLContext}. */ public static EGLContext createOpenGlObjects() throws GlUtil.GlException { - EGLDisplay eglDisplay = GlUtil.createEglDisplay(); + EGLDisplay eglDisplay = GlUtil.getDefaultEglDisplay(); int[] configAttributes = GlUtil.EGL_CONFIG_ATTRIBUTES_RGBA_8888; GlObjectsProvider glObjectsProvider = new DefaultGlObjectsProvider(/* sharedEglContext= */ null);