st/mesa: Fix glEGLImageTargetTexture2DOES.

stObj->pt should be set in st_bind_surface, just as in st_TexImage.  On
the other hand, st_TexImage should unreference stObj->pt.  It also needs
to initialize the texture image again as _mesa_clear_texture_object
clears the image.
This commit is contained in:
Chia-I Wu 2010-08-26 02:15:22 +08:00
parent 4f6faf65d1
commit 0f74efdef0
2 changed files with 10 additions and 1 deletions

View File

@ -128,7 +128,8 @@ st_bind_surface(GLcontext *ctx, GLenum target,
_mesa_set_fetch_functions(texImage, 2);
/* FIXME create a non-default sampler view from the pipe_surface? */
pipe_resource_reference(&stImage->pt, ps->texture);
pipe_resource_reference(&stObj->pt, ps->texture);
pipe_resource_reference(&stImage->pt, stObj->pt);
stObj->width0 = ps->width;
stObj->height0 = ps->height;

View File

@ -548,6 +548,14 @@ st_TexImage(GLcontext * ctx,
/* switch to "normal" */
if (stObj->surface_based) {
_mesa_clear_texture_object(ctx, texObj);
pipe_resource_reference(&stObj->pt, NULL);
/* oops, need to init this image again */
_mesa_init_teximage_fields(ctx, target, texImage,
width, height, depth, border, internalFormat);
_mesa_choose_texture_format(ctx, texObj, texImage, target, level,
internalFormat, format, type);
stObj->surface_based = GL_FALSE;
}