oh dear.. lewft and right pixle duplication for interpolation had the

WRONG PIXELS!!! amazing it never crashed! fix fix! (also handle
opengls that doesnt support unpack row length)



SVN revision: 64377
This commit is contained in:
Carsten Haitzler 2011-10-25 09:27:54 +00:00
parent d12a0879d2
commit fb447485e8
1 changed files with 55 additions and 14 deletions

View File

@ -865,20 +865,6 @@ evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im)
im->cache_entry.w, im->cache_entry.h,
fmt, tex->pt->dataformat,
im->image.data);
// |xxx
// |xxx
//
_tex_sub_2d(tex->x - 1, tex->y,
1, im->cache_entry.h,
fmt, tex->pt->dataformat,
im->image.data);
// xxx|
// xxx|
//
_tex_sub_2d(tex->x + im->cache_entry.w, tex->y,
1, im->cache_entry.h,
fmt, tex->pt->dataformat,
im->image.data + (im->cache_entry.w - 1));
// xxx
// xxx
// ---
@ -900,6 +886,61 @@ evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im)
1, 1,
fmt, tex->pt->dataformat,
im->image.data + ((im->cache_entry.h - 1) * im->cache_entry.w) + (im->cache_entry.w - 1));
#ifdef GL_UNPACK_ROW_LENGTH
glPixelStorei(GL_UNPACK_ROW_LENGTH, im->cache_entry.w);
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
// |xxx
// |xxx
//
_tex_sub_2d(tex->x - 1, tex->y,
1, im->cache_entry.h,
fmt, tex->pt->dataformat,
im->image.data);
// xxx|
// xxx|
//
_tex_sub_2d(tex->x + im->cache_entry.w, tex->y,
1, im->cache_entry.h,
fmt, tex->pt->dataformat,
im->image.data + (im->cache_entry.w - 1));
#else
{
DATA32 *tpix, *ps, *pd;
int i;
tpix = alloca(im->cache_entry.h * sizeof(DATA32));
pd = tpix;
ps = im->image.data;
for (i = 0; i < im->cache_entry.h; i++)
{
*pd = *ps;
pd++;
ps += im->cache_entry.w;
}
// |xxx
// |xxx
//
_tex_sub_2d(tex->x - 1, tex->y,
1, im->cache_entry.h,
fmt, tex->pt->dataformat,
tpix);
pd = tpix;
ps = im->image.data + (im->cache_entry.w - 1);
for (i = 0; i < im->cache_entry.h; i++)
{
*pd = *ps;
pd++;
ps += im->cache_entry.w;
}
// xxx|
// xxx|
//
_tex_sub_2d(tex->x + im->cache_entry.w, tex->y,
1, im->cache_entry.h,
fmt, tex->pt->dataformat,
tpix);
}
#endif
if (tex->pt->texture != tex->gc->pipe[0].shader.cur_tex)
{
glBindTexture(GL_TEXTURE_2D, tex->gc->pipe[0].shader.cur_tex);