From 2c13c8fe6e22f2f62d3696de7b0fb04aaeee8b39 Mon Sep 17 00:00:00 2001 From: Philip Rideout Date: Wed, 13 Nov 2019 13:01:35 -0800 Subject: [PATCH] Stream API: rename createAcquiredImage => transformAcquiredImage. --- .../backend/include/private/backend/OpenGLPlatform.h | 10 ++++------ filament/backend/src/opengl/OpenGLDriver.cpp | 2 +- filament/backend/src/opengl/PlatformEGL.cpp | 5 ++++- filament/backend/src/opengl/PlatformEGL.h | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/filament/backend/include/private/backend/OpenGLPlatform.h b/filament/backend/include/private/backend/OpenGLPlatform.h index f59dbdf1e2..d3b48b9eb3 100644 --- a/filament/backend/include/private/backend/OpenGLPlatform.h +++ b/filament/backend/include/private/backend/OpenGLPlatform.h @@ -91,6 +91,10 @@ public: virtual void destroyExternalTextureStorage(ExternalTexture* ets) noexcept = 0; + // The method allows platforms to convert a user-supplied external image object into a new type + // (e.g. HardwareBuffer => EGLImage). It makes sense for the default implementation to do nothing. + virtual AcquiredImage transformAcquiredImage(AcquiredImage source) noexcept { return source; } + // called to bind the platform-specific externalImage to a texture // texture points to a OpenGLDriver::GLTexture virtual bool setExternalImage(void* externalImage, void* texture) noexcept { @@ -108,12 +112,6 @@ public: // called once before a SAMPLER_EXTERNAL texture is destroyed. virtual void destroyExternalImage(void* texture) noexcept {} - - // allows platforms to convert the given image object into a new type (e.g. HardwareBuffer => EGLImage) - // by default, performs no conversion. - virtual AcquiredImage createAcquiredImage(void* hwbuffer, backend::StreamCallback cb, void* userData) noexcept { - return {hwbuffer, cb, userData}; - } }; } // namespace backend diff --git a/filament/backend/src/opengl/OpenGLDriver.cpp b/filament/backend/src/opengl/OpenGLDriver.cpp index e72d4a9788..ceffebd27d 100644 --- a/filament/backend/src/opengl/OpenGLDriver.cpp +++ b/filament/backend/src/opengl/OpenGLDriver.cpp @@ -1209,7 +1209,7 @@ void OpenGLDriver::setAcquiredImage(Handle sh, void* hwbuffer, scheduleRelease(std::move(glstream->user_thread.pending)); slog.w << "Acquired image is set more than once per frame." << io::endl; } - glstream->user_thread.pending = mPlatform.createAcquiredImage(hwbuffer, cb, userData); + glstream->user_thread.pending = mPlatform.transformAcquiredImage({hwbuffer, cb, userData}); } void OpenGLDriver::updateStreams(DriverApi* driver) { diff --git a/filament/backend/src/opengl/PlatformEGL.cpp b/filament/backend/src/opengl/PlatformEGL.cpp index f870ee0543..377e0c8ff8 100644 --- a/filament/backend/src/opengl/PlatformEGL.cpp +++ b/filament/backend/src/opengl/PlatformEGL.cpp @@ -542,7 +542,10 @@ void PlatformEGL::destroyExternalImage(void* texture) noexcept { glDeleteTextures(1, &t->gl.id); } -backend::AcquiredImage PlatformEGL::createAcquiredImage(void* hwbuffer, backend::StreamCallback userCallback, void* userData) noexcept { +backend::AcquiredImage PlatformEGL::transformAcquiredImage(backend::AcquiredImage source) noexcept { + void* const hwbuffer = source.image; + const backend::StreamCallback userCallback = source.callback; + void* const userData = source.userData; // Convert the AHardwareBuffer to EGLImage. EGLClientBuffer clientBuffer = eglGetNativeClientBufferANDROID((const AHardwareBuffer*) hwbuffer); diff --git a/filament/backend/src/opengl/PlatformEGL.h b/filament/backend/src/opengl/PlatformEGL.h index 19db1f10ad..e9c9ed6edb 100644 --- a/filament/backend/src/opengl/PlatformEGL.h +++ b/filament/backend/src/opengl/PlatformEGL.h @@ -69,7 +69,7 @@ public: void createExternalImageTexture(void* texture) noexcept final; void destroyExternalImage(void* texture) noexcept final; - backend::AcquiredImage createAcquiredImage(void* hwbuffer, backend::StreamCallback cb, void* userData) noexcept final; + backend::AcquiredImage transformAcquiredImage(backend::AcquiredImage source) noexcept final; int getOSVersion() const noexcept final;