radeon: add texture helper function

This commit is contained in:
Maciej Cencora 2010-01-09 20:36:47 +01:00
parent 8014b5f068
commit b078a613be
2 changed files with 29 additions and 0 deletions

View file

@ -81,6 +81,32 @@ static unsigned get_compressed_image_size(
return rowStride * ((height + blockHeight - 1) / blockHeight);
}
static unsigned is_pot(unsigned value)
{
unsigned m;
for (m = 1; m < value; m *= 2) {}
return value == m;
}
unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width)
{
if (_mesa_is_format_compressed(format)) {
return get_aligned_compressed_row_stride(format, width, rmesa->texture_compressed_row_align);
} else {
unsigned row_align;
if (is_pot(width)) {
row_align = rmesa->texture_row_align - 1;
} else {
row_align = rmesa->texture_rect_row_align - 1;
}
return (_mesa_format_row_stride(format, width) + row_align) & ~row_align;
}
}
/**
* Compute sizes and fill in offset and blit information for the given
* image (determined by \p face and \p level).

View file

@ -89,4 +89,7 @@ void radeon_try_alloc_miptree(radeonContextPtr rmesa, radeonTexObj *t);
GLuint radeon_miptree_image_offset(radeon_mipmap_tree *mt,
GLuint face, GLuint level);
uint32_t get_base_teximage_offset(radeonTexObj *texObj);
unsigned get_texture_image_row_stride(radeonContextPtr rmesa, gl_format format, unsigned width);
#endif /* __RADEON_MIPMAP_TREE_H_ */