summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GLES_common/yagl_gles_texture.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/GLES_common/yagl_gles_texture.c b/GLES_common/yagl_gles_texture.c
index ff5f608..19382f4 100644
--- a/GLES_common/yagl_gles_texture.c
+++ b/GLES_common/yagl_gles_texture.c
@@ -248,8 +248,18 @@ void yagl_gles_texture_set_image(struct yagl_gles_texture *texture,
texture->binding = NULL;
}
+ /*
+ * FIXME We still need to update the host binding when using external
+ * textures even if that same image is already set. E.g. consider the bellow
+ * scenario:
+ * glBindTexture(GL_TEXTURE_EXTERNAL_OES, tex);
+ * glBindTexture(GL_TEXTURE_2D, 0);
+ * glEGLImageTargetTexture2DOES(GL_TEXTURE_EXTERNAL_OES, img);
+ * External textures are handled as GL_TEXTURE_2D thus the corresponding
+ * host binding will be zero in this case.
+ */
if (texture->image == image) {
- return;
+ goto bind;
}
yagl_gles_image_acquire(image);
@@ -263,6 +273,7 @@ void yagl_gles_texture_set_image(struct yagl_gles_texture *texture,
texture->global_name = image->tex_global_name;
texture->image = image;
+bind:
yagl_host_glBindTexture(texture->target == GL_TEXTURE_EXTERNAL_OES ? GL_TEXTURE_2D : texture->target,
texture->global_name);
}