[3.0] Modify texture bind for OES_EGL_image_external
[platform/core/uifw/dali-core.git] / dali / internal / render / gl-resources / native-texture.cpp
index 8110880..11a62ce 100644 (file)
@@ -23,6 +23,7 @@
 #include <dali/internal/render/gl-resources/context.h>
 #include <dali/internal/render/gl-resources/texture-units.h>
 #include <dali/internal/render/gl-resources/gl-texture.h>
+#include <dali/devel-api/images/native-image-interface-extension.h>
 
 namespace Dali
 {
@@ -62,8 +63,15 @@ bool NativeTexture::Bind( GLenum target, TextureUnit textureunit )
   {
     // Bind the texture id
     mContext.ActiveTexture( textureunit );
-    mContext.Bind2dTexture(mId);
 
+    int textureTarget = GL_TEXTURE_2D;
+    NativeImageInterface::Extension* extension = mNativeImage->GetExtension();
+    if( extension )
+    {
+      textureTarget = extension->GetEglImageTextureTarget();
+    }
+
+    mContext.BindTexture( textureTarget, mId );
     mNativeImage->PrepareTexture();
   }
 
@@ -92,7 +100,15 @@ bool NativeTexture::CreateGlTexture()
   {
     mContext.GenTextures( 1, &mId );
     mContext.ActiveTexture( TEXTURE_UNIT_UPLOAD );  // bind in unused unit so rebind works the first time
-    mContext.Bind2dTexture( mId );
+
+    int textureTarget = GL_TEXTURE_2D;
+    NativeImageInterface::Extension* extension = mNativeImage->GetExtension();
+    if( extension )
+    {
+      textureTarget = extension->GetEglImageTextureTarget();
+    }
+
+    mContext.BindTexture( textureTarget, mId );
 
     mContext.PixelStorei( GL_UNPACK_ALIGNMENT, 1 ); // We always use tightly packed data