diff options
-rw-r--r-- | GLES_common/yagl_gles_texture.c | 13 |
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); } |