* clutter/cogl/gl/cogl-texture.c (cogl_texture_rectangle): Fixed

the test for whether to use hardware tiling. Previously it assumed
	that texture coordinates are in increasing order but this is not
	the case since bug 1057 was fixed. The texture coordinates are now
	sorted later. It also allowed negative coordinates which doesn't
	make sense if the texture has waste.
This commit is contained in:
Neil Roberts 2008-11-26 16:35:25 +00:00
parent 50b6ecc56d
commit f4465ccb05

View File

@ -2194,27 +2194,18 @@ cogl_texture_rectangle (CoglHandle handle,
if (tx1 == tx2 || ty1 == ty2) if (tx1 == tx2 || ty1 == ty2)
return; return;
/* Pick tiling mode according to hw support */ /* If there is only one GL texture and either the texture is NPOT
if (cogl_features_available (COGL_FEATURE_TEXTURE_NPOT) (no waste) or all of the coordinates are in the range [0,1] then
&& tex->slice_gl_handles->len == 1) we can use hardware tiling */
{ if (tex->slice_gl_handles->len == 1
_cogl_texture_quad_hw (tex, x1,y1, x2,y2, tx1,ty1, tx2,ty2); && (cogl_features_available (COGL_FEATURE_TEXTURE_NPOT)
} || (tx1 >= 0 && tx1 <= COGL_FIXED_1
&& tx2 >= 0 && tx2 <= COGL_FIXED_1
&& ty1 >= 0 && ty1 <= COGL_FIXED_1
&& ty2 >= 0 && ty2 <= COGL_FIXED_1)))
_cogl_texture_quad_hw (tex, x1,y1, x2,y2, tx1,ty1, tx2,ty2);
else else
{ _cogl_texture_quad_sw (tex, x1,y1, x2,y2, tx1,ty1, tx2,ty2);
if (tex->slice_gl_handles->len == 1
&& tx1 >= -COGL_FIXED_1
&& tx2 <= COGL_FIXED_1
&& ty1 >= -COGL_FIXED_1
&& ty2 <= COGL_FIXED_1)
{
_cogl_texture_quad_hw (tex, x1,y1, x2,y2, tx1,ty1, tx2,ty2);
}
else
{
_cogl_texture_quad_sw (tex, x1,y1, x2,y2, tx1,ty1, tx2,ty2);
}
}
} }
void void