From ff190847a14253aff7fda04ef78388bc3430f44f Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 14 Oct 2021 20:46:10 -0700 Subject: [PATCH] ExternalStreamManagerAndroid actually depends on GLES Since ExternalStreamManagerAndroid depends on GLES, move it to the opengl directory. --- filament/backend/CMakeLists.txt | 2 +- .../src/android/ExternalTextureManagerAndroid.h | 11 ++++++++++- .../ExternalStreamManagerAndroid.cpp | 0 .../ExternalStreamManagerAndroid.h | 11 +++++++++++ filament/backend/src/opengl/PlatformEGLAndroid.cpp | 2 +- 5 files changed, 23 insertions(+), 3 deletions(-) rename filament/backend/src/{android => opengl}/ExternalStreamManagerAndroid.cpp (100%) rename filament/backend/src/{android => opengl}/ExternalStreamManagerAndroid.h (88%) diff --git a/filament/backend/CMakeLists.txt b/filament/backend/CMakeLists.txt index ba9070805c..6b503f9aa5 100644 --- a/filament/backend/CMakeLists.txt +++ b/filament/backend/CMakeLists.txt @@ -87,7 +87,7 @@ if (FILAMENT_SUPPORTS_OPENGL AND NOT FILAMENT_USE_EXTERNAL_GLES3 AND NOT FILAMEN list(APPEND SRCS src/VirtualMachineEnv.cpp) endif () if (ANDROID) - list(APPEND SRCS src/android/ExternalStreamManagerAndroid.cpp) + list(APPEND SRCS src/opengl/ExternalStreamManagerAndroid.cpp) list(APPEND SRCS src/android/ExternalTextureManagerAndroid.cpp) list(APPEND SRCS src/opengl/PlatformEGLAndroid.cpp) elseif (IOS) diff --git a/filament/backend/src/android/ExternalTextureManagerAndroid.h b/filament/backend/src/android/ExternalTextureManagerAndroid.h index faa04b9efb..69d9ffb56a 100644 --- a/filament/backend/src/android/ExternalTextureManagerAndroid.h +++ b/filament/backend/src/android/ExternalTextureManagerAndroid.h @@ -31,6 +31,15 @@ namespace filament { +/* + * ExternalTextureManagerAndroid::ExternalTexture is basically a wrapper for AHardwareBuffer. + * + * This class doesn't rely on GL or EGL, and could be used for other Android platform if needed + * (e.g. Vulkan). + * + * ExternalTextureManagerAndroid handle allocation/destruction using either Java or the NDK, + * whichever is available. + */ class ExternalTextureManagerAndroid { public: @@ -47,7 +56,7 @@ public: // not quite sure on which thread this is going to be called ~ExternalTextureManagerAndroid() noexcept; - // called on gl thread + // called on backend thread backend::Platform::ExternalTexture* create() noexcept; // called on app thread diff --git a/filament/backend/src/android/ExternalStreamManagerAndroid.cpp b/filament/backend/src/opengl/ExternalStreamManagerAndroid.cpp similarity index 100% rename from filament/backend/src/android/ExternalStreamManagerAndroid.cpp rename to filament/backend/src/opengl/ExternalStreamManagerAndroid.cpp diff --git a/filament/backend/src/android/ExternalStreamManagerAndroid.h b/filament/backend/src/opengl/ExternalStreamManagerAndroid.h similarity index 88% rename from filament/backend/src/android/ExternalStreamManagerAndroid.h rename to filament/backend/src/opengl/ExternalStreamManagerAndroid.h index addf4b7a0f..c38bf2c6e6 100644 --- a/filament/backend/src/android/ExternalStreamManagerAndroid.h +++ b/filament/backend/src/opengl/ExternalStreamManagerAndroid.h @@ -31,6 +31,11 @@ typedef struct ASurfaceTexture ASurfaceTexture; namespace filament { +/* + * ExternalStreamManagerAndroid::Stream is basically a wrapper for SurfaceTexture. + * + * This class DOES DEPEND on having a GLES context, because that's how SurfaceTexture works. + */ class ExternalStreamManagerAndroid { public: using Stream = backend::Platform::Stream; @@ -40,8 +45,14 @@ public: Stream* acquire(jobject surfaceTexture) noexcept; void release(Stream* stream) noexcept; + + // attach Stream to current GLES context void attach(Stream* stream, intptr_t tname) noexcept; + + // detach Stream to current GLES context void detach(Stream* stream) noexcept; + + // must be called on GLES context thread, updates the stream content void updateTexImage(Stream* stream, int64_t* timestamp) noexcept; private: diff --git a/filament/backend/src/opengl/PlatformEGLAndroid.cpp b/filament/backend/src/opengl/PlatformEGLAndroid.cpp index 28ba47a477..cdc4dbb8e1 100644 --- a/filament/backend/src/opengl/PlatformEGLAndroid.cpp +++ b/filament/backend/src/opengl/PlatformEGLAndroid.cpp @@ -20,7 +20,7 @@ #include "OpenGLContext.h" #include "android/ExternalTextureManagerAndroid.h" -#include "android/ExternalStreamManagerAndroid.h" +#include "ExternalStreamManagerAndroid.h" #include "private/backend/VirtualMachineEnv.h" #include