Commit e0d72814 authored by Marek Olšák's avatar Marek Olšák

r300g: set the minimum texture stride to 64 bytes on RS600, RS690, and RS740

I hope I've done it right. No way to test it here...
parent 88008dfa
......@@ -696,7 +696,7 @@ static boolean r300_texture_macro_switch(struct r300_texture *tex,
unsigned r300_texture_get_stride(struct r300_screen* screen,
struct r300_texture* tex, unsigned level)
{
unsigned tile_width, width;
unsigned tile_width, width, stride;
if (tex->stride_override)
return tex->stride_override;
......@@ -715,7 +715,19 @@ unsigned r300_texture_get_stride(struct r300_screen* screen,
tex->mip_macrotile[level]);
width = align(width, tile_width);
return util_format_get_stride(tex->b.b.format, width);
stride = util_format_get_stride(tex->b.b.format, width);
/* Some IGPs need a minimum stride of 64 bytes, hmm...
* This doesn't seem to apply to tiled textures, according to r300c. */
if (!tex->microtile && !tex->mip_macrotile[level] &&
(screen->caps.family == CHIP_FAMILY_RS600 ||
screen->caps.family == CHIP_FAMILY_RS690 ||
screen->caps.family == CHIP_FAMILY_RS740)) {
return stride < 64 ? 64 : stride;
}
/* The alignment to 32 bytes is sort of implied by the layout... */
return stride;
} else {
return align(util_format_get_stride(tex->b.b.format, width), 32);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment