@@ -94,7 +94,8 @@ static int32_t createProcessUniqueId() {
9494 return android_atomic_inc (&globalCounter);
9595}
9696
97- SurfaceTexture::SurfaceTexture (GLuint tex, bool allowSynchronousMode) :
97+ SurfaceTexture::SurfaceTexture (GLuint tex, bool allowSynchronousMode,
98+ GLenum texTarget) :
9899 mDefaultWidth (1 ),
99100 mDefaultHeight (1 ),
100101 mPixelFormat (PIXEL_FORMAT_RGBA_8888),
@@ -110,7 +111,8 @@ SurfaceTexture::SurfaceTexture(GLuint tex, bool allowSynchronousMode) :
110111 mSynchronousMode (false ),
111112 mAllowSynchronousMode (allowSynchronousMode),
112113 mConnectedApi (NO_CONNECTED_API),
113- mAbandoned (false ) {
114+ mAbandoned (false ),
115+ mTexTarget (texTarget) {
114116 // Choose a name using the PID and a process-unique ID.
115117 mName = String8::format (" unnamed-%d-%d" , getpid (), createProcessUniqueId ());
116118
@@ -698,9 +700,8 @@ status_t SurfaceTexture::updateTexImage() {
698700 ST_LOGW (" updateTexImage: clearing GL error: %#04x" , error);
699701 }
700702
701- glBindTexture (GL_TEXTURE_EXTERNAL_OES, mTexName );
702- glEGLImageTargetTexture2DOES (GL_TEXTURE_EXTERNAL_OES,
703- (GLeglImageOES)image);
703+ glBindTexture (mTexTarget , mTexName );
704+ glEGLImageTargetTexture2DOES (mTexTarget , (GLeglImageOES)image);
704705
705706 bool failed = false ;
706707 while ((error = glGetError ()) != GL_NO_ERROR) {
@@ -735,7 +736,7 @@ status_t SurfaceTexture::updateTexImage() {
735736 mDequeueCondition .signal ();
736737 } else {
737738 // We always bind the texture even if we don't update its contents.
738- glBindTexture (GL_TEXTURE_EXTERNAL_OES , mTexName );
739+ glBindTexture (mTexTarget , mTexName );
739740 }
740741
741742 return OK;
@@ -761,7 +762,7 @@ bool SurfaceTexture::isExternalFormat(uint32_t format)
761762}
762763
763764GLenum SurfaceTexture::getCurrentTextureTarget () const {
764- return GL_TEXTURE_EXTERNAL_OES ;
765+ return mTexTarget ;
765766}
766767
767768void SurfaceTexture::getTransformMatrix (float mtx[16 ]) {
0 commit comments